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