github.com/oweisse/u-root@v0.0.0-20181109060735-d005ad25fef1/cmds/elvish/edit/prompt/defaults.go (about) 1 package prompt 2 3 import ( 4 "os" 5 "os/user" 6 7 "github.com/u-root/u-root/cmds/elvish/edit/ui" 8 "github.com/u-root/u-root/cmds/elvish/eval" 9 "github.com/u-root/u-root/cmds/elvish/util" 10 ) 11 12 var defaultPrompt, defaultRPrompt, defaultStaleTransform eval.Callable 13 14 func init() { 15 user, err := user.Current() 16 isRoot := err == nil && user.Uid == "0" 17 18 prompt := func(fm *eval.Frame) { 19 out := fm.OutputChan() 20 out <- string(util.Getwd()) 21 if isRoot { 22 out <- &ui.Styled{"# ", ui.Styles{"red"}} 23 } else { 24 out <- &ui.Styled{"> ", ui.Styles{}} 25 } 26 } 27 defaultPrompt = eval.NewBuiltinFn("default prompt", prompt) 28 } 29 30 func init() { 31 username := "???" 32 user, err := user.Current() 33 if err == nil { 34 username = user.Username 35 } 36 hostname, err := os.Hostname() 37 if err != nil { 38 hostname = "???" 39 } 40 rpromptStr := username + "@" + hostname 41 rprompt := func(fm *eval.Frame) { 42 out := fm.OutputChan() 43 out <- &ui.Styled{rpromptStr, ui.Styles{"inverse"}} 44 } 45 defaultRPrompt = eval.NewBuiltinFn("default rprompt", rprompt) 46 } 47 48 func init() { 49 staleTransform := func(fm *eval.Frame) { 50 out := fm.OutputChan() 51 fm.IterateInputs(func(i interface{}) { 52 s := i.(*ui.Styled) 53 out <- &ui.Styled{s.Text, ui.Styles{"inverse"}} 54 }) 55 } 56 defaultStaleTransform = eval.NewBuiltinFn("default stale transform", staleTransform) 57 }