packer-config 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 640bd565ae84e2e9346f9e3a5cb0f323f041150c
4
- data.tar.gz: 5f695eb2687ca6a915cb3eb19fea6f41af858759
3
+ metadata.gz: bdd9616df0548b2607fc93a93880270f58ca46fa
4
+ data.tar.gz: 9a184d7d17f0a6682aefd1f17fbf3d66a53978ff
5
5
  SHA512:
6
- metadata.gz: ab824fc394e16948c945c1de6914c5bbb68cc9d741bae62776a09efcfd1d7d3793927c61425dd541f8c5ee25efd8c5392d7a853a778a03a8cfa44debddbfe0ca
7
- data.tar.gz: 5ef5968062edb9298a75f5af20a5da17d1b2ccb415a4770277719395f1d5d1cd8364af456d6125bdabc67a06bdd6a9675abff2f070dd23e89f87cf6d0aaa18e4
6
+ metadata.gz: c3b494a1807f093cd67c9e700d9c622941cef01b5c3d613aa74f59d55ada1665372deac186da75fbc224c49adbc31d6a8f636a3509e3993804729de9465cd2df
7
+ data.tar.gz: d93976dd629da5c2437d2f071e51ad4db552fe886adf388a231de2a015f8db473216deb74e4950bba610a9187e1f460c140902ddcd9a488f380929c0768c4f50
@@ -43,7 +43,7 @@ Metrics/AbcSize:
43
43
  # Offense count: 4
44
44
  # Configuration parameters: CountComments.
45
45
  Metrics/ClassLength:
46
- Max: 137
46
+ Max: 150
47
47
 
48
48
  # Offense count: 7
49
49
  # Configuration parameters: CountComments.
data/Gemfile CHANGED
@@ -1,3 +1,13 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ group :development, :test do
4
+ gem 'bundler', '~> 1.11'
5
+ gem 'rake', '~> 10.5'
6
+ gem 'rspec', '~> 3.4'
7
+ gem 'rspec-mocks', '~> 3.4'
8
+ gem 'fakefs', '~> 0.7'
9
+ gem 'rubocop', '~> 0.36'
10
+ gem 'rubygems-tasks', '~> 0.2'
11
+ end
12
+
3
13
  gemspec
data/README.md CHANGED
@@ -13,7 +13,7 @@ model to build the Packer configurations in that would easily write to the
13
13
  correct JSON format. It also saved me having to remember the esoteric Packer
14
14
  syntax for referencing variables and whatnot in the JSON.
15
15
 
16
- Bonus: you can really go to town with templates when it's all done it Ruby.
16
+ Bonus: you can really go to town with templates when it's all done in Ruby.
17
17
 
18
18
  ## Installation
19
19
 
@@ -1,8 +1,12 @@
1
1
  # packer-config Release Notes
2
2
 
3
+ ## 1.6.0
4
+
5
+ * Support for running Packer on Windows!
6
+
3
7
  ## 1.5.0
4
8
 
5
- * Adds json object support the the chef-solo provisioner (via [enzo][]).
9
+ * Adds json object support the the chef-solo provisioner (via [enzor][]).
6
10
  * Fixes Travis-CI setup so tests work with newer bundler
7
11
 
8
12
  ## 1.4.0
@@ -8,7 +8,7 @@ require 'packer/postprocessor'
8
8
  require 'packer/macro'
9
9
  require 'packer/envvar'
10
10
  require 'packer/version'
11
- require 'lowered/expectations'
11
+ require 'rubygems/dependency'
12
12
 
13
13
  module Packer
14
14
  class Config < Packer::DataObject
@@ -21,7 +21,7 @@ module Packer
21
21
  attr_reader :envvar
22
22
  attr_reader :output_file
23
23
 
24
- PACKER_VERSION = '0.8.5'
24
+ PACKER_VERSION = '0.9.0'
25
25
 
26
26
  def initialize(file)
27
27
  super()
@@ -39,7 +39,7 @@ module Packer
39
39
  def validate
40
40
  super
41
41
  verify_packer_version
42
- if self.builders.length == 0
42
+ if self.builders.empty?
43
43
  raise DataValidationError.new("At least one builder is required")
44
44
  end
45
45
  self.builders.each(&:validate)
@@ -67,13 +67,13 @@ module Packer
67
67
  self.builders.each do |thing|
68
68
  data_copy['builders'].push(thing.deep_copy)
69
69
  end
70
- if self.provisioners.length > 0
70
+ unless self.provisioners.empty?
71
71
  data_copy['provisioners'] = []
72
72
  self.provisioners.each do |thing|
73
73
  data_copy['provisioners'].push(thing.deep_copy)
74
74
  end
75
75
  end
