librarian-puppet 0.9.3 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/lib/librarian/puppet.rb +1 -0
- data/lib/librarian/puppet/cli.rb +17 -0
- data/lib/librarian/puppet/environment.rb +26 -0
- data/lib/librarian/puppet/source/forge.rb +43 -1
- data/lib/librarian/puppet/source/git.rb +86 -0
- data/lib/librarian/puppet/version.rb +1 -1
- data/vendor/gems/ruby/1.8/cache/aruba-0.4.11.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/builder-3.0.0.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/childprocess-0.3.5.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/cucumber-1.2.1.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/diff-lcs-1.1.3.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/facter-1.6.11.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/ffi-1.1.5.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/gherkin-2.11.1.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/json-1.7.4.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/puppet-2.7.18.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/rake-0.9.2.2.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/rspec-2.11.0.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/rspec-core-2.11.1.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/rspec-expectations-2.11.2.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/rspec-mocks-2.11.1.gem +0 -0
- data/vendor/gems/ruby/1.8/cache/thor-0.15.4.gem +0 -0
- metadata +4 -4
data/.gitignore
CHANGED
data/lib/librarian/puppet.rb
CHANGED
data/lib/librarian/puppet/cli.rb
CHANGED
@@ -43,6 +43,7 @@ module Librarian
|
|
43
43
|
option "strip-dot-git", :type => :boolean
|
44
44
|
option "path", :type => :string
|
45
45
|
option "destructive", :type => :boolean, :default => false
|
46
|
+
option "local", :type => :boolean, :default => false
|
46
47
|
def install
|
47
48
|
ensure!
|
48
49
|
clean! if options["clean"]
|
@@ -56,10 +57,26 @@ module Librarian
|
|
56
57
|
if options.include?("path")
|
57
58
|
environment.config_db.local["path"] = options["path"]
|
58
59
|
end
|
60
|
+
|
61
|
+
environment.config_db.local['mode'] = options['local'] ? 'local' : nil
|
62
|
+
|
59
63
|
resolve!
|
60
64
|
install!
|
61
65
|
end
|
62
66
|
|
67
|
+
desc "package", "Cache the puppet modules in vendor/puppet/cache."
|
68
|
+
option "quiet", :type => :boolean, :default => false
|
69
|
+
option "verbose", :type => :boolean, :default => false
|
70
|
+
option "line-numbers", :type => :boolean, :default => false
|
71
|
+
option "clean", :type => :boolean, :default => false
|
72
|
+
option "strip-dot-git", :type => :boolean
|
73
|
+
option "path", :type => :string
|
74
|
+
option "destructive", :type => :boolean, :default => false
|
75
|
+
def package
|
76
|
+
environment.vendor!
|
77
|
+
install
|
78
|
+
end
|
79
|
+
|
63
80
|
def version
|
64
81
|
say "librarian-puppet v#{Librarian::Puppet::VERSION}"
|
65
82
|
end
|
@@ -16,6 +16,18 @@ module Librarian
|
|
16
16
|
project_path.join(part)
|
17
17
|
end
|
18
18
|
|
19
|
+
def vendor_path
|
20
|
+
project_path.join('vendor/puppet')
|
21
|
+
end
|
22
|
+
|
23
|
+
def vendor_cache
|
24
|
+
vendor_path.join('cache')
|
25
|
+
end
|
26
|
+
|
27
|
+
def vendor_source
|
28
|
+
vendor_path.join('source')
|
29
|
+
end
|
30
|
+
|
19
31
|
def cache_path
|
20
32
|
project_path.join(".tmp/librarian/cache")
|
21
33
|
end
|
@@ -23,6 +35,20 @@ module Librarian
|
|
23
35
|
def scratch_path
|
24
36
|
project_path.join(".tmp/librarian/scratch")
|
25
37
|
end
|
38
|
+
|
39
|
+
def vendor!
|
40
|
+
vendor_cache.mkpath unless vendor_cache.exist?
|
41
|
+
vendor_source.mkpath unless vendor_source.exist?
|
42
|
+
end
|
43
|
+
|
44
|
+
def vendor?
|
45
|
+
vendor_path.exist?
|
46
|
+
end
|
47
|
+
|
48
|
+
def local?
|
49
|
+
config_db['mode'] == 'local'
|
50
|
+
end
|
51
|
+
|
26
52
|
end
|
27
53
|
end
|
28
54
|
end
|
@@ -37,6 +37,14 @@ module Librarian
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def install_version!(version, install_path)
|
40
|
+
if environment.local? && !vendored?(name, version)
|
41
|
+
raise Error, "Could not find a local copy of #{name} at #{version}."
|
42
|
+
end
|
43
|
+
|
44
|
+
if environment.vendor?
|
45
|
+
vendor_cache(name, version) unless vendored?(name, version)
|
46
|
+
end
|
47
|
+
|
40
48
|
cache_version_unpacked! version
|
41
49
|
|
42
50
|
if install_path.exist?
|
@@ -69,7 +77,41 @@ module Librarian
|
|
69
77
|
|
70
78
|
path.mkpath
|
71
79
|
|
72
|
-
|
80
|
+
target = vendored?(name, version) ? vendored_path(name, version) : name
|
81
|
+
|
82
|
+
`puppet module install --target-dir #{path} --modulepath #{path} --ignore-dependencies #{target}`
|
83
|
+
end
|
84
|
+
|
85
|
+
def vendored?(name, version)
|
86
|
+
vendored_path(name, version).exist?
|
87
|
+
end
|
88
|
+
|
89
|
+
def vendored_path(name, version)
|
90
|
+
environment.vendor_cache.join("#{name.sub("/", "-")}-#{version}.tar.gz")
|
91
|
+
end
|
92
|
+
|
93
|
+
def vendor_cache(name, version)
|
94
|
+
File.open(vendored_path(name, version).to_s, 'w') do |f|
|
95
|
+
download(name, version) do |data|
|
96
|
+
f << data
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def download(name, version, &block)
|
102
|
+
data = api_call("api/v1/releases.json?module=#{name}&version=#{version}")
|
103
|
+
|
104
|
+
info = data[name].detect {|h| h['version'] == version.to_s }
|
105
|
+
|
106
|
+
stream(info['file'], &block)
|
107
|
+
end
|
108
|
+
|
109
|
+
def stream(file, &block)
|
110
|
+
Net::HTTP.get_response(URI.parse("#{source}#{file}")) do |res|
|
111
|
+
res.code
|
112
|
+
|
113
|
+
res.read_body(&block)
|
114
|
+
end
|
73
115
|
end
|
74
116
|
|
75
117
|
private
|
@@ -14,6 +14,38 @@ module Librarian
|
|
14
14
|
command = %W(rev-parse #{reference}^{commit} --quiet)
|
15
15
|
run!(command, :chdir => true).strip
|
16
16
|
end
|
17
|
+
|
18
|
+
# Naming this method 'version' causes an exception to be raised.
|
19
|
+
def module_version
|
20
|
+
return '0.0.1' unless modulefile?
|
21
|
+
|
22
|
+
metadata = ::Puppet::ModuleTool::Metadata.new
|
23
|
+
::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
|
24
|
+
|
25
|
+
metadata.version
|
26
|
+
end
|
27
|
+
|
28
|
+
def dependencies
|
29
|
+
return {} unless modulefile?
|
30
|
+
|
31
|
+
metadata = ::Puppet::ModuleTool::Metadata.new
|
32
|
+
|
33
|
+
::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
|
34
|
+
|
35
|
+
metadata.dependencies.inject({}) do |h, dependency|
|
36
|
+
name = dependency.instance_variable_get(:@full_module_name)
|
37
|
+
version = dependency.instance_variable_get(:@version_requirement)
|
38
|
+
h.update(name => version)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def modulefile
|
43
|
+
File.join(path, 'Modulefile')
|
44
|
+
end
|
45
|
+
|
46
|
+
def modulefile?
|
47
|
+
File.exists?(modulefile)
|
48
|
+
end
|
17
49
|
end
|
18
50
|
end
|
19
51
|
end
|
@@ -22,6 +54,60 @@ module Librarian
|
|
22
54
|
module Source
|
23
55
|
class Git < Librarian::Source::Git
|
24
56
|
include Local
|
57
|
+
|
58
|
+
def cache!
|
59
|
+
return vendor_checkout! if vendor_cached?
|
60
|
+
|
61
|
+
if environment.local?
|
62
|
+
raise Error, "Could not find a local copy of #{uri} at #{sha}."
|
63
|
+
end
|
64
|
+
|
65
|
+
super
|
66
|
+
|
67
|
+
cache_in_vendor(repository.path) if environment.vendor?
|
68
|
+
end
|
69
|
+
|
70
|
+
def vendor_tgz
|
71
|
+
environment.vendor_source + "#{sha}.tar.gz"
|
72
|
+
end
|
73
|
+
|
74
|
+
def vendor_cached?
|
75
|
+
vendor_tgz.exist?
|
76
|
+
end
|
77
|
+
|
78
|
+
def vendor_checkout!
|
79
|
+
repository.path.rmtree if repository.path.exist?
|
80
|
+
repository.path.mkpath
|
81
|
+
|
82
|
+
Dir.chdir(repository.path.to_s) do
|
83
|
+
%x{tar xzf #{vendor_tgz}}
|
84
|
+
end
|
85
|
+
|
86
|
+
repository_cached!
|
87
|
+
end
|
88
|
+
|
89
|
+
def cache_in_vendor(tmp_path)
|
90
|
+
Dir.chdir(tmp_path.to_s) do
|
91
|
+
%x{git archive #{sha} | gzip > #{vendor_tgz}}
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def fetch_version(name, extra)
|
96
|
+
cache!
|
97
|
+
found_path = found_path(name)
|
98
|
+
repository.module_version
|
99
|
+
end
|
100
|
+
|
101
|
+
def fetch_dependencies(name, version, extra)
|
102
|
+
repository.dependencies.map do |k, v|
|
103
|
+
Dependency.new(k, v, forge_source)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def forge_source
|
108
|
+
Forge.from_lock_options(environment, :remote=>"http://forge.puppetlabs.com")
|
109
|
+
end
|
110
|
+
|
25
111
|
end
|
26
112
|
end
|
27
113
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librarian-puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 4
|
10
|
+
version: 0.9.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tim Sharpe
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-08-
|
18
|
+
date: 2012-08-28 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|