Class: Prebundler::GitGemRef
- Inherits:
-
GemRef
- Object
- GemRef
- Prebundler::GitGemRef
show all
- Defined in:
- lib/prebundler/git_gem_ref.rb
Constant Summary
Constants inherited
from GemRef
Prebundler::GemRef::DEFAULT_SOURCE, Prebundler::GemRef::REF_TYPES
Instance Attribute Summary collapse
Attributes inherited from GemRef
#bundle_path, #dependencies, #groups, #name, #prefix, #spec
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from GemRef
#add_to_tar, create, #executables, #extension_dir, #id, #install_from_tar, #relative_extension_dir, #relative_gem_dir, #relative_gemspec_files, #spec_path, #tar_file
Constructor Details
#initialize(name, bundle_path, options = {}) ⇒ GitGemRef
Returns a new instance of GitGemRef.
15
16
17
18
|
# File 'lib/prebundler/git_gem_ref.rb', line 15
def initialize(name, bundle_path, options = {})
super
@strategy = options.include?(:git) ? :git : :github
end
|
Instance Attribute Details
#strategy ⇒ Object
Returns the value of attribute strategy.
13
14
15
|
# File 'lib/prebundler/git_gem_ref.rb', line 13
def strategy
@strategy
end
|
Class Method Details
.accepts?(options) ⇒ Boolean
8
9
10
|
# File 'lib/prebundler/git_gem_ref.rb', line 8
def accepts?(options)
options.include?(:git) || options.include?(:github)
end
|
Instance Method Details
#cache_dir ⇒ Object
60
61
62
|
# File 'lib/prebundler/git_gem_ref.rb', line 60
def cache_dir
File.join(cache_path, "#{name}-#{uri_hash}")
end
|
#cache_path ⇒ Object
56
57
58
|
# File 'lib/prebundler/git_gem_ref.rb', line 56
def cache_path
File.join(bundle_path, 'cache', 'bundler', 'git')
end
|
#gemspecs ⇒ Object
78
79
80
81
82
|
# File 'lib/prebundler/git_gem_ref.rb', line 78
def gemspecs
@gemspecs ||= gemspec_files.map do |gemspec_file|
Bundler.load_gemspec(gemspec_file)
end
end
|
#install ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/prebundler/git_gem_ref.rb', line 20
def install
FileUtils.mkdir_p(spec_path)
FileUtils.mkdir_p(install_path)
FileUtils.mkdir_p(cache_path)
return if File.exist?(cache_dir) || File.exist?(install_dir)
system "git clone #{uri} \"#{cache_dir}\" --bare --no-hardlinks --quiet"
return $? if $?.exitstatus != 0
system "git clone --no-checkout --quiet \"#{cache_dir}\" \"#{install_dir}\""
return $? if $?.exitstatus != 0
Dir.chdir(install_dir) { system "git reset --hard --quiet #{revision}" }
serialize_gemspecs
copy_gemspecs
$?
end
|
#install_dir ⇒ Object
84
85
86
|
# File 'lib/prebundler/git_gem_ref.rb', line 84
def install_dir
File.join(install_path, "#{repo_name}-#{version}")
end
|
#install_path ⇒ Object
52
53
54
|
# File 'lib/prebundler/git_gem_ref.rb', line 52
def install_path
File.join(bundle_path, 'bundler', 'gems')
end
|
#installable? ⇒ Boolean
44
45
46
|
# File 'lib/prebundler/git_gem_ref.rb', line 44
def installable?
true
end
|
#remote ⇒ Object
70
71
72
|
# File 'lib/prebundler/git_gem_ref.rb', line 70
def remote
nil
end
|
#repo_name ⇒ Object
88
89
90
|
# File 'lib/prebundler/git_gem_ref.rb', line 88
def repo_name
@repo_name ||= URI.parse(uri).path.split('/').last.chomp('.git')
end
|
#revision ⇒ Object
74
75
76
|
# File 'lib/prebundler/git_gem_ref.rb', line 74
def revision
spec.source.revision
end
|
#storable? ⇒ Boolean
48
49
50
|
# File 'lib/prebundler/git_gem_ref.rb', line 48
def storable?
false
end
|
#to_gem ⇒ Object
36
37
38
|
# File 'lib/prebundler/git_gem_ref.rb', line 36
def to_gem
"gem '#{name}', git: '#{uri}', ref: '#{revision}'"
end
|
#uri ⇒ Object
Also known as:
source
64
65
66
|
# File 'lib/prebundler/git_gem_ref.rb', line 64
def uri
spec.source.uri
end
|
#version ⇒ Object
40
41
42
|
# File 'lib/prebundler/git_gem_ref.rb', line 40
def version
revision[0...12]
end
|