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