github.com/nathants/docker-trace@v0.0.0-20220831131939-668bc05a257b/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "sort" 7 "strings" 8 9 _ "github.com/nathants/docker-trace/cmd" 10 "github.com/nathants/docker-trace/lib" 11 ) 12 13 func usage() { 14 var fns []string 15 maxLen := 0 16 for fn := range lib.Commands { 17 fns = append(fns, fn) 18 maxLen = lib.Max(maxLen, len(fn)) 19 } 20 sort.Strings(fns) 21 fmtStr := "%-" + fmt.Sprint(maxLen) + "s - %s\n" 22 for _, fn := range fns { 23 fmt.Printf(fmtStr, fn, strings.Trim(lib.Args[fn].Description(), "\n")) 24 } 25 } 26 27 func main() { 28 if len(os.Args) < 2 || os.Args[1] == "-h" || os.Args[1] == "--help" { 29 usage() 30 os.Exit(1) 31 } 32 cmd := os.Args[1] 33 fn, ok := lib.Commands[cmd] 34 if !ok { 35 usage() 36 os.Exit(1) 37 } 38 var args []string 39 for _, a := range os.Args[1:] { 40 if len(a) > 2 && a[0] == '-' && a[1] != '-' { 41 for _, k := range a[1:] { 42 args = append(args, fmt.Sprintf("-%s", string(k))) 43 } 44 } else { 45 args = append(args, a) 46 } 47 } 48 os.Args = args 49 fn() 50 }