Sha256: d8c2bbaa6aa697f933a9f9e2c3761f3169f4dd68bec083024759eae4dc9063d1

Contents?: true

Size: 1.38 KB

Versions: 41

Compression:

Stored size: 1.38 KB

Contents

# encoding: UTF-8

# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0

module TwitterCldr
  module Resources
    module Requirements

      class GitRequirement
        attr_reader :repo_url, :ref

        def initialize(repo_url, ref)
          @repo_url = repo_url
          @ref = ref
        end

        def prepare
          check_git_available
          clone_or_fetch_if_necessary
          puts "Using repo in #{source_path}"
        end

        def source_path
          @source_path ||= File.join(TwitterCldr::VENDOR_DIR, 'git', repo_name)
        end

        private

        def check_git_available
          `git --version`

          if $?.exitstatus != 0
            raise "Couldn't find git executable. Is it installed?"
          end
        end

        def repo_name
          @repo_name ||= File.basename(repo_url).chomp('.git')
        end

        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

        def ref_exists?
          in_repo do
            `git rev-parse --verify --quiet #{ref}`
            $?.exitstatus == 0
          end
        end

        def in_repo(&block)
          Dir.chdir(source_path, &block)
        end
      end

    end
  end
end

Version data entries

41 entries across 41 versions & 2 rubygems

Version Path
twitter_cldr-6.13.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.12.1 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.12.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.11.5 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.11.4 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.11.3 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.11.2 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.11.1 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.11.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.10.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.9.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.8.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.7.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.6.2 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.6.1 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.6.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.5.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.4.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.3.0 lib/twitter_cldr/resources/requirements/git_requirement.rb
twitter_cldr-6.2.0 lib/twitter_cldr/resources/requirements/git_requirement.rb