fix: fixed help menu padding

This commit is contained in:
evilsocket 2018-02-23 02:21:06 +01:00
commit 3c400d2905
2 changed files with 45 additions and 29 deletions

View file

@ -48,7 +48,6 @@ type Session struct {
CoreHandlers []CommandHandler `json:"-"` CoreHandlers []CommandHandler `json:"-"`
Modules []Module `json:"-"` Modules []Module `json:"-"`
HelpPadding int `json:"-"`
Events *EventPool `json:"-"` Events *EventPool `json:"-"`
} }
@ -128,9 +127,7 @@ func New() (*Session, error) {
CoreHandlers: make([]CommandHandler, 0), CoreHandlers: make([]CommandHandler, 0),
Modules: make([]Module, 0), Modules: make([]Module, 0),
HelpPadding: 0, Events: nil,
Events: nil,
} }
if s.Options, err = core.ParseOptions(); err != nil { if s.Options, err = core.ParseOptions(); err != nil {
@ -269,19 +266,6 @@ func (s *Session) Close() {
func (s *Session) Register(mod Module) error { func (s *Session) Register(mod Module) error {
s.Modules = append(s.Modules, mod) s.Modules = append(s.Modules, mod)
for _, h := range mod.Handlers() {
if len(h.Name) > s.HelpPadding {
s.HelpPadding = len(h.Name)
}
}
for _, p := range mod.Parameters() {
if len(p.Name) > s.HelpPadding {
s.HelpPadding = len(p.Name)
}
}
return nil return nil
} }

View file

@ -21,12 +21,30 @@ func (s *Session) helpHandler(args []string, sess *Session) error {
if filter == "" { if filter == "" {
fmt.Println() fmt.Println()
fmt.Printf(core.Bold("MAIN COMMANDS\n\n"))
maxLen := 0
for _, h := range s.CoreHandlers { for _, h := range s.CoreHandlers {
fmt.Printf(" "+core.Yellow("%"+strconv.Itoa(s.HelpPadding)+"s")+" : %s\n", h.Name, h.Description) len := len(h.Name)
if len > maxLen {
maxLen = len
}
}
pad := "%" + strconv.Itoa(maxLen) + "s"
for _, h := range s.CoreHandlers {
fmt.Printf(" "+core.Yellow(pad)+" : %s\n", h.Name, h.Description)
} }
fmt.Printf(core.Bold("\nMODULES\n")) fmt.Printf(core.Bold("\nModules\n\n"))
maxLen = 0
for _, m := range s.Modules {
len := len(m.Name())
if len > maxLen {
maxLen = len
}
}
pad = "%" + strconv.Itoa(maxLen) + "s"
for _, m := range s.Modules { for _, m := range s.Modules {
status := "" status := ""
@ -35,7 +53,7 @@ func (s *Session) helpHandler(args []string, sess *Session) error {
} else { } else {
status = core.Red("not running") status = core.Red("not running")
} }
fmt.Printf(" "+core.Yellow("%"+strconv.Itoa(s.HelpPadding)+"s")+" > %s\n", m.Name(), status) fmt.Printf(" "+core.Yellow(pad)+" > %s\n", m.Name(), status)
} }
fmt.Println() fmt.Println()
@ -54,15 +72,33 @@ func (s *Session) helpHandler(args []string, sess *Session) error {
status = core.Red("not running") status = core.Red("not running")
} }
fmt.Printf("%s (%s): %s\n\n", core.Yellow(m.Name()), status, core.Dim(m.Description())) fmt.Printf("%s (%s): %s\n\n", core.Yellow(m.Name()), status, core.Dim(m.Description()))
for _, h := range m.Handlers() {
fmt.Printf(h.Help(s.HelpPadding)) maxLen := 0
handlers := m.Handlers()
for _, h := range handlers {
len := len(h.Name)
if len > maxLen {
maxLen = len
}
}
for _, h := range handlers {
fmt.Printf(h.Help(maxLen))
} }
params := m.Parameters() params := m.Parameters()
if len(params) > 0 { if len(params) > 0 {
fmt.Printf("\n Parameters\n\n") fmt.Printf("\n Parameters\n\n")
maxLen := 0
for _, h := range params {
len := len(h.Name)
if len > maxLen {
maxLen = len
}
}
for _, p := range params { for _, p := range params {
fmt.Printf(p.Help(s.HelpPadding)) fmt.Printf(p.Help(maxLen))
} }
fmt.Println() fmt.Println()
} }
@ -83,8 +119,7 @@ func (s *Session) activeHandler(args []string, sess *Session) error {
fmt.Println() fmt.Println()
for _, p := range params { for _, p := range params {
_, val := s.Env.Get(p.Name) _, val := s.Env.Get(p.Name)
fmt.Printf(" "+core.YELLOW+"%"+strconv.Itoa(s.HelpPadding)+"s"+core.RESET+ fmt.Printf(" %s : %s\n", core.Yellow(p.Name), val)
" : %s\n", p.Name, val)
} }
} }
@ -196,9 +231,6 @@ func (s *Session) aliasHandler(args []string, sess *Session) error {
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) { func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
h.Completer = c h.Completer = c
s.CoreHandlers = append(s.CoreHandlers, h) s.CoreHandlers = append(s.CoreHandlers, h)
if len(h.Name) > s.HelpPadding {
s.HelpPadding = len(h.Name)
}
} }
func (s *Session) registerCoreHandlers() { func (s *Session) registerCoreHandlers() {