Class: Envandle::GitBranchReference
- Inherits:
-
Object
- Object
- Envandle::GitBranchReference
- Extended by:
- AsGitReference
- Defined in:
- lib/envandle/git_branch_reference.rb
Instance Method Summary collapse
-
#initialize(context, name, url, ref) ⇒ GitBranchReference
constructor
A new instance of GitBranchReference.
- #spec ⇒ Object
- #to_executable_argset(base) ⇒ Object
Methods included from AsGitReference
Constructor Details
#initialize(context, name, url, ref) ⇒ GitBranchReference
Returns a new instance of GitBranchReference.
5 6 7 8 9 10 |
# File 'lib/envandle/git_branch_reference.rb', line 5 def initialize(context, name, url, ref) @context = context @name = name @url = url @ref = ref end |
Instance Method Details
#spec ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/envandle/git_branch_reference.rb', line 12 def spec @spec ||= begin cache = @context.gemfile.gemspecs shas = Envandle::GitUtil.init(nil, @url) do |dir| Envandle::GitUtil.ls_remote_sha(dir, "refs/heads/#{@ref}") end sha = shas[0] cache_url = "#{@url}##{sha}" raise "Can't get a git commit. (url: #{@url}, branch: #{@ref})" unless sha dir = cache.find(cache_url) || begin reserve = cache.reserve Envandle::GitUtil.init reserve.path, @url sha = Envandle::GitUtil.pull(reserve.path, @ref, "master") reserve.url = cache_url reserve.save reserve.path end Gemspec.new(File.join(dir, "#{@name}.gemspec")) end end |