X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9c4901c09e0395899b268f9a734514ae7be4f9c9..6943789309488520fddce83d0918e4c3261e779a:/lib/cli/get.go diff --git a/lib/cli/get.go b/lib/cli/get.go index 725c696a4d..9625214e22 100644 --- a/lib/cli/get.go +++ b/lib/cli/get.go @@ -6,15 +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" ) -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 { @@ -22,16 +26,20 @@ func Get(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) } }() - flags := flag.NewFlagSet(prog, flag.ContinueOnError) - format := flags.String("format", "json", "output format (json or yaml)") + flags, opts := LegacyFlagSet() + flags.SetOutput(stderr) 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 opts.Short { + opts.Format = "uuid" + } id := flags.Args()[0] client := arvados.NewClientFromEnv() @@ -46,12 +54,14 @@ 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 opts.Format == "uuid" { + fmt.Fprintln(stdout, obj["uuid"]) } else { enc := json.NewEncoder(stdout) enc.SetIndent("", " ")