76
- if self.postprocessors.length > 0
76
+ unless self.postprocessors.empty?
77
77
  data_copy['post-processors'] = []
78
78
  self.postprocessors.each do |thing|
79
79
  data_copy['post-processors'].push(thing.deep_copy)
@@ -159,19 +159,22 @@ module Packer
159
159
  "{{user `#{name}`}}"
160
160
  end
161
161
 
162
- private
163
-
164
- attr_writer :output_file
165
- attr_writer :macro
166
- attr_writer :envvar
162
+ def verify_packer_version
163
+ min_packer_version PACKER_VERSION
164
+ version = /Packer v(\d+\.\d+\.\d+)/.match(
165
+ Packer::Runner.run!(packer, 'version', quiet: true)
166
+ )[1]
167
+ Gem::Dependency.new('', ">= #{PACKER_VERSION}").match?('', version) || raise("Packer version #{version} is not new enough (requires >= #{PACKER_VERSION})")
168
+ end
167
169
 
168
170
  def min_packer_version(version)
169
171
  self.__add_string('min_packer_version', version)
170
172
  end
171
173
 
172
- def verify_packer_version
173
- min_packer_version PACKER_VERSION
174
- LoweredExpectations.expect('packer', ">= #{PACKER_VERSION}", vopt: 'version')
175
- end
174
+ private
175
+
176
+ attr_writer :output_file
177
+ attr_writer :macro
178
+ attr_writer :envvar
176
179
  end
177
180
  end
@@ -24,7 +24,7 @@ module Packer
24
24
 
25
25
  def validate_required
26
26
  self.required.each do |r|
27
- if (r.is_a? Array) && (r.length > 0)
27
+ if (r.is_a? Array) && !r.empty?
28
28
  if r.length - (r - self.data.keys).length == 0
29
29
  raise DataValidationError.new("Missing one required setting from the set #{r}")
30
30
  end
@@ -1,3 +1,3 @@
1
1
  module Packer
2
- VERSION = "1.5.0"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -4,10 +4,10 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'packer/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "packer-config"
7
+ spec.name = 'packer-config'
8
8
  spec.version = Packer::VERSION
9
9
  spec.authors = ["Ian Chesal", "Fraser Cobb", "Greg Poirier", "Matasano Security", "Greg Diamond", "Enzo Rivello"]
10
- spec.email = ["ian.chesal@gmail.com"]
10
+ spec.email = %w(ian.chesal@gmail.com)
11
11
  spec.summary = 'An object model to build packer.io configurations in Ruby.'
12
12
  spec.description = <<-END
13
13
  Building the Packer JSON configurations in raw JSON can be quite an adventure.
@@ -17,22 +17,12 @@ model to build the Packer configurations in that would easily write to the
17
17
  correct JSON format. It also saved me having to remember the esoteric Packer
18
18
  syntax for referencing variables and whatnot in the JSON.
19
19
  END
20
- spec.homepage = "https://github.com/ianchesal/packer-config"
21
- spec.license = "Apache 2.0"
20
+ spec.homepage = 'https://github.com/ianchesal/packer-config'
21
+ spec.license = 'Apache 2.0'
22
22
  spec.required_ruby_version = '>= 2.0.0'
23
23
 
24
24
  spec.files = `git ls-files -z`.split("\x0")
25
25
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
26
26
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
27
- spec.require_paths = ["lib"]
28
-
29
- spec.add_runtime_dependency "lowered-expectations", '~> 1'
30
-
31
- spec.add_development_dependency "bundler", "~> 1.11"
32
- spec.add_development_dependency "rake", "~> 10.5"
33
- spec.add_development_dependency "rspec", "~> 3.4"
34
- spec.add_development_dependency "rspec-mocks", "~> 3.4"
35
- spec.add_development_dependency "fakefs", "~> 0.7"
36
- spec.add_development_dependency "rubocop", "~> 0.36"
37
- spec.add_development_dependency "rubygems-tasks", "~> 0.2"
27
+ spec.require_paths = %w(lib)
38
28
  end
@@ -104,7 +104,7 @@ RSpec.describe Packer::Provisioner do
104
104
  end
105
105
 
106
106
  describe '#module_paths' do
107
- it 'accepts an array of strings'do
107
+ it 'accepts an array of strings' do
108
108
  provisioner.module_paths(some_array_of_strings)
109
109
  expect(provisioner.data['module_paths']).to eq(some_array_of_strings)
110
110
  provisioner.data.delete('module_paths')
@@ -138,4 +138,4 @@ RSpec.describe Packer::Provisioner do
138
138
  provisioner.data.delete('staging_directory')
139
139
  end
140
140
  end
141
- end
141
+ end
@@ -20,32 +20,13 @@ RSpec.describe Packer::Config do
20
20
 
