X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/89e2ddbacad459856fc15f56bfa2b5c036b090a1..d03f44d2d2c93841a50cbfca1a74600bc504b593:/sdk/cli/bin/arv diff --git a/sdk/cli/bin/arv b/sdk/cli/bin/arv index f70f4d0eaa..185a5b0673 100755 --- a/sdk/cli/bin/arv +++ b/sdk/cli/bin/arv @@ -5,6 +5,7 @@ # Ward Vandewege require 'fileutils' +require 'shellwords' if RUBY_VERSION < '1.9.3' then abort <<-EOS @@ -88,11 +89,11 @@ end subcommands = %w(copy create edit get keep pipeline run tag ws) def exec_bin bin, opts - @bin_path = `which #{bin}`.strip - if @bin_path.empty? + bin_path = `which #{bin.shellescape}`.strip + if bin_path.empty? raise "#{bin}: command not found" end - exec @bin_path, *opts + exec bin_path, *opts end def check_subcommands client, arvados, subcommand, global_opts, remaining_opts @@ -110,15 +111,12 @@ def check_subcommands client, arvados, subcommand, global_opts, remaining_opts if ['get', 'put', 'ls', 'normalize'].index @sub then # Native Arvados exec_bin "arv-#{@sub}", remaining_opts - elsif ['less', 'check'].index @sub then - # wh* shims - exec_bin "wh#{@sub}", remaining_opts elsif @sub == 'docker' exec_bin "arv-keepdocker", remaining_opts else puts "Usage: arv keep [method] [--parameters]\n" puts "Use 'arv keep [method] --help' to get more information about specific methods.\n\n" - puts "Available methods: ls, get, put, less, check, docker" + puts "Available methods: ls, get, put, docker" end abort when 'pipeline' @@ -185,6 +183,8 @@ def edit_and_commit_object initial_obj, tmp_stem, global_opts, &block Oj.load(newcontent) when 'yaml' YAML.load(newcontent) + else + abort "Unrecognized format #{global_opts[:format]}" end yield newobj @@ -320,11 +320,6 @@ def arv_edit client, arvados, global_opts, remaining_opts exit 255 end - if not $stdout.tty? - puts "Not connected to a TTY, cannot run interactive editor." - exit 1 - end - rsc = lookup_uuid_rsc arvados, uuid oldobj = fetch_rsc_obj client, arvados, rsc, uuid, remaining_opts @@ -339,9 +334,9 @@ def arv_edit client, arvados, global_opts, remaining_opts authorization: 'OAuth2 '+ENV['ARVADOS_API_TOKEN'] }) results = check_response result - puts "Updated object #{results['uuid']}" + STDERR.puts "Updated object #{results['uuid']}" else - puts "Object is unchanged, did not update." + STDERR.puts "Object is unchanged, did not update." end end @@ -352,9 +347,9 @@ def arv_get client, arvados, global_opts, remaining_opts uuid = remaining_opts.shift if uuid.nil? or uuid == "-h" or uuid == "--help" puts head_banner - puts "Usage: arv get [uuid] [fields...]\n\n" - puts "Fetch the specified Arvados object, select the specified fields, \n" - puts "and print a text representation (json or yaml, use --format).\n" + puts "Usage: arv [--format json|yaml] get [uuid] [fields...]\n\n" + puts "Fetch the specified Arvados object, select the specified fields,\n" + puts "and print a text representation.\n" exit 255 end