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() }