1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: Apache-2.0
13 "git.curoverse.com/arvados.git/sdk/go/arvados"
14 "github.com/ghodss/yaml"
17 func Get(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
21 fmt.Fprintf(stderr, "%s\n", err)
25 flags := flag.NewFlagSet(prog, flag.ContinueOnError)
26 flags.SetOutput(stderr)
28 format := flags.String("format", "json", "output format (json, yaml, or uuid)")
29 flags.StringVar(format, "f", "json", "output format (json, yaml, or uuid)")
30 short := flags.Bool("short", false, "equivalent to --format=uuid")
31 flags.BoolVar(short, "s", false, "equivalent to --format=uuid")
32 flags.Bool("dry-run", false, "dry run (ignored, for compatibility)")
33 flags.Bool("n", false, "dry run (ignored, for compatibility)")
34 flags.Bool("verbose", false, "verbose (ignored, for compatibility)")
35 flags.Bool("v", false, "verbose (ignored, for compatibility)")
36 err = flags.Parse(args)
40 if len(flags.Args()) != 1 {
49 client := arvados.NewClientFromEnv()
50 path, err := client.PathForUUID("show", id)
55 var obj map[string]interface{}
56 err = client.RequestAndDecode(&obj, "GET", path, nil, nil)
58 err = fmt.Errorf("GET %s: %s", path, err)
61 if *format == "yaml" {
63 buf, err = yaml.Marshal(obj)
65 _, err = stdout.Write(buf)
67 } else if *format == "uuid" {
68 fmt.Fprintln(stdout, obj["uuid"])
70 enc := json.NewEncoder(stdout)
71 enc.SetIndent("", " ")
75 err = fmt.Errorf("encoding: %s", err)