X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ba15fa5da21f4bafd3f90a8d259ea2aae764c77e..f159610ed02196b33fa30e1c3bba45fa947d48a9:/lib/cli/external.go diff --git a/lib/cli/external.go b/lib/cli/external.go index 35933f99fc..54dfd9a91f 100644 --- a/lib/cli/external.go +++ b/lib/cli/external.go @@ -12,7 +12,7 @@ import ( "strings" "syscall" - "git.curoverse.com/arvados.git/lib/cmd" + "git.arvados.org/arvados.git/lib/cmd" ) var ( @@ -22,7 +22,6 @@ var ( Copy = externalCmd{"arv-copy"} Tag = externalCmd{"arv-tag"} Ws = externalCmd{"arv-ws"} - Run = externalCmd{"arv-run"} Keep = cmd.Multi(map[string]cmd.Handler{ "get": externalCmd{"arv-get"}, @@ -31,9 +30,6 @@ var ( "normalize": externalCmd{"arv-normalize"}, "docker": externalCmd{"arv-keepdocker"}, }) - Pipeline = cmd.Multi(map[string]cmd.Handler{ - "run": externalCmd{"arv-run-pipeline-instance"}, - }) // user, group, container, specimen, etc. APICall = apiCallCmd{} ) @@ -61,7 +57,7 @@ func (cmd apiCallCmd) RunCommand(prog string, args []string, stdin io.Reader, st return 2 } model := split[len(split)-1] - return externalCmd{"arv"}.RunCommand("arv", legacyFlagsToFront(model, args), stdin, stdout, stderr) + return rubyArvCmd{model}.RunCommand(prog, args, stdin, stdout, stderr) } type rubyArvCmd struct { @@ -69,7 +65,18 @@ type rubyArvCmd struct { } func (rc rubyArvCmd) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { - return externalCmd{"arv"}.RunCommand("arv", legacyFlagsToFront(rc.subcommand, args), stdin, stdout, stderr) + wrapprog := "arv-ruby" + if _, err := exec.LookPath(wrapprog); err != nil && !strings.Contains(prog, "arv ") { + // arv-ruby isn't in PATH (i.e., installation method + // wasn't a recent "arvados-server install", which + // symlinks /usr/bin/arv-ruby -> + // /var/lib/arvados/bin/arv), so fall back to looking + // for the arvados-cli program as "arv". (But don't do + // this if we are being run as "arv" -- that would + // probably cause a recursive fork bomb.) + wrapprog = "arv" + } + return externalCmd{wrapprog}.RunCommand(wrapprog, legacyFlagsToFront(rc.subcommand, args), stdin, stdout, stderr) } type externalCmd struct { @@ -94,7 +101,7 @@ func (ec externalCmd) RunCommand(prog string, args []string, stdin io.Reader, st return 1 case *exec.Error: fmt.Fprintln(stderr, err) - if ec.prog == "arv" || ec.prog == "arv-run-pipeline-instance" { + if ec.prog == "arv" || ec.prog == "arv-ruby" { fmt.Fprint(stderr, rubyInstallHints) } else if strings.HasPrefix(ec.prog, "arv-") { fmt.Fprint(stderr, pythonInstallHints) @@ -117,7 +124,7 @@ https://doc.arvados.org/install for more details. Note: This subcommand uses the "arvados" Python module. If that is not installed, try: * "pip install arvados" (either as root or in a virtualenv), or -* "sudo apt-get install python-arvados-python-client", or +* "sudo apt-get install python3-arvados-python-client", or * see https://doc.arvados.org/install for more details. `