fpm-cookery 0.32.0 → 0.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +5 -2
  4. data/CHANGELOG.md +19 -0
  5. data/Rakefile +34 -0
  6. data/docs/index.rst +1 -0
  7. data/docs/pages/using-hiera.rst +285 -0
  8. data/fpm-cookery.gemspec +6 -1
  9. data/lib/fpm/cookery/book.rb +29 -2
  10. data/lib/fpm/cookery/book_hook.rb +1 -0
  11. data/lib/fpm/cookery/chain_packager.rb +4 -2
  12. data/lib/fpm/cookery/cli.rb +45 -5
  13. data/lib/fpm/cookery/config.rb +2 -1
  14. data/lib/fpm/cookery/environment.rb +17 -8
  15. data/lib/fpm/cookery/exceptions.rb +3 -1
  16. data/lib/fpm/cookery/facts.rb +50 -35
  17. data/lib/fpm/cookery/hiera.rb +35 -0
  18. data/lib/fpm/cookery/hiera/defaults.rb +50 -0
  19. data/lib/fpm/cookery/hiera/scope.rb +35 -0
  20. data/lib/fpm/cookery/inheritable_attr.rb +222 -0
  21. data/lib/fpm/cookery/log/hiera.rb +21 -0
  22. data/lib/fpm/cookery/omnibus_packager.rb +4 -2
  23. data/lib/fpm/cookery/package/package.rb +1 -0
  24. data/lib/fpm/cookery/package/version.rb +11 -4
  25. data/lib/fpm/cookery/packager.rb +13 -11
  26. data/lib/fpm/cookery/recipe.rb +167 -105
  27. data/lib/fpm/cookery/source.rb +6 -8
  28. data/lib/fpm/cookery/source_handler.rb +18 -3
  29. data/lib/fpm/cookery/source_handler/curl.rb +2 -2
  30. data/lib/fpm/cookery/source_handler/directory.rb +10 -11
  31. data/lib/fpm/cookery/source_handler/noop.rb +1 -2
  32. data/lib/fpm/cookery/source_handler/svn.rb +1 -1
  33. data/lib/fpm/cookery/version.rb +1 -1
  34. data/lib/hiera/fpm_cookery_logger.rb +12 -0
  35. data/recipes/redis/config/common.yaml +11 -0
  36. data/recipes/redis/config/git_2.4.2_tag.yaml +4 -0
  37. data/recipes/redis/config/git_2.4.yaml +4 -0
  38. data/recipes/redis/config/git_sha_072a905.yaml +4 -0
  39. data/recipes/redis/config/svn_r2400.yaml +4 -0
  40. data/recipes/redis/config/svn_trunk.yaml +3 -0
  41. data/recipes/redis/recipe.rb +2 -27
  42. data/spec/book_spec.rb +34 -0
  43. data/spec/config_spec.rb +19 -0
  44. data/spec/environment_spec.rb +37 -0
  45. data/spec/facts_spec.rb +54 -31
  46. data/spec/fixtures/hiera_config/CentOS.yaml +1 -0
  47. data/spec/fixtures/hiera_config/common.yaml +12 -0
  48. data/spec/fixtures/hiera_config/custom.yaml +3 -0
  49. data/spec/fixtures/hiera_config/rpm.yaml +12 -0
  50. data/spec/hiera_spec.rb +158 -0
  51. data/spec/inheritable_attr_spec.rb +202 -0
  52. data/spec/package_dir_spec.rb +37 -0
  53. data/spec/package_maintainer_spec.rb +4 -1
  54. data/spec/package_version_spec.rb +50 -0
  55. data/spec/path_spec.rb +20 -0
  56. data/spec/recipe_spec.rb +161 -56
  57. data/spec/source_integrity_check_spec.rb +7 -6
  58. data/spec/spec_helper.rb +14 -0
  59. data/spec/support/shared_context.rb +71 -0
  60. metadata +108 -4
