summaryrefslogtreecommitdiff
path: root/cli_args.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-10-09 20:55:33 +0200
committerJakob Unterwurzacher2016-10-09 20:55:33 +0200
commit9f0793ab0f7f73f8829cb86d6a645fd01eaa6849 (patch)
treeabb0563914196138f40acad7a19e9d0f1fe77cce /cli_args.go
parentb70d2ffd94805c139971ece3cd372dafea5c95f3 (diff)
main: more useful error message on unknown flag
Diffstat (limited to 'cli_args.go')
-rw-r--r--cli_args.go18
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
+}