librarian-puppet 0.9.13 → 0.9.14

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjAxMzZlZmJiNDdiMDAyMGNhNjMwOGNmOWZjNDYzN2ExYWJkZDE3Zg==
4
+ YTJiNjNkOTc5NTIwMzIyMjc4ZTk4ZjYxNDU1OTk1YWU0Zjk2YmZmOA==
5
5
  data.tar.gz: !binary |-
6
- ZTlkNjMwYTkwMjQ5ZjE1ZGE4MTU5OWYxMmJjNDIyMTY1NzhkYjU3Mg==
6
+ M2U0MmZhMWMyZTUyYzJjMDNmOGFlOTUxZTI5OGI1NjQzOGYwNzk1MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDE4N2ZkMWQ4YjhkZGQwNWFjYTI4ZjUyMjNkMDcyMDZjMjQ1OTEyZGE3N2Uw
10
- ZTFlMGRmYTg4Y2RlNWE4NmUwOGZkZjVmOWU3MTYzMGIzMjgzNDcyMzk1NzE0
11
- MmIxM2RjZjUzNGMxYWRlZjAwZjUzOGU4NDQyOWQ2NDgxMDEzZDg=
9
+ M2VhNTk1MzliMzU5YzliNmQ4YWJjY2Y2YTc4ZDUyMjBhZjU3ZWE2ODY4MDVl
10
+ YmRmZDBiNjNmNzdkNDQ2ODk4MmZmMWIwMDVkNWE5YWIyOTAxZjE0YTU2ODY5
11
+ YWQ5YWNlOGQ1MGY2OTUzZjliODEyMDI4ZjAxOTRkMjJlOTc4Zjg=
12
12
  data.tar.gz: !binary |-
13
- NWU5OWM0MmNmYTc3ZjhhODk4NTgxMjQ3NzFkN2E2ZDY4MTNkZGUxYjljOTRj
14
- NDNjMTg0MDIxMDg3ZjI4MDY2MjM3MTFjNTg3ZmZjNDljZWUzZDMxYzE2MDIx
15
- YmJlNDUyMDM2YWQ1M2MzYzcwOWIwODE3NTgwMDNkOTRmZjI4NWI=
13
+ MjAyNmJkM2Q3ODczMzBiYWFhODQzZmY2NDdjM2E4NDViZjgwMTcwZGZhMmEx
14
+ MDJhYjcxOTYyODc5YmUwYjliYjIyNGZjMzViYzljZGY0Y2ZjOTljOWZjNDAw
15
+ YWJjMDEwOWUwY2JkODQ3ODAwMzJjZDBlNTIyZDFkMzNhOGJmMjE=
@@ -5,14 +5,27 @@ require 'open3_backport' if RUBY_VERSION < '1.9'
5
5
 
6
6
  status = nil
7
7
  out = nil
8
+ err = nil
8
9
  error = nil
9
10
 
10
11
  begin
11
- Open3.popen3('puppet --version') {|stdin, stdout, stderr, wait_thr|
12
- pid = wait_thr.pid # pid of the started process.
13
- out = stdout.read
14
- status = wait_thr.value # Process::Status object returned.
15
- }
12
+ if RUBY_VERSION < '1.9'
13
+ # Ruby 1.8.x backport of popen3 doesn't allow the 'env' hash argument
14
+ # Not sanitizing the environment for the moment.
15
+ Open3.popen3('puppet --version') {|stdin, stdout, stderr, wait_thr|
16
+ pid = wait_thr.pid # pid of the started process.
17
+ out = stdout.read
18
+ err = stderr.read
19
+ status = wait_thr.value # Process::Status object returned.
20
+ }
21
+ else
22
+ Open3.popen3({"GEM_PATH"=> nil},'puppet --version') {|stdin, stdout, stderr, wait_thr|
23
+ pid = wait_thr.pid # pid of the started process.
24
+ out = stdout.read
25
+ err = stderr.read
26
+ status = wait_thr.value # Process::Status object returned.
27
+ }
28
+ end
16
29
  rescue => e
17
30
  error = e
18
31
  end
@@ -22,6 +35,7 @@ if status.nil? or status.exitstatus != 0
22
35
  Unable to load puppet. Please install it using native packages for your platform (eg .deb, .rpm, .dmg, etc).
23
36
  #{out.nil? or out.empty? ? "puppet --version returned #{status.exitstatus}" : out}
