librarian-puppet 3.0.0 → 3.0.1

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 178cdf6e6befe908c192269b7cbdb083634fb4614a041262ea1cf01a7159749b
4
- data.tar.gz: 5d22740a5a509be15df114e1247d2ecc2b1864898e6daa0c29128d5d37677a8e
3
+ metadata.gz: c107d21c979b589b05492945c89c16c14c4dc2655b63e347ee8048d47e66a259
4
+ data.tar.gz: 60f587d482976725bd421e2617dad882a77e8d1d6fbb7c435be355b6e8d4a7d1
5
5
  SHA512:
6
- metadata.gz: 4e20811276f5f1f2957531d71b3d98d542e7f01f8d4d6fea9dadd9cbf1b19ed42cc6bd2ecb12fbbdb2876ec76c5ccf8bd207fb61e59b6ef8ad943074a259e568
7
- data.tar.gz: b17f917b603ea86faf24a898a31081ca32ced00f49e4fcfe8026d4bb3a6a83923af0cc5dcd81aa711ceb818980047117096da8e21ea07b00a70191419735d48d
6
+ metadata.gz: d1826a56a163a23e8b050662cea03f531158fdb682301017d5aef9aa9e0f89fc3f91d4d139dca74f35b959d9cb06663f1a0cc5ae7891857addc64255adf17073
7
+ data.tar.gz: b3dd541186ac0c1fa7de5cb175eaa146d1a8d391a2697bab3b0f09cbdb1cdb71157c16d13dc6052f149782ff7405877dd03f834ecffebdaebdd14dd3d70956e1
@@ -1,4 +1,5 @@
1
1
  require 'librarian/action/resolve'
2
+ require 'librarian/puppet/resolver'
2
3
 
3
4
  module Librarian
4
5
  module Puppet
@@ -15,6 +16,10 @@ module Librarian
15
16
  end
16
17
  end
17
18
 
19
+ def resolver
20
+ Resolver.new(environment)
21
+ end
22
+
18
23
  end
19
24
  end
20
25
  end
@@ -5,13 +5,21 @@ module Librarian
5
5
 
6
6
  include Librarian::Puppet::Util
7
7
 
8
- def initialize(name, requirement, source)
8
+ attr_accessor :parent
9
+ private :parent=
10
+
11
+ def initialize(name, requirement, source, parent = nil)
9
12
  # Issue #235 fail if forge source is not defined
10
13
  raise Error, "forge entry is not defined in Puppetfile" if source.instance_of?(Array) && source.empty?
11
14
 
15
+ self.parent = parent
12
16
  super(normalize_name(name), requirement, source)
13
17
  end
14
18
 
19
+ def to_s
20
+ "#{name} (#{requirement}) <#{source}> (from #{parent.nil? ? '<nil>' : parent})"
21
+ end
22
+
15
23
  end
16
24
 
17
25
  end
@@ -37,6 +37,37 @@ module Librarian
37
37
  Receiver.new(target)
38
38
  end
39
39
 
40
+ def run(specfile = nil, sources = [])
41
+ specfile, sources = nil, specfile if specfile.kind_of?(Array) && sources.empty?
42
+
43
+ Target.new(self).tap do |target|
44
+ target.precache_sources(sources)
45
+ debug_named_source_cache("Pre-Cached Sources", target)
46
+
47
+ specfile ||= Proc.new if block_given?
48
+
49
+ if specfile.kind_of?(Pathname) and !File.exists?(specfile)
50
+ debug { "Specfile #{specfile} not found, using defaults" } unless specfile.nil?
51
+ receiver(target).run(specfile, &default_specfile)
52
+ else
53
+ receiver(target).run(specfile)
54
+ end
55
+
56
+ post_process_target(target)
57
+
58
+ debug_named_source_cache("Post-Cached Sources", target)
59
+ end.to_spec
60
+ end
61
+
62
+ class Target < Librarian::Dsl::Target
63
+ def dependency(name, *args)
64
+ options = args.last.is_a?(Hash) ? args.pop : {}
65
+ source = source_from_options(options) || @source
66
+ dep = dependency_type.new(name, args, source, 'Puppetfile')
67
+ @dependencies << dep
68
+ end
69
+ end
70
+
40
71
  class Receiver < Librarian::Dsl::Receiver
41
72
  attr_reader :specfile, :working_path
42
73
 
@@ -25,7 +25,46 @@ module Librarian
25
25
  alias_method :old_lookup, :[]
26
26
  define_method(:[]) { |k| self.old_lookup(normalize_name(k)) }
27
27
  end
