puppetfiler 0.1.2 → 0.1.3

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
  SHA1:
3
- metadata.gz: 72bb5dbc926cb8024b65dff3573a27112e99e68a
4
- data.tar.gz: 3a822b5184db3bc8542d829d8296e11fb5aae35f
3
+ metadata.gz: 8a50bc1960b97634408cec4d7e84d25cabbe41f0
4
+ data.tar.gz: ed068a7360a344ba9d7fceef40f0ef050557cd89
5
5
  SHA512:
6
- metadata.gz: 711c16cd68c5f8e94ee8df7911830cc40c5357fc26cdfb7bf87a5d091e1e0794e24c354cf570aec8876bf3288071842129318621515f9a44deb836a62c50afed
7
- data.tar.gz: ef6264f1187fad42e8b0b9dac675dc986f2b50c4290d01cb26dc75c484e34d02afb2be3fc6a5c3d122cc2deb9ad5182f0a6602039556341fdce59ee845e62a00
6
+ metadata.gz: 8bed7ce700bffad204830c134249cfa59068eb38cf3a6683c6b8d025c45614a339d992a22a552126874744300e07df2a6b147f7d0b22cacc6f46348518453f6b
7
+ data.tar.gz: b989261ae649ca89699ca4521f00edfc3b1c62fa0da4c2e4ba95f1c503367358ffb131e82c53489e0b3a2dfa386d589c9d1a90949c5670b7dbf6ec102a4e3185
data/README.rst CHANGED
@@ -55,3 +55,39 @@ Puppetfile.
55
55
  ref: 1.8.1
56
56
 
57
57
  .. _puppetlabs_spec_helper: https://github.com/puppetlabs/puppetlabs_spec_helper
58
+
59
+ Gerating .fixture.yml when executing rake tasks
60
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61
+
62
+ .. code:: ruby
63
+
64
+ require 'puppetfiler'
65
+
66
+ desc 'Generate .fixtures.yml'
67
+ task :fixtures do
68
+ pf = Puppetfiler::Puppetfile.new('Puppetfile')
69
+ fixtures = pf.fixture(
70
+ {
71
+ 'forge_modules' => {
72
+ /.*/ => {
73
+ 'flags' => '--module_repository https://inhouse.forge.lan/',
74
+ },
75
+ },
76
+ },
77
+ )
78
+ File.write('.fixtures.yml', fixtures.to_yaml)
79
+ end
80
+
81
+ task :spec => [:fixtures]
82
+ task :test do
83
+ [:metadata_lint, :lint, :validate, :spec].each do |test|
84
+ Rake::Task[test].invoke
85
+ end
86
+ end
87
+
88
+ Allowed keys in the passed modifiers are 'forge_modules' and
89
+ 'repositories', which are hashes with strings or regular expressions as
90
+ keys and hashes or strings as values.
91
+
92
+ Also see the rspec test ``takes a hash with pattern matches and returns
93
+ fixtures as a hash`` in ``spec/puppetfiler/puppetfile_spec.rb``.
data/Rakefile CHANGED
@@ -10,6 +10,16 @@ Cucumber::Rake::Task.new(:features) do |t|
10
10
  end
11
11
 
12
12
  task :default do
13
+ require 'simplecov'
14
+ require 'simplecov-console'
15
+
16
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
17
+ SimpleCov::Formatter::HTMLFormatter,
18
+ SimpleCov::Formatter::Console,
19
+ ]
20
+
21
+ SimpleCov.start
22
+
13
23
  %i{spec features}.each do |task|
14
24
  Rake::Task[task].invoke
15
25
  end
