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 ( import (
"flag" "flag"
"fmt"
"os" "os"
"strconv" "strconv"
"strings" "strings"
@ -57,7 +58,7 @@ func parseCliOpts() (args argContainer) {
var err error var err error
var opensslAuto string var opensslAuto string
flagSet = flag.NewFlagSet(tlog.ProgramName, flag.ExitOnError) flagSet = flag.NewFlagSet(tlog.ProgramName, flag.ContinueOnError)
flagSet.Usage = usageText flagSet.Usage = usageText
flagSet.BoolVar(&args.debug, "d", false, "") flagSet.BoolVar(&args.debug, "d", false, "")
flagSet.BoolVar(&args.debug, "debug", false, "Enable debug output") 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, "nosuid", false, ignoreText)
flagSet.BoolVar(&ignoredBool, "nodev", false, ignoreText) flagSet.BoolVar(&ignoredBool, "nodev", false, ignoreText)
// Actual parsing // 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 // "-openssl" needs some post-processing
if opensslAuto == "auto" { if opensslAuto == "auto" {
@ -117,3 +123,11 @@ func parseCliOpts() (args argContainer) {
} }
return args 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. // Default operation: mount.
if flagSet.NArg() != 2 { if flagSet.NArg() != 2 {
prettyArgs := fmt.Sprintf("%q", os.Args[1:]) prettyArgs := prettyArgs()
// Get rid of "[" and "]"
prettyArgs = prettyArgs[1 : len(prettyArgs)-1]
tlog.Info.Printf("Wrong number of arguments (have %d, want 2). You passed: %s", tlog.Info.Printf("Wrong number of arguments (have %d, want 2). You passed: %s",
flagSet.NArg(), prettyArgs) flagSet.NArg(), prettyArgs)
tlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]", tlog.ProgramName) tlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]", tlog.ProgramName)