X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8e2ad737e429bc263620859468da3835708258e2..de4d6a927c41f417790fe4274eb56df4d487a8a4:/sdk/cli/bin/arv diff --git a/sdk/cli/bin/arv b/sdk/cli/bin/arv index 252d267c4e..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 @@ -85,14 +86,14 @@ def init_config end -subcommands = %w(copy create edit keep pipeline run tag view ws) +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 @@ -101,8 +102,8 @@ def check_subcommands client, arvados, subcommand, global_opts, remaining_opts arv_create client, arvados, global_opts, remaining_opts when 'edit' arv_edit client, arvados, global_opts, remaining_opts - when 'view' - arv_view client, arvados, global_opts, remaining_opts + when 'get' + arv_get client, arvados, global_opts, remaining_opts when 'copy', 'tag', 'ws', 'run' exec_bin "arv-#{subcommand}", remaining_opts when 'keep' @@ -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,22 +334,22 @@ 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 exit 0 end -def arv_view client, arvados, global_opts, remaining_opts +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 view [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