diff options
-rw-r--r-- | cli_args.go | 18 | ||||
-rw-r--r-- | main.go | 4 |
2 files changed, 17 insertions, 5 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 +} @@ -216,9 +216,7 @@ func main() { } // Default operation: mount. if flagSet.NArg() != 2 { - prettyArgs := fmt.Sprintf("%q", os.Args[1:]) - // Get rid of "[" and "]" - prettyArgs = prettyArgs[1 : len(prettyArgs)-1] + prettyArgs := prettyArgs() tlog.Info.Printf("Wrong number of arguments (have %d, want 2). You passed: %s", flagSet.NArg(), prettyArgs) tlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]", tlog.ProgramName) |