Module: Envandle::GitUtil

Defined in:
lib/envandle/git_util.rb

Constant Summary collapse

BIN =
`which git`.chomp

Class Method Summary collapse

Class Method Details

.init(dir, url, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/envandle/git_util.rb', line 9

def self.init(dir, url, &block)
  unless dir
    Envandle.tmpdir do |tmpdir|
      init tmpdir, url, &block
    end
  else
    raise_if_no_git_installed
    Dir.chdir(dir) do
      Envandle.sh "#{BIN} init"
      Envandle.sh "#{BIN} remote add origin #{url}"
      yield dir if block_given?
    end
  end
end

.ls_remote_sha(dir, q) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/envandle/git_util.rb', line 24

def self.ls_remote_sha(dir, q)
  Dir.chdir(dir) do
    data = Envandle.sh("#{BIN} ls-remote origin #{q}").chomp
    data = if data.empty?
      []
    else
      data.split("\n").map{|i| i.split(/\s+/)[0] }
    end
    if block_given?
      yield data
    else
      data
    end
  end
end

.pull(dir, ref, branch) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/envandle/git_util.rb', line 40

def self.pull(dir, ref, branch)
  Dir.chdir(dir) do
    Envandle.sh "#{BIN} checkout -b #{branch}"
    Envandle.sh "#{BIN} pull origin #{ref}:#{branch}"
    sha = Envandle.sh("#{BIN} rev-parse HEAD").chomp
    if block_given?
      yield sha
    else
      sha
    end
  end
end

.pull_sha(dir, ref, branch) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/envandle/git_util.rb', line 53

def self.pull_sha(dir, ref, branch)
  Dir.chdir(dir) do
    Envandle.sh "#{BIN} checkout -b #{branch}"
    Envandle.sh "#{BIN} fetch origin"
    Envandle.sh "#{BIN} reset --hard #{ref}"
  end
end

.raise_if_no_git_installedObject



5
6
7
# File 'lib/envandle/git_util.rb', line 5

def self.raise_if_no_git_installed
  raise "No git installed." if BIN.empty?
end