fix for bare repos
[arvados.git] / services / api / script / crunch-dispatch.rb
index f749f22a77ceef47b6c85833ea9175a804ad565f..ab49aabc298c8186d099cf8bbfb9d5fddeefc46a 100755 (executable)
@@ -11,7 +11,7 @@ $signal = {}
   end
 end
 
-ENV["RAILS_ENV"] = ARGV[0] || "development"
+ENV["RAILS_ENV"] = ARGV[0] || ENV["RAILS_ENV"] || "development"
 
 require File.dirname(__FILE__) + '/../config/boot'
 require File.dirname(__FILE__) + '/../config/environment'
@@ -70,12 +70,18 @@ class Dispatcher
         raise "Unknown crunch_job_wrapper: #{Server::Application.config.crunch_job_wrapper}"
       end
 
+      if Server::Application.config.crunch_job_user
+        cmd_args.unshift("sudo", "-E", "-u",
+                         Server::Application.config.crunch_job_user,
+                         "PERLLIB=#{ENV['PERLLIB']}")
+      end
+
       job_auth = ApiClientAuthorization.
         new(user: User.where('uuid=?', job.modified_by_user).first,
             api_client_id: 0)
       job_auth.save
 
-      cmd_args << 'crunch-job'
+      cmd_args << (ENV['CRUNCH_JOB_BIN'] || `which crunch-job`.strip)
       cmd_args << '--job-api-token'
       cmd_args << job_auth.api_token
       cmd_args << '--job'
@@ -84,10 +90,17 @@ class Dispatcher
       commit = Commit.where(sha1: job.script_version).first
       if commit
         cmd_args << '--git-dir'
-        cmd_args << File.
-          join(Rails.configuration.git_repositories_dir,
-               commit.repository_name,
-               '.git')
+        if File.exists?(File.
+                        join(Rails.configuration.git_repositories_dir,
+                             commit.repository_name + '.git'))
+          cmd_args << File.
+            join(Rails.configuration.git_repositories_dir,
+                 commit.repository_name + '.git')
+        else
+          cmd_args << File.
+            join(Rails.configuration.git_repositories_dir,
+                 commit.repository_name, '.git')
+        end
       end
 
       $stderr.puts "dispatch: #{cmd_args.join ' '}"