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  }