8815: Crunch-job bind mounts crunchrunner binary and certificates from host.
[arvados.git] / sdk / cli / bin / arv
index 252d267c4e4319f3c20dc87f334bf2af402ba1a9..185a5b0673f1dc1c5afc5ed6530386d8255daaf4 100755 (executable)
@@ -5,6 +5,7 @@
 # Ward Vandewege <ward@curoverse.com>
 
 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