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"
18 func Get(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
22 fmt.Fprintf(stderr, "%s\n", err)
26 flags := getopt.NewFlagSet(prog, flag.ContinueOnError)
27 flags.SetOutput(stderr)
29 format := flags.String("format", "json", "output format (json, yaml, or uuid)")
30 flags.Alias("f", "format")
31 short := flags.Bool("short", false, "equivalent to --format=uuid")
32 flags.Alias("s", "short")
33 flags.Bool("dry-run", false, "dry run (ignored, for compatibility)")
34 flags.Alias("n", "dry-run")
35 flags.Bool("verbose", false, "verbose (ignored, for compatibility)")
36 flags.Alias("v", "verbose")
37 err = flags.Parse(args)
41 if len(flags.Args()) != 1 {
50 client := arvados.NewClientFromEnv()
51 path, err := client.PathForUUID("show", id)
56 var obj map[string]interface{}
57 err = client.RequestAndDecode(&obj, "GET", path, nil, nil)
59 err = fmt.Errorf("GET %s: %s", path, err)
62 if *format == "yaml" {
64 buf, err = yaml.Marshal(obj)
66 _, err = stdout.Write(buf)
68 } else if *format == "uuid" {
69 fmt.Fprintln(stdout, obj["uuid"])
71 enc := json.NewEncoder(stdout)
72 enc.SetIndent("", " ")
76 err = fmt.Errorf("encoding: %s", err)