X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/51bb28e3e62563fa0921f003b8d11ce8740f3a68..c8828ded72f562811dfe29ca20809dd5641f7a1d:/lib/cli/get.go diff --git a/lib/cli/get.go b/lib/cli/get.go index baa1df73e7..9625214e22 100644 --- a/lib/cli/get.go +++ b/lib/cli/get.go @@ -6,16 +6,19 @@ package cli import ( "encoding/json" - "flag" "fmt" "io" - "git.curoverse.com/arvados.git/sdk/go/arvados" + "git.arvados.org/arvados.git/lib/cmd" + "git.arvados.org/arvados.git/sdk/go/arvados" "github.com/ghodss/yaml" - "rsc.io/getopt" ) -func Get(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { +var Get cmd.Handler = getCmd{} + +type getCmd struct{} + +func (getCmd) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { var err error defer func() { if err != nil { @@ -23,27 +26,19 @@ func Get(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) } }() - flags := getopt.NewFlagSet(prog, flag.ContinueOnError) + flags, opts := LegacyFlagSet() flags.SetOutput(stderr) - - format := flags.String("format", "json", "output format (json, yaml, or uuid)") - flags.Alias("f", "format") - short := flags.Bool("short", false, "equivalent to --format=uuid") - flags.Alias("s", "short") - flags.Bool("dry-run", false, "dry run (ignored, for compatibility)") - flags.Alias("n", "dry-run") - flags.Bool("verbose", false, "verbose (ignored, for compatibility)") - flags.Alias("v", "verbose") err = flags.Parse(args) if err != nil { return 2 } if len(flags.Args()) != 1 { - flags.Usage() + fmt.Fprintf(stderr, "usage of %s:\n", prog) + flags.PrintDefaults() return 2 } - if *short { - *format = "uuid" + if opts.Short { + opts.Format = "uuid" } id := flags.Args()[0] @@ -59,13 +54,13 @@ func Get(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) err = fmt.Errorf("GET %s: %s", path, err) return 1 } - if *format == "yaml" { + if opts.Format == "yaml" { var buf []byte buf, err = yaml.Marshal(obj) if err == nil { _, err = stdout.Write(buf) } - } else if *format == "uuid" { + } else if opts.Format == "uuid" { fmt.Fprintln(stdout, obj["uuid"]) } else { enc := json.NewEncoder(stdout)