16306: Merge branch 'master'
[arvados.git] / cmd / arvados-client / cmd.go
index b96cce368bc4d8b9860a476485beee378c6f9197..47fcd5ad7dc88275c5c9ce47369f3432ac861632 100644 (file)
@@ -5,32 +5,66 @@
 package main
 
 import (
-       "fmt"
-       "io"
        "os"
-       "regexp"
-       "runtime"
 
-       "git.curoverse.com/arvados.git/lib/cli"
-       "git.curoverse.com/arvados.git/lib/cmd"
+       "git.arvados.org/arvados.git/lib/cli"
+       "git.arvados.org/arvados.git/lib/cmd"
+       "git.arvados.org/arvados.git/lib/costanalyzer"
+       "git.arvados.org/arvados.git/lib/deduplicationreport"
+       "git.arvados.org/arvados.git/lib/mount"
 )
 
-var version = "dev"
+var (
+       handler = cmd.Multi(map[string]cmd.Handler{
+               "-e":        cmd.Version,
+               "version":   cmd.Version,
+               "-version":  cmd.Version,
+               "--version": cmd.Version,
 
-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"})
+               "copy":   cli.Copy,
+               "create": cli.Create,
+               "edit":   cli.Edit,
+               "get":    cli.Get,
+               "keep":   cli.Keep,
+               "tag":    cli.Tag,
+               "ws":     cli.Ws,
 
-func cmdVersion(prog string, args []string, _ io.Reader, stdout, _ io.Writer) int {
-       prog = regexp.MustCompile(` -*version$`).ReplaceAllLiteralString(prog, "")
-       fmt.Fprintf(stdout, "%s %s (%s)\n", prog, version, runtime.Version())
-       return 0
+               "api_client_authorization": cli.APICall,
+               "api_client":               cli.APICall,
+               "authorized_key":           cli.APICall,
+               "collection":               cli.APICall,
+               "container":                cli.APICall,
+               "container_request":        cli.APICall,
+               "group":                    cli.APICall,
+               "human":                    cli.APICall,
+               "job":                      cli.APICall,
+               "job_task":                 cli.APICall,
+               "keep_disk":                cli.APICall,
+               "keep_service":             cli.APICall,
+               "link":                     cli.APICall,
+               "log":                      cli.APICall,
+               "node":                     cli.APICall,
+               "pipeline_instance":        cli.APICall,
+               "pipeline_template":        cli.APICall,
+               "repository":               cli.APICall,
+               "specimen":                 cli.APICall,
+               "trait":                    cli.APICall,
+               "user_agreement":           cli.APICall,
+               "user":                     cli.APICall,
+               "virtual_machine":          cli.APICall,
+               "workflow":                 cli.APICall,
+
+               "mount":                mount.Command,
+               "deduplication-report": deduplicationreport.Command,
+               "costanalyzer":         costanalyzer.Command,
+       })
+)
+
+func fixLegacyArgs(args []string) []string {
+       flags, _ := cli.LegacyFlagSet()
+       return cmd.SubcommandToFront(args, flags)
 }
 
 func main() {
-       os.Exit(Run(os.Args[0], os.Args[1:], os.Stdin, os.Stdout, os.Stderr))
+       os.Exit(handler.RunCommand(os.Args[0], fixLegacyArgs(os.Args[1:]), os.Stdin, os.Stdout, os.Stderr))
 }