package main import ( "fmt" "os" "path" ) var mainUsage = []string{ "-C [-q] -p pubkey -x sigfile [file ...]", "-G [-n] [-c comment] -p pubkey -s seckey", "-S [-ez] [-x sigfile] -s seckey -m message", "-V [-eqz] [-p pubkey] [-t keytype] [-x sigfile] -m message", } func usage() { progname := path.Base(os.Args[0]) fmt.Print("Usage:") for _, u := range mainUsage { fmt.Printf("\t%v %v\n", progname, u) } os.Exit(2) } func fail(err error) { fmt.Println(err) os.Exit(1) } var modes = map[string]func([]string) error{ "-C": check, "-G": generate, "-S": sign, "-V": verify, } func main() { if len(os.Args) < 2 { usage() } mode, ok := modes[os.Args[1]] if !ok { usage() } if err := mode(os.Args[2:]); err != nil { fail(err) } }