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 +4 -4
- data/README.rst +36 -0
- data/Rakefile +10 -0
- data/data/simple_puppetfile.rb +9 -0
- data/exe/puppetfiler +28 -0
- data/lib/puppetfiler/cli.rb +2 -1
- data/lib/puppetfiler/puppetfile.rb +73 -29
- data/lib/puppetfiler/version.rb +1 -1
- data/lib/puppetfiler.rb +3 -0
- data/puppetfiler.gemspec +2 -0
- metadata +32 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a50bc1960b97634408cec4d7e84d25cabbe41f0
|
4
|
+
data.tar.gz: ed068a7360a344ba9d7fceef40f0ef050557cd89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
data/lib/puppetfiler/cli.rb
CHANGED
@@ -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
|
-
|
40
|
-
|
41
|
-
|
22
|
+
if not File.exists?(@puppetfile)
|
23
|
+
STDERR.puts "Puppetfile not found at path '#{@puppetfile}'"
|
24
|
+
return nil
|
25
|
+
end
|
42
26
|
|
43
|
-
|
44
|
-
|
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
|
-
|
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
|
data/lib/puppetfiler/version.rb
CHANGED
data/lib/puppetfiler.rb
CHANGED
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.
|
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-
|
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.
|
213
|
+
rubygems_version: 2.4.5
|
185
214
|
signing_key:
|
186
215
|
specification_version: 4
|
187
216
|
summary: Miscallenous actions on Puppetfiles
|