summaryrefslogtreecommitdiff
path: root/lib/gitlab_projects.rb
blob: ae8cb2d06098dfcc8ff4b8edb6603a0604c03958 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
require 'open3'
require 'fileutils'
require_relative 'gitlab_config'

class GitlabProjects
  attr_accessor :project_name

  def initialize
    @command = ARGV.shift
    @project_name = ARGV.shift
    @repos_path = GitlabConfig.new.repos_path
    @full_path = File.join(@repos_path, @project_name)
    @hook_path = File.join(ROOT_PATH, 'hooks', 'post-receive')
  end

  def exec
    case @command
    when 'add-project'; add_project
    when 'rm-project';  rm_project
    else
      puts 'not allowed'
    end
  end

  protected

  def add_project
    FileUtils.mkdir_p(@full_path, mode: 0770)
    cmd = "cd #{@full_path} && git init --bare && ln -s #{@hook_path} #{@full_path}/hooks/post-receive"
    system(cmd)
  end

  def rm_project
    FileUtils.rm_rf(@full_path)
  end
end