28
- super(lines, manifests_index)
28
+ dependencies = []
29
+ while lines.first =~ /^ {2}([\w\-\/]+)(?: \((.*)\))?$/
30
+ lines.shift
31
+ name, requirement = $1, $2.split(/,\s*/)
32
+ dependencies << environment.dsl_class.dependency_type.new(name, requirement, manifests_index[name].source, 'lockfile')
33
+ end
34
+ dependencies
35
+ end
36
+
37
+ def compile_placeholder_manifests(sources_ast)
38
+ manifests = {}
39
+ sources_ast.each do |source_ast|
40
+ source_type = source_ast[:type]
41
+ source = source_type.from_lock_options(environment, source_ast[:options])
42
+ source_ast[:manifests].each do |manifest_name, manifest_ast|
43
+ manifests[manifest_name] = ManifestPlaceholder.new(
44
+ source,
45
+ manifest_name,
46
+ manifest_ast[:version],
47
+ manifest_ast[:dependencies].map do |k, v|
48
+ environment.dsl_class.dependency_type.new(k, v, nil, manifest_name)
49
+ end
50
+ )
51
+ end
52
+ end
53
+ manifests
54
+ end
55
+
56
+ def compile(sources_ast)
57
+ manifests = compile_placeholder_manifests(sources_ast)
58
+ manifests = manifests.map do |name, manifest|
59
+ dependencies = manifest.dependencies.map do |d|
60
+ environment.dsl_class.dependency_type.new(d.name, d.requirement, manifests[d.name].source, name)
61
+ end
62
+ real = Manifest.new(manifest.source, manifest.name)
63
+ real.version = manifest.version
64
+ real.dependencies = manifest.dependencies
65
+ real
66
+ end
67
+ ManifestSet.sort(manifests)
29
68
  end
30
69
 
31
70
  end
@@ -0,0 +1,21 @@
1
+ require 'librarian/resolver'
2
+
3
+ module Librarian
4
+ module Puppet
5
+ class Resolver < Librarian::Resolver
6
+
7
+ class Implementation < Librarian::Resolver::Implementation
8
+ def sourced_dependency_for(dependency)
9
+ return dependency if dependency.source
10
+
11
+ source = dependency_source_map[dependency.name] || default_source
12
+ dependency.class.new(dependency.name, dependency.requirement, source, dependency.parent)
13
+ end
14
+ end
15
+
16
+ def implementation(spec)
17
+ Implementation.new(self, spec, :cyclic => cyclic)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -144,7 +144,7 @@ module Librarian
144
144
  def fetch_dependencies(name, version, version_uri)
145
145
  repo(name).dependencies(version).map do |k, v|
146
146
  v = Librarian::Dependency::Requirement.new(v).to_gem_requirement
147
- Dependency.new(k, v, nil)
147
+ Dependency.new(k, v, nil, name)
148
148
  end
149
149
  end
150
150
 
@@ -145,7 +145,7 @@ module Librarian
145
145
  debug { "Downloading #{url} into #{path}"}
146
146
  environment.vendor!
147
147
  File.open(path, 'wb') do |f|
148
- open(url, "rb") do |input|
148
+ URI.open(url, 'rb') do |input|
149
149
  f.write(input.read)
150
150
  end
151
151
  end
@@ -74,7 +74,7 @@ module Librarian
74
74
  debug { "Querying Forge API for module #{name}#{" and version #{version}" unless version.nil?}: #{url}" }
75
75
 
76
76
  begin
77
- data = open(url) {|f| f.read}
77
+ data = URI.open(url) {|f| f.read}
78
78
  JSON.parse(data)
79
79
  rescue OpenURI::HTTPError => e
80
80
  case e.io.status[0].to_i
@@ -77,7 +77,7 @@ module Librarian
77
77
  File.open(vendored_path(vendored_name(name), version).to_s, 'wb') do |f|
78
78
  begin
79
79
  debug { "Downloading <#{url}> to <#{f.path}>" }
80
- open(url,
80
+ URI.open(url,
81
81
  "User-Agent" => "librarian-puppet v#{Librarian::Puppet::VERSION}") do |res|
82
82
  while buffer = res.read(8192)
83
83
  f.write(buffer)
@@ -44,7 +44,7 @@ module Librarian
44
44
 
45
45
  parsed_metadata['dependencies'].each do |d|
46
46
  gem_requirement = Librarian::Dependency::Requirement.new(d['version_requirement']).to_gem_requirement
47
- new_dependency = Dependency.new(d['name'], gem_requirement, forge_source)
47
+ new_dependency = Dependency.new(d['name'], gem_requirement, forge_source, name)
48
48
  dependencies << new_dependency
49
49
  end
50
50
 
@@ -1,5 +1,5 @@
1
1
  module Librarian
2
2
  module Puppet
3
- VERSION = "3.0.0"
3
+ VERSION = "3.0.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librarian-puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Sharpe
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-01-15 00:00:00.000000000 Z
12
+ date: 2021-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: librarianp
@@ -115,14 +115,14 @@ dependencies:
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: 5.2.0
118
+ version: 5.3.0
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: 5.2.0
125
+ version: 5.3.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: minitest
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -191,6 +191,7 @@ files:
191
191
  - lib/librarian/puppet/environment.rb
192
192
  - lib/librarian/puppet/extension.rb
193
193
  - lib/librarian/puppet/lockfile.rb
194
+ - lib/librarian/puppet/resolver.rb
194
195
  - lib/librarian/puppet/source.rb
195
196
  - lib/librarian/puppet/source/forge.rb
196
197
  - lib/librarian/puppet/source/forge/repo.rb
@@ -224,8 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
225
  - !ruby/object:Gem::Version
225
226
  version: '0'
226
227
  requirements: []
227
- rubyforge_project:
228
- rubygems_version: 2.7.4
228
+ rubygems_version: 3.0.8
229
229
  signing_key:
230
230
  specification_version: 4
231
231
  summary: Bundler for your Puppet modules