main: more useful error message on unknown flag

This commit is contained in:
Jakob Unterwurzacher 2016-10-09 20:55:33 +02:00
parent b70d2ffd94
commit 9f0793ab0f
2 changed files with 17 additions and 5 deletions

View File

@ -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
}

View File

@ -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)