var version = "dev"
-var Run = cmd.Multi(map[string]cmd.RunFunc{
+var Run = cmd.WithLateSubcommand(cmd.Multi(map[string]cmd.RunFunc{
"get": cli.Get,
+ "-e": cmdVersion,
"version": cmdVersion,
"-version": cmdVersion,
"--version": cmdVersion,
-})
+}), []string{"f", "format"}, []string{"n", "dry-run", "v", "verbose", "s", "short"})
func cmdVersion(prog string, args []string, _ io.Reader, stdout, _ io.Writer) int {
prog = regexp.MustCompile(` -*version$`).ReplaceAllLiteralString(prog, "")
}()
flags := flag.NewFlagSet(prog, flag.ContinueOnError)
- format := flags.String("format", "json", "output format (json or yaml)")
+ format := flags.String("format", "json", "output format (json, yaml, or uuid)")
+ flags.StringVar(format, "f", "json", "output format (json, yaml, or uuid)")
+ short := flags.Bool("short", false, "equivalent to --format=uuid")
+ flags.BoolVar(short, "s", false, "equivalent to --format=uuid")
+ flags.Bool("dry-run", false, "dry run (ignored, for compatibility)")
+ flags.Bool("n", false, "dry run (ignored, for compatibility)")
+ flags.Bool("verbose", false, "verbose (ignored, for compatibility)")
+ flags.Bool("v", false, "verbose (ignored, for compatibility)")
err = flags.Parse(args)
if err != nil {
return 2
flags.Usage()
return 2
}
+ if *short {
+ *format = "uuid"
+ }
id := flags.Args()[0]
client := arvados.NewClientFromEnv()
if err == nil {
_, err = stdout.Write(buf)
}
+ } else if *format == "uuid" {
+ fmt.Fprintln(stdout, obj["uuid"])
} else {
enc := json.NewEncoder(stdout)
enc.SetIndent("", " ")
--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+package cli
+
+import (
+ "bytes"
+ "regexp"
+ "testing"
+
+ "git.curoverse.com/arvados.git/sdk/go/arvadostest"
+ check "gopkg.in/check.v1"
+)
+
+// Gocheck boilerplate
+func Test(t *testing.T) {
+ check.TestingT(t)
+}
+
+var _ = check.Suite(&GetSuite{})
+
+type GetSuite struct{}
+
+func (s *GetSuite) TestGetCollectionJSON(c *check.C) {
+ stdout := bytes.NewBuffer(nil)
+ stderr := bytes.NewBuffer(nil)
+ exited := Get("arvados-client get", []string{arvadostest.FooCollection}, bytes.NewReader(nil), stdout, stderr)
+ c.Check(stdout.String(), check.Matches, `(?ms){.*"uuid": "`+arvadostest.FooCollection+`".*}\n`)
+ c.Check(stdout.String(), check.Matches, `(?ms){.*"portable_data_hash": "`+regexp.QuoteMeta(arvadostest.FooCollectionPDH)+`".*}\n`)
+ c.Check(stderr.String(), check.Equals, "")
+ c.Check(exited, check.Equals, 0)
+}