OSDN Git Service

Gitlab cli for development need at first
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Thu, 30 Aug 2012 05:41:43 +0000 (08:41 +0300)
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Thu, 30 Aug 2012 05:41:43 +0000 (08:41 +0300)
gitlab [new file with mode: 0755]

diff --git a/gitlab b/gitlab
new file mode 100755 (executable)
index 0000000..12cebd8
--- /dev/null
+++ b/gitlab
@@ -0,0 +1,70 @@
+#!/usr/bin/env ruby
+
+class GitlabCli
+  def initialize
+    @path = File.dirname(__FILE__)
+    @command = ARGV.shift
+    @mode = ARGV.shift
+  end
+
+  def execute
+    case @command
+    when 'start' then start
+    when 'stop' then stop
+    else
+      puts "-- Usage gitlab start production or gitlab stop development"
+    end
+  end
+
+  private
+
+  def start
+    case @mode
+    when 'production';
+      system(unicorn_start_cmd)
+    else
+      system(rails_start_cmd)
+    end
+    system(resque_start_cmd)
+  end
+
+  def stop
+    case @mode
+    when 'production';
+      system(unicorn_stop_cmd)
+    else
+      system(rails_stop_cmd)
+    end
+    system(resque_stop_cmd)
+  end
+
+  def rails_start_cmd
+    "bundle exec rails s -d"
+  end
+
+  def rails_stop_cmd
+    pid = File.join(@path, "tmp/pids/server.pid")
+    "kill -QUIT `cat #{pid}`"
+  end
+
+  def unicorn_start_cmd
+    unicorn_conf  = File.join(@path, "config/unicorn.rb")
+    "bundle exec unicorn_rails -c #{unicorn_conf} -E production -D"
+  end
+
+  def unicorn_stop_cmd
+    pid = File.join(@path, "/tmp/pids/unicorn.pid")
+    "kill -QUIT `cat #{pid}`"
+  end
+
+  def resque_start_cmd
+    "./resque.sh > /dev/null 2>&1"
+  end
+
+  def resque_stop_cmd
+    pid = File.join(@path, "tmp/pids/resque_worker.pid")
+    "kill -QUIT `cat #{pid}`"
+  end
+end
+
+GitlabCli.new.execute