class TwitterCldr::Resources::Requirements::GitRequirement
Attributes
ref[R]
repo_url[R]
Public Class Methods
new(repo_url, ref)
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 13 def initialize(repo_url, ref) @repo_url = repo_url @ref = ref end
Public Instance Methods
prepare()
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 18 def prepare check_git_available clone_or_fetch_if_necessary puts "Using repo in #{source_path}" end
source_path()
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 24 def source_path @source_path ||= File.join(TwitterCldr::VENDOR_DIR, 'git', repo_name) end
Private Instance Methods
check_git_available()
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 30 def check_git_available `git --version` if $?.exitstatus != 0 raise "Couldn't find git executable. Is it installed?" end end
clone_or_fetch_if_necessary()
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 42 def clone_or_fetch_if_necessary if File.exist?(source_path) unless ref_exists? in_repo { `git fetch` } end else `git clone #{repo_url} #{source_path}` end end
in_repo(&block)
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 59 def in_repo(&block) Dir.chdir(source_path, &block) end
ref_exists?()
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 52 def ref_exists? in_repo do `git rev-parse --verify --quiet #{ref}` $?.exitstatus == 0 end end
repo_name()
click to toggle source
# File lib/twitter_cldr/resources/requirements/git_requirement.rb, line 38 def repo_name @repo_name ||= File.basename(repo_url).chomp('.git') end