21
21
  describe "#validate" do
22
22
  it 'returns true for a valid instance' do
23
- expect(packer.builders).to receive(:length).and_return(1)
23
+ expect(packer.builders).to receive(:empty?).and_return(false)
24
24
  expect(Packer::Runner).to receive(:run!).and_return('')
25
- expect(LoweredExpectations).to receive(:expect).and_return(true)
25
+ expect(packer).to receive(:verify_packer_version).and_return(true)
26
26
  FakeFS do
27
27
  expect(packer.validate).to be_truthy
28
28
  end
29
29
  end
30
-
31
- it 'raises an error for an invalid instance' do
32
- expect(packer.builders).to receive(:length).and_return(0)
33
- expect(LoweredExpectations).to receive(:expect).and_return(true)
34
- FakeFS do
35
- expect { packer.validate }.to raise_error
36
- end
37
- end
38
-
39
- it 'sets the minimum Packer version' do
40
- expect(packer.builders).to receive(:length).and_return(1)
41
- expect(Packer::Runner).to receive(:run!).and_return('')
42
- expect(LoweredExpectations).to receive(:expect).and_return(true)
43
- expect(packer.data['min_packer_version']).to be_falsey
44
- FakeFS do
45
- expect(packer.validate).to be_truthy
46
- end
47
- expect(packer.data['min_packer_version']).to eq(Packer::Config::PACKER_VERSION)
48
- end
49
30
  end
50
31
 
51
32
  describe '#dump' do
@@ -190,4 +171,16 @@ RSpec.describe Packer::Config do
190
171
  expect(packer.macro.var).to eq('{{ .Var }}')
191
172
  end
192
173
  end
174
+
175
+ describe '#verify_packer_version' do
176
+ it 'validates Packer is a high enough version' do
177
+ expect(Packer::Runner).to receive(:run!).and_return('Packer v1.0.0')
178
+ expect(packer.verify_packer_version).to be_truthy
179
+ end
180
+
181
+ it 'raises an error if the version of Packer is not high enough' do
182
+ expect(Packer::Runner).to receive(:run!).and_return('Packer v0.0.1')
183
+ expect{ packer.verify_packer_version }.to raise_error
184
+ end
185
+ end
193
186
  end
@@ -1,3 +1,5 @@
1
1
  require 'rubocop/rake_task'
2
2
 
3
- RuboCop::RakeTask.new(:lint)
3
+ RuboCop::RakeTask.new(:lint) do |tsk|
4
+ tsk.options = ['-D'] # display cop name
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packer-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Chesal
@@ -13,120 +13,8 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-01-27 00:00:00.000000000 Z
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: lowered-expectations
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - "~>"
23
- - !ruby/object:Gem::Version
24
- version: '1'
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - "~>"
30
- - !ruby/object:Gem::Version
31
- version: '1'
32
- - !ruby/object:Gem::Dependency
33
- name: bundler
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - "~>"
37
- - !ruby/object:Gem::Version
38
- version: '1.11'
39
- type: :development
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- requirements:
43
- - - "~>"
44
- - !ruby/object:Gem::Version
45
- version: '1.11'
46
- - !ruby/object:Gem::Dependency
47
- name: rake
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '10.5'
53
- type: :development
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '10.5'
60
- - !ruby/object:Gem::Dependency
61
- name: rspec
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '3.4'
67
- type: :development
68
- prerelease: false
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '3.4'
74
- - !ruby/object:Gem::Dependency
75
- name: rspec-mocks
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '3.4'
81
- type: :development
82
- prerelease: false
83
- version_requirements: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '3.4'
88
- - !ruby/object:Gem::Dependency
89
- name: fakefs
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '0.7'
95
- type: :development
96
- prerelease: false
97
- version_requirements: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '0.7'
102
- - !ruby/object:Gem::Dependency
103
- name: rubocop
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '0.36'
109
- type: :development
110
- prerelease: false
111
- version_requirements: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '0.36'
116
- - !ruby/object:Gem::Dependency
117
- name: rubygems-tasks
118
- requirement: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '0.2'
123
- type: :development
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '0.2'
16
+ date: 2016-04-08 00:00:00.000000000 Z
17
+ dependencies: []
130
18
  description: |
131
19
  Building the Packer JSON configurations in raw JSON can be quite an adventure.
132
20
  There's limited facilities for variable expansion and absolutely no support for
@@ -252,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
140
  version: '0'
253
141
  requirements: []
254
142
  rubyforge_project:
255
- rubygems_version: 2.5.1
143
+ rubygems_version: 2.4.6
256
144
  signing_key:
257
145
  specification_version: 4
258
146
  summary: An object model to build packer.io configurations in Ruby.