@@ -0,0 +1,9 @@
1
+ moduledir 'external_modules'
2
+
3
+ mod 'puppetlabs/stdlib', '4.13.1'
4
+
5
+ mod 'goscript', :git => 'https://github.com/ntnn/puppet-goscript'
6
+
7
+ mod 'inifile',
8
+ :git => 'https://github.com/puppetlabs/puppetlabs-inifile',
9
+ :tag => '1.6.0'
data/exe/puppetfiler CHANGED
@@ -1,5 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ if ENV['COVERAGE']
4
+ # from https://stackoverflow.com/questions/20207667/how-does-one-configure-cucumber-aruba-to-use-simplecov
5
+ require 'simplecov'
6
+
7
+ # As described in the issue, every process must have an unique name:
8
+ SimpleCov.command_name "binary #{Process.pid}"
9
+
10
+ # When running with aruba simplecov was using /tmp/aruba as the root folder.
11
+ # This is to force using the project folder
12
+ SimpleCov.root(File.join(File.expand_path(File.dirname(__FILE__)), '..'))
13
+
14
+ SimpleCov.start do
15
+ filters.clear
16
+
17
+ # Because simplecov filters everything outside of the SimpleCov.root
18
+ # This should be added, cf.
19
+ # https://github.com/colszowka/simplecov#default-root-filter-and-coverage-for-things-outside-of-it
20
+ add_filter do |src|
21
+ !(src.filename =~ /^#{SimpleCov.root}/) unless src.filename =~ /project/
22
+ end
23
+
24
+ # Ignoring test folders and tmp for Aruba
25
+ add_filter '/spec/'
26
+ add_filter '/features/'
27
+ add_filter '/tmp/'
28
+ end
29
+ end
30
+
3
31
  require 'puppetfiler/cli'
4
32
 
5
33
  Puppetfiler::CLI.start
@@ -1,4 +1,5 @@
1
1
  require 'thor'
2
+ require 'yaml'
2
3
  require 'puppetfiler/puppetfile'
3
4
  require 'puppetfiler/version'
4
5
 
@@ -19,7 +20,7 @@ module Puppetfiler
19
20
  desc 'fixture [puppetfile]', 'Create puppetlabs_spec_helper compatible .fixtures.yml from puppetfile'
20
21
  method_option :stdout, :aliases => '-o'
21
22
  def fixture(puppetfile = 'Puppetfile')
22
- f = Puppetfiler::Puppetfile.new(puppetfile).fixture
23
+ f = Puppetfiler::Puppetfile.new(puppetfile).fixture.to_yaml
23
24
 
24
25
  if options[:stdout]
25
26
  puts f
@@ -1,8 +1,12 @@
1
- require 'erb'
2
1
  require 'puppetfiler/mod'
3
2
 
4
3
  module Puppetfiler
5
4
  class Puppetfile
5
+ attr :modules
6
+ attr :repos
7
+ attr :puppetfile
8
+ attr :maxlen_name
9
+
6
10
  def initialize(path = 'Puppetfile')
7
11
  @modules = {}
8
12
  @repos = {}
@@ -11,37 +15,22 @@ module Puppetfiler
11
15
  @maxlen_name = 0
12
16
  @maxlen_ver = 0
13
17
 
14
- # TODO heredocs are ugly, maybe ruby has a way to store them
15
- # elsewhere as .erb
16
- # Also omit forge_modules/repositories if the referring key is
17
- # empty
18
- @fixture_template = <<-EOT
19
- ---
20
- fixtures:
21
- forge_modules:
22
- <% @modules.each do |name, version| -%>
23
- <%= name.split('/')[1] %>:
24
- repo: <%= name %>
25
- ref: <%= version %>
26
- <% end -%>
27
- repositories:
28
- <% @repos.each do |name, hash| -%>
29
- <%= name %>:
30
- repo: <%= hash[:uri] %>
31
- ref: <%= hash[:ref] %>
32
- <% end -%>
33
- EOT
34
-
35
18
  self.evaluate
36
19
  end
37
20
 
38
21
  def evaluate
39
- # TODO add error handling if target doesn't exist
40
- self.instance_eval(File.read(@puppetfile))
41
- end
22
+ if not File.exists?(@puppetfile)
23
+ STDERR.puts "Puppetfile not found at path '#{@puppetfile}'"
24
+ return nil
25
+ end
42
26
 
43
- def maxlen_name
44
- @maxlen_name
27
+ begin
28
+ self.instance_eval(File.read(@puppetfile))
29
+ rescue SyntaxError => error
30
+ STDERR.puts "Puppetfile at path '#{@puppetfile}' is invalid:"
31
+ STDERR.puts error
32
+ return nil
33
+ end
45
34
  end
46
35
 
47
36
  def maxlen_ver
@@ -66,8 +55,63 @@ EOT
66
55
  return updates
67
56
  end
68
57
 
69
- def fixture
70
- ERB.new(@fixture_template, nil, '-').result(binding)
58
+ def fixture(modifiers = {})
59
+ fixtures = {
60
+ 'forge_modules' => {},
61
+ 'repositories' => {},
62
+ }
63
+
64
+ fixtures.each do |k, v|
65
+ modifiers[k] = {} if not modifiers.has_key?(k)
66
+ end
67
+
68
+ @modules.each do |name, version|
69
+ short = name.split('/')[1]
70
+ value = {
71
+ 'repo' => name,
72
+ 'ref' => version,
73
+ }
74
+
75
+ modifiers['forge_modules'].each do |modifier, merger|
76
+ # TODO use x.match?(y) on ruby 2.4
77
+ value.merge!(merger) if name =~ /#{modifier}/
78
+ end
79
+
80
+ fixtures['forge_modules'][short] = value
81
+ end
82
+
83
+ @repos.each do |name, hash|
84
+ if hash.has_key?(:ref)
85
+ content = {
86
+ 'repo' => hash[:uri],
87
+ 'ref' => hash[:ref],
88
+ }
89
+
90
+ modifiers['repositories'].each do |modifier, merger|
91
+ content.merge!(merger) if name =~ /#{modifier}/
92
+ end
93
+ else
94
+ content = hash[:uri]
95
+
96
+ modifiers['repositories'].each do |modifier, merger|
97
+ if name =~ /#{modifier}/
98
+ if merger.is_a?(String)
99
+ content = merger
100
+ else
101
+ content = {
102
+ 'repo' => hash[:uri],
103
+ }
104
+
105
+ content.merge!(merger)
106
+ end
107
+ end
108
+ end
109
+ end
110
+
111
+ fixtures['repositories'][name] = content
112
+ end
113
+
114
+ fixtures
71
115
  end
72
116
 
73
117
  private
@@ -1,3 +1,3 @@
1
1
  module Puppetfiler
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
data/lib/puppetfiler.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'puppetfiler/cli'
2
+ require 'puppetfiler/mod'
3
+ require 'puppetfiler/puppetfile'
1
4
  require 'puppetfiler/version'
2
5
 
3
6
  module Puppetfiler
data/puppetfiler.gemspec CHANGED
@@ -29,6 +29,8 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'cucumber', '~> 2.4'
30
30
  spec.add_development_dependency 'aruba', '~> 0.14.2'
31
31
  spec.add_development_dependency 'pry', '~> 0.10.4'
32
+ spec.add_development_dependency 'simplecov', '~> 0.13.0'
33
+ spec.add_development_dependency 'simplecov-console', '~> 0.4.1'
32
34
 
33
35
  spec.add_dependency 'puppet_forge', '~> 2.2'
34
36
  spec.add_dependency 'semantic_puppet', '~> 0.1.4'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetfiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nelo-T. Wallus
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-03 00:00:00.000000000 Z
11
+ date: 2017-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,6 +94,34 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.10.4
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.13.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.13.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov-console
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.4.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.4.1
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: puppet_forge
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -154,6 +182,7 @@ files:
154
182
  - TODO
155
183
  - bin/console
156
184
  - bin/setup
185
+ - data/simple_puppetfile.rb
157
186
  - exe/puppetfiler
158
187
  - lib/puppetfiler.rb
159
188
  - lib/puppetfiler/cli.rb
@@ -181,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
210
  version: '0'
182
211
  requirements: []
183
212
  rubyforge_project:
184
- rubygems_version: 2.6.10
213
+ rubygems_version: 2.4.5
185
214
  signing_key:
186
215
  specification_version: 4
187
216
  summary: Miscallenous actions on Puppetfiles