class Swat::Git

Git handler

Attributes

source[RW]
target[RW]

Public Class Methods

new(source = ENV["SCRIPTS_REMOTE_URL"], target = ENV["SCRIPTS_LOCAL_PATH"]) click to toggle source
# File lib/swat_git.rb, line 10
def initialize(source = ENV["SCRIPTS_REMOTE_URL"], target = ENV["SCRIPTS_LOCAL_PATH"])
  @source = source
  @target = target
end

Public Instance Methods

update() click to toggle source
# File lib/swat_git.rb, line 19
def update
  if Dir.exist?(@target)
    pull
  else
    clone
  end
end
valid?() click to toggle source
# File lib/swat_git.rb, line 27
def valid?
  return false unless File.exist?(@target)
  Dir.chdir(@target) {
    `git config --get remote.origin.url`.strip == @source
  }
end
wipe() click to toggle source
# File lib/swat_git.rb, line 15
def wipe
  FileUtils.rm_rf(@target) if File.writable?(@target)
end

Private Instance Methods

clone() click to toggle source
# File lib/swat_git.rb, line 36
def clone
  repo_path = Pathname.new(@target)
  parent_folder = repo_path.parent
  repo_name = repo_path.basename
  fail "Invalid target path #{parent_folder}" unless File.writable?(parent_folder)
  Dir.chdir(parent_folder) do
    `git clone #{@source} #{repo_name} 2> /dev/null`
  end
  { action: "clone", head: current_commit }
end
current_commit() click to toggle source
# File lib/swat_git.rb, line 55
def current_commit
  fail "Invalid target repo #{@target}" unless valid?
  Dir.chdir(@target) do
    `git log --oneline -1 HEAD`.strip
  end
end
pull() click to toggle source
# File lib/swat_git.rb, line 47
def pull
  fail "Invalid target repo #{@target}" unless valid?
  Dir.chdir(@target) do
    `git pull origin 2> /dev/null`
  end
  { action: "pull", head: current_commit }
end