24
37
  #{error.message unless error.nil?}
38
+ #{err unless err.nil?}
25
39
  EOF
26
40
  exit 1
27
41
  end
@@ -1,4 +1,5 @@
1
1
  require 'librarian/dsl'
2
+ require 'librarian/dsl/target'
2
3
  require 'librarian/puppet/source'
3
4
 
4
5
  module Librarian
@@ -11,17 +12,38 @@ module Librarian
11
12
  source :git => Source::Git
12
13
  source :path => Source::Path
13
14
  source :github_tarball => Source::GitHubTarball
14
- end
15
- end
16
- end
17
15
 
18
- module Librarian
19
- class Dsl
20
- class Receiver
21
- def modulefile
22
- File.read('Modulefile').lines.each do |line|
23
- regexp = /\s*dependency\s+('|")([^'"]+)\1\s*(?:,\s*('|")([^'"]+)\3)?/
24
- regexp =~ line && mod($2, $4)
16
+ # copied from Librarian::Dsl to use our own Receiver
17
+ def run(specfile = nil, sources = [])
18
+ specfile, sources = nil, specfile if specfile.kind_of?(Array) && sources.empty?
19
+
20
+ Target.new(self).tap do |target|
21
+ target.precache_sources(sources)
22
+ debug_named_source_cache("Pre-Cached Sources", target)
23
+
24
+ specfile ||= Proc.new if block_given?
25
+ receiver = Receiver.new(target)
26
+ receiver.run(specfile)
27
+
28
+ debug_named_source_cache("Post-Cached Sources", target)
29
+ end.to_spec
30
+ end
31
+
32
+ class Receiver < Librarian::Dsl::Receiver
33
+ attr_reader :specfile
34
+
35
+ # save the specfile and call librarian
36
+ def run(specfile = nil)
37
+ @specfile = specfile
38
+ super
39
+ end
40
+
41
+ # implement the 'modulefile' syntax for Puppetfile
42
+ def modulefile
43
+ File.read(Pathname.new(specfile).parent.join('Modulefile')).lines.each do |line|
44
+ regexp = /\s*dependency\s+('|")([^'"]+)\1\s*(?:,\s*('|")([^'"]+)\3)?/
45
+ regexp =~ line && mod($2, $4)
46
+ end
25
47
  end
26
48
  end
27
49
  end
@@ -218,4 +218,11 @@ module Librarian
218
218
  end
219
219
  end
220
220
 
221
+ class Logger
222
+ def warn(string = nil, &block)
223
+ return unless ui
224
+
225
+ ui.warn(string || yield)
226
+ end
227
+ end
221
228
  end
@@ -1,15 +1,5 @@
1
1
  require 'librarian/source/git'
2
2
  require 'librarian/puppet/source/local'
3
- begin
4
- require 'puppet'
5
- rescue LoadError
6
- $stderr.puts <<-EOF
7
- Unable to load puppet, the puppet gem is required for :git source.
8
- Install it with: gem install puppet
9
- EOF
10
- exit 1
11
- end
12
-
13
3
 
14
4
  module Librarian
15
5
  module Source
@@ -71,68 +61,6 @@ module Librarian
71
61
  end
72
62
  end
73
63
 
74
- def fetch_version(name, extra)
75
- cache!
76
- found_path = found_path(name)
77
- module_version
78
- end
79
-
80
- def fetch_dependencies(name, version, extra)
81
- dependencies = Set.new
82
-
83
- if modulefile?
84
- metadata = ::Puppet::ModuleTool::Metadata.new
85
-
86
- ::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
87
-
88
- metadata.dependencies.each do |dependency|
89
- dependency_name = dependency.instance_variable_get(:@full_module_name)
90
- version = dependency.instance_variable_get(:@version_requirement)
91
- gem_requirement = Requirement.new(version).gem_requirement
92
- dependencies << Dependency.new(dependency_name, gem_requirement, forge_source)
93
- end
94
- end
95
-
96
- if specfile?
97
- spec = environment.dsl(Pathname(specfile))
98
- dependencies.merge spec.dependencies
99
- end
100
-
101
- dependencies
102
- end
103
-
104
- def forge_source
105
- Forge.from_lock_options(environment, :remote=>"http://forge.puppetlabs.com")
106
- end
107
-
108
- private
109
-
110
- # Naming this method 'version' causes an exception to be raised.
111
- def module_version
112
- return '0.0.1' unless modulefile?
113
-
114
- metadata = ::Puppet::ModuleTool::Metadata.new
115
- ::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
116
-
117
- metadata.version
118
- end
119
-
120
- def modulefile
121
- File.join(filesystem_path, 'Modulefile')
122
- end
123
-
124
- def modulefile?
125
- File.exists?(modulefile)
126
- end
127
-
128
- def specfile
129
- File.join(filesystem_path, environment.specfile_name)
130
- end
131
-
132
- def specfile?
133
- File.exists?(specfile)
134
- end
135
-
136
64
  end
137
65
  end
138
66
  end
@@ -1,3 +1,13 @@
1
+ begin
2
+ require 'puppet'
3
+ rescue LoadError
4
+ $stderr.puts <<-EOF
5
+ Unable to load puppet, the puppet gem is required for :git and :path source.
6
+ Install it with: gem install puppet
7
+ EOF
8
+ exit 1
9
+ end
10
+
1
11
  module Librarian
2
12
  module Puppet
3
13
  module Source
@@ -31,14 +41,67 @@ module Librarian
31
41
  def fetch_version(name, extra)
32
42
  cache!
33
43
  found_path = found_path(name)
34
- '0.0.1'
44
+ module_version
35
45
  end
36
46
 
37
47
  def fetch_dependencies(name, version, extra)
38
- {}
48
+ dependencies = Set.new
49
+
50
+ if modulefile?
51
+ evaluate_modulefile(modulefile).dependencies.each do |dependency|
52
+ dependency_name = dependency.instance_variable_get(:@full_module_name)
53
+ version = dependency.instance_variable_get(:@version_requirement)
54
+ gem_requirement = Requirement.new(version).gem_requirement
55
+ dependencies << Dependency.new(dependency_name, gem_requirement, forge_source)
56
+ end
57
+ end
58
+
59
+ if specfile?
60
+ spec = environment.dsl(Pathname(specfile))
61
+ dependencies.merge spec.dependencies
62
+ end
63
+
64
+ dependencies
65
+ end
66
+
67
+ def forge_source
68
+ Forge.from_lock_options(environment, :remote=>"http://forge.puppetlabs.com")
69
+ end
70
+
71
+ private
72
+
73
+ # Naming this method 'version' causes an exception to be raised.
74
+ def module_version
75
+ return '0.0.1' unless modulefile?
76
+ evaluate_modulefile(modulefile).version
77
+ end
78
+
79
+ def evaluate_modulefile(modulefile)
80
+ metadata = ::Puppet::ModuleTool::Metadata.new
81
+ begin
82
+ ::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
83
+ rescue ArgumentError, SyntaxError => error
84
+ warn { "Unable to parse #{modulefile}, ignoring: #{error}" }
85
+ metadata.version = '0.0.1'
86
+ end
87
+ metadata
88
+ end
89
+
90
+ def modulefile
91
+ File.join(filesystem_path, 'Modulefile')
39
92
  end
40
93
 
41
- private
94
+ def modulefile?
95
+ File.exists?(modulefile)
96
+ end
97
+
98
+ def specfile
99
+ File.join(filesystem_path, environment.specfile_name)
100
+ end
101
+
102
+ def specfile?
103
+ File.exists?(specfile)
104
+ end
42
105
 
43
106
  def install_perform_step_copy!(found_path, install_path)
44
107
  debug { "Copying #{relative_path_to(found_path)} to #{relative_path_to(install_path)}" }
@@ -9,6 +9,9 @@ module Librarian
9
9
  def info(*args, &block)
10
10
  environment.logger.info(*args, &block)
11
11
  end
12
+ def warn(*args, &block)
13
+ environment.logger.warn(*args, &block)
14
+ end
12
15
 
13
16
  # workaround Issue #173 FileUtils.cp_r will fail if there is a symlink that points to a missing file
14
17
  # or when the symlink is copied before the target file when preserve is true
@@ -1,5 +1,5 @@
1
1
  module Librarian
2
2
  module Puppet
3
- VERSION = "0.9.13"
3
+ VERSION = "0.9.14"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librarian-puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.13
4
+ version: 0.9.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Sharpe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-11 00:00:00.000000000 Z
11
+ date: 2014-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: librarian