Merge branch 'master' into wtsi-hgi-8087-arv-cli-request-body-from-file
[arvados.git] / sdk / cli / bin / arv
index 10a9d43961b0e6c630c2320df857650e08c064ac..aa038ac54aec89349ef999ef4cfaa852869e079f 100755 (executable)
@@ -14,24 +14,33 @@ if RUBY_VERSION < '1.9.3' then
 end
 
 begin
-  require 'curb'
-  require 'rubygems'
-  require 'arvados/google_api_client'
   require 'json'
+  require 'net/http'
   require 'pp'
-  require 'trollop'
+  require 'tempfile'
+  require 'yaml'
+rescue LoadError => error
+  abort "Error loading libraries: #{error}\n"
+end
+
+begin
+  require 'rubygems'
+  # Load the gems with more requirements first, so we respect any version
+  # constraints they put on gems loaded later.
+  require 'arvados/google_api_client'
+  require 'active_support/inflector'
   require 'andand'
+  require 'curb'
   require 'oj'
-  require 'active_support/inflector'
-  require 'yaml'
-  require 'tempfile'
-  require 'net/http'
-rescue LoadError
+  require 'trollop'
+rescue LoadError => error
   abort <<-EOS
 
+Error loading gems: #{error}
+
 Please install all required gems:
 
-  gem install activesupport andand curb google-api-client json oj trollop yaml
+  gem install arvados activesupport andand curb json oj trollop
 
   EOS
 end
@@ -570,7 +579,7 @@ def parse_arguments(discovery_document, subcommands)
       end
     end
 
-    discovered_params.each do |k,v|
+    discovered_params.merge({resource => {'type' => 'object'}}).each do |k,v|
       k = k.to_sym
       if ['object', 'array'].index(v["type"]) and method_opts.has_key? k
         if method_opts[k].andand.match /^\//