17840: Deduplicate flag-parsing code.
[arvados.git] / lib / mount / command.go
index d6d1ae03080bdf10b316646843e2ea84c24968c4..f88d977c4c9bb059e6712fac1c727a71ed22dea7 100644 (file)
@@ -14,15 +14,16 @@ import (
        _ "net/http/pprof"
        "os"
 
+       "git.arvados.org/arvados.git/lib/cmd"
        "git.arvados.org/arvados.git/sdk/go/arvados"
        "git.arvados.org/arvados.git/sdk/go/arvadosclient"
        "git.arvados.org/arvados.git/sdk/go/keepclient"
        "github.com/arvados/cgofuse/fuse"
 )
 
-var Command = &cmd{}
+var Command = &mountCommand{}
 
-type cmd struct {
+type mountCommand struct {
        // ready, if non-nil, will be closed when the mount is
        // initialized.  If ready is non-nil, it RunCommand() should
        // not be called more than once, or when ready is already
@@ -37,17 +38,15 @@ type cmd struct {
 //
 // The "-d" fuse option (and perhaps other features) ignores the
 // stderr argument and prints to os.Stderr instead.
-func (c *cmd) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
+func (c *mountCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
        logger := log.New(stderr, prog+" ", 0)
        flags := flag.NewFlagSet(prog, flag.ContinueOnError)
        ro := flags.Bool("ro", false, "read-only")
        experimental := flags.Bool("experimental", false, "acknowledge this is an experimental command, and should not be used in production (required)")
        blockCache := flags.Int("block-cache", 4, "read cache size (number of 64MiB blocks)")
        pprof := flags.String("pprof", "", "serve Go profile data at `[addr]:port`")
-       err := flags.Parse(args)
-       if err != nil {
-               logger.Print(err)
-               return 2
+       if ok, code := cmd.ParseFlags(flags, prog, args, "[FUSE mount options]", stderr); !ok {
+               return code
        }
        if !*experimental {
                logger.Printf("error: experimental command %q used without --experimental flag", prog)