[ARVADOS] created: 1.1.2-7-gb0bf77a

Git user git at public.curoverse.com
Fri Dec 22 09:46:33 EST 2017


        at  b0bf77a0d1013bd08237f50536eeaba9eb01915b (commit)


commit b0bf77a0d1013bd08237f50536eeaba9eb01915b
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date:   Fri Dec 22 09:45:58 2017 -0500

    12868: arvados-client get [-format=yaml] uuid
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>

diff --git a/cmd/arvados-client/.gitignore b/cmd/arvados-client/.gitignore
new file mode 100644
index 0000000..21dd863
--- /dev/null
+++ b/cmd/arvados-client/.gitignore
@@ -0,0 +1 @@
+arvados-*
diff --git a/cmd/arvados-client/cmd.go b/cmd/arvados-client/cmd.go
new file mode 100644
index 0000000..52507a1
--- /dev/null
+++ b/cmd/arvados-client/cmd.go
@@ -0,0 +1,32 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+package main
+
+import (
+	"fmt"
+	"os"
+	"runtime"
+
+	"git.curoverse.com/arvados.git/lib/cli"
+	"git.curoverse.com/arvados.git/lib/cmd"
+)
+
+var version = "dev"
+
+var Run = cmd.Multi(map[string]cmd.RunFunc{
+	"get":       cli.Get,
+	"version":   cmdVersion,
+	"-version":  cmdVersion,
+	"--version": cmdVersion,
+})
+
+func cmdVersion(string, []string) int {
+	fmt.Printf("%s %s (%s)\n", os.Args[0], version, runtime.Version())
+	return 0
+}
+
+func main() {
+	os.Exit(Run(os.Args[0], os.Args[1:]))
+}
diff --git a/lib/cli/get.go b/lib/cli/get.go
new file mode 100644
index 0000000..2f54f6c
--- /dev/null
+++ b/lib/cli/get.go
@@ -0,0 +1,65 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+package cli
+
+import (
+	"encoding/json"
+	"flag"
+	"fmt"
+	"os"
+
+	"git.curoverse.com/arvados.git/sdk/go/arvados"
+	"github.com/ghodss/yaml"
+)
+
+func Get(prog string, args []string) int {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Fprintf(os.Stderr, "%s\n", err)
+		}
+	}()
+
+	flags := flag.NewFlagSet(prog, flag.ContinueOnError)
+	format := flags.String("format", "json", "output format (json or yaml)")
+	err = flags.Parse(args)
+	if err != nil {
+		return 2
+	}
+	if len(flags.Args()) != 1 {
+		flags.Usage()
+		return 2
+	}
+
+	id := flags.Args()[0]
+	client := arvados.NewClientFromEnv()
+	path, err := client.PathForUUID("show", id)
+	if err != nil {
+		return 1
+	}
+
+	var obj map[string]interface{}
+	err = client.RequestAndDecode(&obj, "GET", path, nil, nil)
+	if err != nil {
+		err = fmt.Errorf("GET %s: %s", path, err)
+		return 1
+	}
+	if *format == "yaml" {
+		var buf []byte
+		buf, err = yaml.Marshal(obj)
+		if err == nil {
+			_, err = os.Stdout.Write(buf)
+		}
+	} else {
+		enc := json.NewEncoder(os.Stdout)
+		enc.SetIndent("", "  ")
+		err = enc.Encode(obj)
+	}
+	if err != nil {
+		err = fmt.Errorf("encoding: %s", err)
+		return 1
+	}
+	return 0
+}
diff --git a/lib/cmd/cmd.go b/lib/cmd/cmd.go
new file mode 100644
index 0000000..9e86324
--- /dev/null
+++ b/lib/cmd/cmd.go
@@ -0,0 +1,43 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+// package cmd defines a RunFunc type, representing a process that can
+// be invoked from a command line.
+package cmd
+
+import "log"
+
+// A RunFunc runs a command with the given args, and returns an exit
+// code.
+type RunFunc func(prog string, args []string) int
+
+// Multi returns a command that looks up its first argument in m, and
+// runs the resulting RunFunc with the remaining args.
+//
+// Example:
+//
+//     os.Exit(Multi(map[string]RunFunc{
+//             "foobar": func(prog string, args []string) int {
+//                     fmt.Println(args[0])
+//                     return 2
+//             },
+//     })("/usr/bin/multi", []string{"foobar", "baz"}))
+//
+// ...prints "baz" and exits 2.
+func Multi(m map[string]RunFunc) RunFunc {
+	return func(prog string, args []string) int {
+		if len(args) < 1 {
+			log.Printf("usage: %s command [args]", prog)
+			return 2
+		}
+		prog = args[0]
+		args = args[1:]
+		if cmd, ok := m[prog]; !ok {
+			log.Printf("unrecognized command %q", prog)
+			return 2
+		} else {
+			return cmd(prog, args)
+		}
+	}
+}

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list