@@ -1,3 +1,15 @@
1
+ unless RUBY_ENGINE == "rbx"
2
+ require "simplecov"
3
+
4
+ formatters = [SimpleCov::Formatter::HTMLFormatter]
5
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(formatters)
6
+ SimpleCov.start do
7
+ minimum_coverage 75
8
+ add_group "Sources", "lib"
9
+ add_group "Tests", "spec"
10
+ end
11
+ end
12
+
1
13
  RSpec.configure do |config|
2
14
  config.run_all_when_everything_filtered = true
3
15
  config.filter_run :focus
@@ -11,6 +23,8 @@ RSpec.configure do |config|
11
23
  config.raise_errors_for_deprecations!
12
24
  end
13
25
 
26
+ require_relative "support/shared_context"
27
+
14
28
  def fixture_path(file)
15
29
  File.expand_path("../fixtures/#{file}", __FILE__)
16
30
  end
@@ -0,0 +1,71 @@
1
+ require 'fpm/cookery/book'
2
+ require 'fpm/cookery/book_hook'
3
+ require 'fpm/cookery/path'
4
+ require 'fpm/cookery/recipe'
5
+
6
+ shared_context "temporary recipe" do |caller_filename = "recipe.rb", content = nil|
7
+ let(:recipe_filename) { caller_filename }
8
+
9
+ around do |example|
10
+ %w{recipe book book_hook}.each { |m| require "fpm/cookery/#{m}" }
11
+
12
+ FPM::Cookery::BaseRecipe.send(:include, FPM::Cookery::BookHook)
13
+
14
+ Dir.mktmpdir do |tmpdir|
15
+ Dir.chdir tmpdir do
16
+ # Always open in order to ensure that the file exists, but only write
17
+ # if we were actually given some content.
18
+ begin
19
+ File.open(recipe_filename, File::WRONLY | File::CREAT | File::EXCL) do |file|
20
+ file.print content unless content.nil?
21
+ end
22
+
23
+ example.run
24
+ rescue Errno::EEXIST => e
25
+ skip e.message
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ # For setting up the proper framework to instantiate a recipe
33
+ shared_context "recipe class" do |caller_filename, caller_config_options = {}|
34
+ def stub_dir(dir, path)
35
+ value = path.nil? ? nil : FPM::Cookery::Path.new(path)
36
+ allow(config).to receive(dir).and_return(value)
37
+ end
38
+
39
+ before(:all) do
40
+ FPM::Cookery::BaseRecipe.send(:include, FPM::Cookery::BookHook)
41
+ end
42
+
43
+ before(:each) do
44
+ FPM::Cookery::Book.instance.filename = filename
45
+ FPM::Cookery::Book.instance.config = config
46
+ end
47
+
48
+ let(:recipe_klass) do
49
+ Class.new(FPM::Cookery::Recipe)
50
+ end
51
+
52
+ let(:filename) do
53
+ FPM::Cookery::Path.new(caller_filename).realpath
54
+ end
55
+
56
+ let(:config) do
57
+ #double('Config', caller_config_options).as_null_object
58
+ require 'fpm/cookery/config'
59
+ FPM::Cookery::Config.new(caller_config_options)
60
+ end
61
+
62
+ let(:recipe) do
63
+ recipe_klass.new
64
+ end
65
+ end
66
+
67
+ # Instantiate a recipe and build a package
68
+ shared_context "temporary recipe class" do |caller_filename = "recipe.rb", caller_config_options = {}|
69
+ include_context "recipe class", caller_filename, caller_config_options
70
+ include_context "temporary recipe", caller_filename
71
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fpm-cookery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.32.0
4
+ version: 0.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernd Ahlers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-14 00:00:00.000000000 Z
11
+ date: 2017-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '3.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '3.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: fpm
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,60 @@ dependencies:
108
136
  - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: json
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.7.7
146
+ - - "<"
147
+ - !ruby/object:Gem::Version
148
+ version: '2.0'
149
+ type: :runtime
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 1.7.7
156
+ - - "<"
157
+ - !ruby/object:Gem::Version
158
+ version: '2.0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: json_pure
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 1.7.7
166
+ - - "<"
167
+ - !ruby/object:Gem::Version
168
+ version: '2.0'
169
+ type: :runtime
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: 1.7.7
176
+ - - "<"
177
+ - !ruby/object:Gem::Version
178
+ version: '2.0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: safe_yaml
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: 1.0.4
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 1.0.4
111
193
  description: A tool for building software packages with fpm.
