46 lines
892 B
Go
46 lines
892 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"nshell/executor"
|
|
"nshell/suggestions"
|
|
|
|
"github.com/c-bata/go-prompt"
|
|
"golang.org/x/term"
|
|
)
|
|
|
|
var oldStateTerminal *term.State
|
|
|
|
func getColor(color string) prompt.Color {
|
|
color = strings.ToUpper(color)
|
|
switch color {
|
|
case "CYAN":
|
|
return prompt.Cyan
|
|
case "RED":
|
|
return prompt.Red
|
|
default:
|
|
return prompt.Green
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
fd := int(os.Stdin.Fd())
|
|
if state, err := term.GetState(fd); err == nil {
|
|
oldStateTerminal = state
|
|
}
|
|
fmt.Println("Wellcome to noko-shell(nshell) :3")
|
|
|
|
options := []prompt.Option{
|
|
prompt.OptionLivePrefix(func() (string, bool) {
|
|
return executor.GetVariable("NSHELL_PREFIX_TEXT"), true
|
|
}),
|
|
prompt.OptionPrefixTextColor(getColor(executor.GetVariable("NSHELL_PREFIX_COLOR"))),
|
|
}
|
|
|
|
p := prompt.New(executor.BuildExecutor(oldStateTerminal, &fd), suggestions.Completer, options...)
|
|
p.Run()
|
|
}
|