17840: Deduplicate flag-parsing code.
[arvados.git] / services / crunch-dispatch-slurm / crunch-dispatch-slurm.go
index 02493bf4fb451450e5c684ebab48af7f4676b46e..ff1077fae63ace1703e8c66ad95e54bb32d5a49a 100644 (file)
@@ -17,6 +17,7 @@ import (
        "strings"
        "time"
 
+       "git.arvados.org/arvados.git/lib/cmd"
        "git.arvados.org/arvados.git/lib/config"
        "git.arvados.org/arvados.git/lib/dispatchcloud"
        "git.arvados.org/arvados.git/sdk/go/arvados"
@@ -76,7 +77,7 @@ func (disp *Dispatcher) configure(prog string, args []string) error {
        if disp.logger == nil {
                disp.logger = logrus.StandardLogger()
        }
-       flags := flag.NewFlagSet(prog, flag.ExitOnError)
+       flags := flag.NewFlagSet(prog, flag.ContinueOnError)
        flags.Usage = func() { usage(flags) }
 
        loader := config.NewLoader(nil, disp.logger)
@@ -92,13 +93,8 @@ func (disp *Dispatcher) configure(prog string, args []string) error {
                "Print version information and exit.")
 
        args = loader.MungeLegacyConfigArgs(disp.logger, args, "-legacy-crunch-dispatch-slurm-config")
-       err := flags.Parse(args)
-       if err == flag.ErrHelp {
-               return nil
-       } else if err != nil {
-               return err
-       } else if flags.NArg() != 0 {
-               return fmt.Errorf("unrecognized command line arguments: %v", flags.Args())
+       if ok, code := cmd.ParseFlags(flags, prog, args, "", os.Stderr); !ok {
+               os.Exit(code)
        }
 
        // Print version information if requested