112
194
  email:
113
195
  - bernd@tuneafish.de
@@ -129,6 +211,7 @@ files:
129
211
  - docs/conf.py
130
212
  - docs/index.rst
131
213
  - docs/pages/getting-started.rst
214
+ - docs/pages/using-hiera.rst
132
215
  - fpm-cookery.gemspec
133
216
  - lib/fpm/cookery/book.rb
134
217
  - lib/fpm/cookery/book_hook.rb
@@ -139,9 +222,14 @@ files:
139
222
  - lib/fpm/cookery/environment.rb
140
223
  - lib/fpm/cookery/exceptions.rb
141
224
  - lib/fpm/cookery/facts.rb
225
+ - lib/fpm/cookery/hiera.rb
226
+ - lib/fpm/cookery/hiera/defaults.rb
227
+ - lib/fpm/cookery/hiera/scope.rb
228
+ - lib/fpm/cookery/inheritable_attr.rb
142
229
  - lib/fpm/cookery/lifecycle_hooks.rb
143
230
  - lib/fpm/cookery/log.rb
144
231
  - lib/fpm/cookery/log/color.rb
232
+ - lib/fpm/cookery/log/hiera.rb
145
233
  - lib/fpm/cookery/log/output/console.rb
146
234
  - lib/fpm/cookery/log/output/console_color.rb
147
235
  - lib/fpm/cookery/log/output/null.rb
@@ -174,6 +262,7 @@ files:
174
262
  - lib/fpm/cookery/source_integrity_check.rb
175
263
  - lib/fpm/cookery/utils.rb
176
264
  - lib/fpm/cookery/version.rb
265
+ - lib/hiera/fpm_cookery_logger.rb
177
266
  - recipes/arr-pm/recipe.rb
178
267
  - recipes/backports/recipe.rb
179
268
  - recipes/cabin/recipe.rb
@@ -208,13 +297,27 @@ files:
208
297
  - recipes/open4/recipe.rb
209
298
  - recipes/python-requests/recipe.rb
210
299
  - recipes/python-test/recipe.rb
300
+ - recipes/redis/config/common.yaml
301
+ - recipes/redis/config/git_2.4.2_tag.yaml
302
+ - recipes/redis/config/git_2.4.yaml
303
+ - recipes/redis/config/git_sha_072a905.yaml
304
+ - recipes/redis/config/svn_r2400.yaml
305
+ - recipes/redis/config/svn_trunk.yaml
211
306
  - recipes/redis/recipe.rb
212
307
  - recipes/redis/redis-server.init.d
308
+ - spec/book_spec.rb
213
309
  - spec/config_spec.rb
214
310
  - spec/environment_spec.rb
215
311
  - spec/facts_spec.rb
312
+ - spec/fixtures/hiera_config/CentOS.yaml
313
+ - spec/fixtures/hiera_config/common.yaml
314
+ - spec/fixtures/hiera_config/custom.yaml
315
+ - spec/fixtures/hiera_config/rpm.yaml
216
316
  - spec/fixtures/test-config-1.yml
217
317
  - spec/fixtures/test-source-1.0.tar.gz
318
+ - spec/hiera_spec.rb
319
+ - spec/inheritable_attr_spec.rb
320
+ - spec/package_dir_spec.rb
218
321
  - spec/package_gem_spec.rb
219
322
  - spec/package_maintainer_spec.rb
220
323
  - spec/package_spec.rb
@@ -225,6 +328,7 @@ files:
225
328
  - spec/source_integrity_check_spec.rb
226
329
  - spec/source_spec.rb
227
330
  - spec/spec_helper.rb
331
+ - spec/support/shared_context.rb
228
332
  - spec/utils_spec.rb
229
333
  homepage: ''
230
334
  licenses: []