import (
"encoding/json"
- "flag"
"fmt"
"io"
+ "git.curoverse.com/arvados.git/lib/cmd"
"git.curoverse.com/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 {
}
}()
- 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]
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)