fix: module parameters are now sorted by name when using the 'help module' command

This commit is contained in:
evilsocket 2018-08-17 14:20:04 +02:00
commit 5bf7814cba
No known key found for this signature in database
GPG key ID: 1564D7F30393A456

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"os" "os"
"path/filepath" "path/filepath"
"sort"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -15,13 +16,7 @@ import (
"github.com/bettercap/readline" "github.com/bettercap/readline"
) )
func (s *Session) helpHandler(args []string, sess *Session) error { func (s *Session) generalHelp() {
filter := ""
if len(args) == 2 {
filter = core.Trim(args[1])
}
if filter == "" {
fmt.Println() fmt.Println()
maxLen := 0 maxLen := 0
@ -59,8 +54,9 @@ func (s *Session) helpHandler(args []string, sess *Session) error {
} }
fmt.Println() fmt.Println()
}
} else { func (s *Session) moduleHelp(filter string) error {
err, m := s.Module(filter) err, m := s.Module(filter)
if err != nil { if err != nil {
return err return err
@ -91,20 +87,42 @@ func (s *Session) helpHandler(args []string, sess *Session) error {
params := m.Parameters() params := m.Parameters()
if len(params) > 0 { if len(params) > 0 {
fmt.Print(" Parameters\n\n") v := make([]*ModuleParam, 0)
maxLen := 0 maxLen := 0
for _, h := range params { for _, h := range params {
len := len(h.Name) len := len(h.Name)
if len > maxLen { if len > maxLen {
maxLen = len maxLen = len
} }
v = append(v, h)
} }
for _, p := range params { sort.Slice(v, func(i, j int) bool {
return v[i].Name < v[j].Name
})
fmt.Print(" Parameters\n\n")
for _, p := range v {
fmt.Print(p.Help(maxLen)) fmt.Print(p.Help(maxLen))
} }
fmt.Println() fmt.Println()
} }
return nil
}
func (s *Session) helpHandler(args []string, sess *Session) error {
filter := ""
if len(args) == 2 {
filter = core.Trim(args[1])
}
if filter == "" {
s.generalHelp()
} else {
if err := s.moduleHelp(filter); err != nil {
return err
}
} }
return nil return nil