diff options
author | Jakob Unterwurzacher | 2016-10-09 20:55:33 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2016-10-09 20:55:33 +0200 |
commit | 9f0793ab0f7f73f8829cb86d6a645fd01eaa6849 (patch) | |
tree | abb0563914196138f40acad7a19e9d0f1fe77cce /cli_args.go | |
parent | b70d2ffd94805c139971ece3cd372dafea5c95f3 (diff) |
main: more useful error message on unknown flag
Diffstat (limited to 'cli_args.go')
-rw-r--r-- | cli_args.go | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/cli_args.go b/cli_args.go index 2d5ad7e..9ba5496 100644 --- a/cli_args.go +++ b/cli_args.go @@ -2,6 +2,7 @@ package main import ( "flag" + "fmt" "os" "strconv" "strings" @@ -57,7 +58,7 @@ func parseCliOpts() (args argContainer) { var err error var opensslAuto string - flagSet = flag.NewFlagSet(tlog.ProgramName, flag.ExitOnError) + flagSet = flag.NewFlagSet(tlog.ProgramName, flag.ContinueOnError) flagSet.Usage = usageText flagSet.BoolVar(&args.debug, "d", false, "") flagSet.BoolVar(&args.debug, "debug", false, "Enable debug output") @@ -99,7 +100,12 @@ func parseCliOpts() (args argContainer) { flagSet.BoolVar(&ignoredBool, "nosuid", false, ignoreText) flagSet.BoolVar(&ignoredBool, "nodev", false, ignoreText) // Actual parsing - flagSet.Parse(os.Args[1:]) + err = flagSet.Parse(os.Args[1:]) + if err != nil { + tlog.Warn.Printf("You passed: %s", prettyArgs()) + tlog.Fatal.Printf("%v", err) + os.Exit(2) + } // "-openssl" needs some post-processing if opensslAuto == "auto" { @@ -117,3 +123,11 @@ func parseCliOpts() (args argContainer) { } return args } + +// prettyArgs pretty-prints the command-line arguments. +func prettyArgs() string { + pa := fmt.Sprintf("%q", os.Args[1:]) + // Get rid of "[" and "]" + pa = pa[1 : len(pa)-1] + return pa +} |