chef-cli 5.5.0 → 5.5.4

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
  SHA256:
3
- metadata.gz: 4fb98307695292507e558f981b1fef57ac24d3bfa3f01ecf5c9359e7726cf21c
4
- data.tar.gz: cffb65b17d8e5c267a8e26d48ca419c5af671a640f5735a2fc2192644506e3d3
3
+ metadata.gz: dfeb3741f305634bdb91164a529d57fda8ba8dd8ee1a74f942e4e38eb521e79f
4
+ data.tar.gz: 5f57c0483c71fc7732ad9fec53ee0954022ac35194ba0f4a5909239c10d17e2d
5
5
  SHA512:
6
- metadata.gz: 878b49ffa71394138f7055ddbae1376ab91276933657dacc674d646c0f1a481c92c48c8f3e2c134eabdda5e731f6b214691a38c79cfa3c72027730c378deada4
7
- data.tar.gz: e587bf24ba23f52dc3ec008efbaeb2c628811e4980d74ecc23eb51e108ab700c352cdb9800189d49470644eb2abf36cfff1f00562e4a2dacc01240a7f83b5968
6
+ metadata.gz: f8dc515d741fe02197afead1faa446a632b6a71f918370df34585c66b33ef8c760b6ff2f7c14bad37cfdeaaa24f3e98a3884065336912fd8b5982039d43012d5
7
+ data.tar.gz: 168e5f6b65ef26172869372c3d2af1f2bc2e0f910ae65c12303d3856d1c4e4dd715a3d1c59ef17067feeea217f03912864f30b5a90e1f6f13e0dc13005a48388
data/Gemfile CHANGED
@@ -19,6 +19,8 @@ group :test do
19
19
  if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7")
20
20
  gem "ohai", "~> 16"
21
21
  end
22
+
23
+ gem "simplecov", require: false
22
24
  end
23
25
 
24
26
  group :development do
@@ -57,7 +57,4 @@ ChefCLI.commands do |c|
57
57
 
58
58
  c.builtin "describe-cookbook", :DescribeCookbook, require_path: "chef-cli/command/describe_cookbook",
59
59
  desc: "Prints cookbook checksum information used for cookbook identifier"
60
-
61
- # deprecated command that throws a failure warning if used. This was removed 4.2019
62
- c.builtin "provision", :Provision, desc: "Provision VMs and clusters via cookbook", hidden: true
63
60
  end
@@ -55,7 +55,6 @@ module ChefCLI
55
55
  generator(:repo, :Repo, "Generate a #{ChefCLI::Dist::INFRA_PRODUCT} code repository")
56
56
  generator(:policyfile, :Policyfile, "Generate a Policyfile for use with the install/push commands")
57
57
  generator(:generator, :GeneratorGenerator, "Copy #{ChefCLI::Dist::PRODUCT}'s generator cookbook so you can customize it")
58
- generator(:'build-cookbook', :BuildCookbook, "DEPRECATED: Generate a build cookbook for use with #{ChefCLI::Dist::WORKFLOW}")
59
58
 
60
59
  def self.banner_headline
61
60
  <<~E
@@ -82,10 +81,6 @@ module ChefCLI
82
81
  end
83
82
 
84
83
  def run(params)
85
- if params[0] == "build-cookbook"
86
- warn "[DEPRECATION] Chef Workflow (Delivery) is end of life (EOL) as of December 31, 2020 and this generator subcommand has been removed".freeze
87
- return 1
88
- end
89
84
  if ( generator_spec = generator_for(params[0]) )
90
85
  params.shift
91
86
  generator = GeneratorCommands.build(generator_spec.class_name, params)
@@ -65,7 +65,7 @@ module ChefCLI
65
65
  option :workflow,
66
66
  short: "-w",
67
67
  long: "--workflow",
68
- description: "DEPRECATED: Generate a cookbook with a full #{ChefCLI::Dist::WORKFLOW} build cookbook.",
68
+ description: "REMOVED: #{ChefCLI::Dist::WORKFLOW} is EOL. This option has been removed.",
69
69
  boolean: true,
70
70
  default: false
71
71
 
@@ -85,7 +85,7 @@ module ChefCLI
85
85
 
86
86
  option :pipeline,
87
87
  long: "--pipeline PIPELINE",
88
- description: "Use PIPELINE to set target branch to something other than master for the #{ChefCLI::Dist::WORKFLOW} build_cookbook",
88
+ description: "REMOVED: #{ChefCLI::Dist::WORKFLOW} is EOL. This option has been removed.",
89
89
  default: "master"
90
90
 
91
91
  options.merge!(SharedGeneratorOptions.options)
@@ -119,17 +119,12 @@ module ChefCLI
119
119
 
120
120
  def emit_post_create_message
121
121
  default_recipe_file = yaml ? "default.yml" : "default.rb"
122
- if have_delivery_config?
123
- msg("Your cookbook is ready. To setup the pipeline, type `cd #{cookbook_name_or_path}`, then run `delivery init`")
124
- else
125
- msg("Your cookbook is ready. Type `cd #{cookbook_name_or_path}` to enter it.")
126
- msg("\nThere are several commands you can run to get started locally developing and testing your cookbook.")
127
- msg("Type `delivery local --help` to see a full list of local testing commands.")
128
- msg("\nWhy not start by writing an InSpec test? Tests for the default recipe are stored at:\n")
129
- msg("test/integration/default/default_test.rb")
130
- msg("\nIf you'd prefer to dive right in, the default recipe can be found at:")
131
- msg("\nrecipes/#{default_recipe_file}\n")
132
- end
122
+ msg("Your cookbook is ready. Type `cd #{cookbook_name_or_path}` to enter it.")
123
+ msg("\nThere are several commands you can run to get started locally developing and testing your cookbook.")
124
+ msg("\nWhy not start by writing an InSpec test? Tests for the default recipe are stored at:\n")
125
+ msg("test/integration/default/default_test.rb")
126
+ msg("\nIf you'd prefer to dive right in, the default recipe can be found at:")
127
+ msg("\nrecipes/#{default_recipe_file}\n")
133
128
  end
134
129
 
135
130
  def setup_context
@@ -143,16 +138,10 @@ module ChefCLI
143
138
  Generator.add_attr_to_context(:policy_run_list, policy_run_list)
144
139
  Generator.add_attr_to_context(:policy_local_cookbook, ".")
145
140
 
146
- Generator.add_attr_to_context(:enable_workflow, enable_workflow?)
147
- Generator.add_attr_to_context(:workflow_project_dir, cookbook_full_path)
148
- Generator.add_attr_to_context(:build_cookbook_parent_is_cookbook, true)
149
- Generator.add_attr_to_context(:workflow_project_git_initialized, have_git? && !cookbook_path_in_git_repo?)
150
-
151
141
  Generator.add_attr_to_context(:verbose, verbose?)
152
142
  Generator.add_attr_to_context(:specs, specs?)
153
143
 
154
144
  Generator.add_attr_to_context(:use_policyfile, policy_mode?)
155
- Generator.add_attr_to_context(:pipeline, pipeline)
156
145
  Generator.add_attr_to_context(:kitchen, kitchen)
157
146
  Generator.add_attr_to_context(:vscode_dir, create_vscode_dir?)
158
147
  Generator.add_attr_to_context(:yaml, yaml)
@@ -162,10 +151,6 @@ module ChefCLI
162
151
  config[:kitchen]
163
152
  end
164
153
 
165
- def pipeline
166
- config[:pipeline]
167
- end
168
-
169
154
  def yaml
170
155
  config[:yaml]
171
156
  end
@@ -202,10 +187,6 @@ module ChefCLI
202
187
  @policy_mode
203
188
  end
204
189
 
205
- def enable_workflow?
206
- config[:workflow]
207
- end
208
-
209
190
  def verbose?
210
191
  @verbose
211
192
  end
@@ -214,22 +195,10 @@ module ChefCLI
214
195
  @specs
215
196
  end
216
197
 
217
- #
218
- # Is there a .delivery/cli.toml in the current dir or any of the parent dirs
219
- #
220
- # @return [Boolean]
221
- #
222
- def have_delivery_config?
223
- # delivery-cli's logic is to look recursively upward for
224
- # .delivery/cli.toml starting from pwd:
225
- # https://github.com/chef/delivery-cli/blob/22cbef3987ebd0aee98405b7e161a100edc87e49/src/delivery/config/mod.rs#L225-L247
226
-
227
- Pathname.pwd.ascend.any? { |path| path.join(".delivery/cli.toml").exist? }
228
- end
229
-
230
198
  def read_and_validate_params
231
199
  arguments = parse_options(params)
232
200
  @cookbook_name_or_path = arguments[0]
201
+
233
202
  if !@cookbook_name_or_path
234
203
  @params_valid = false
235
204
  elsif File.basename(@cookbook_name_or_path).include?("-")
@@ -241,6 +210,11 @@ module ChefCLI
241
210
  @params_valid = false
242
211
  end
243
212
 
213
+ if config[:workflow] || config[:pipeline]
214
+ err("[DEPRECATION] Chef Workflow (Delivery) is end of life (EOL) as of December 31, 2020 and the --workflow and --pipeline flags have been removed")
215
+ @params_valid = false
216
+ end
217
+
244
218
  if config[:berks]
245
219
  @policy_mode = false
246
220
  end
@@ -131,20 +131,6 @@ else
131
131
  end
132
132
  end
133
133
 
134
- # the same will be done below if workflow was enabled so avoid double work and skip this
135
- unless context.enable_workflow
136
- directory "#{cookbook_dir}/.delivery"
137
-
138
- template "#{cookbook_dir}/.delivery/project.toml" do
139
- variables(
140
- specs: context.specs
141
- )
142
- source 'delivery-project.toml.erb'
143
- helpers(ChefCLI::Generator::TemplateHelper)
144
- action :create_if_missing
145
- end
146
- end
147
-
148
134
  # git
149
135
  if context.have_git
150
136
  unless context.skip_git_init
@@ -189,18 +175,3 @@ if context.vscode_dir
189
175
  CONTENT
190
176
  end
191
177
  end
192
-
193
- if context.enable_workflow
194
- warn "\n---------WARNING---------\nThe --workflow flag is deprecated as #{ChefCLI::Dist::WORKFLOW} is EOL as of December 2020.\n\nThis flag will be ignored and will be removed in a future release.\n-------------------------\n\n"
195
- directory "#{cookbook_dir}/.delivery"
196
-
197
- template "#{cookbook_dir}/.delivery/project.toml" do
198
- variables(
199
- specs: context.specs
200
- )
201
- source 'delivery-project.toml.erb'
202
- helpers(ChefCLI::Generator::TemplateHelper)
203
- action :create_if_missing
204
- end
205
-
206
- end
@@ -16,5 +16,5 @@
16
16
  #
17
17
 
18
18
  module ChefCLI
19
- VERSION = "5.5.0".freeze
19
+ VERSION = "5.5.4".freeze
20
20
  end
@@ -66,23 +66,6 @@ shared_examples_for "custom generator cookbook" do
66
66
  end
67
67
  end
68
68
 
69
- context "with an invalid generator-cookbook path" do
70
-
71
- it "fails with an informative error" do
72
- Dir.chdir(tempdir) do
73
- allow(code_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
74
- allow(code_generator).to receive(:stderr).and_return(stderr_io)
75
- expect(code_generator.run).to eq(1)
76
- end
77
-
78
- cookbook_path = File.dirname(generator_cookbook_path)
79
- expected_msg = %Q{ERROR: Could not find cookbook(s) to satisfy run list ["recipe[a_generator_cookbook::#{generator_name}]"] in #{cookbook_path}}
80
-
81
- expect(stderr_io.string).to include(expected_msg)
82
- end
83
-
84
- end
85
-
86
69
  context "with a generator-cookbook path to a specific cookbook" do
87
70
 
88
71
  let(:metadata_file) { File.join(generator_cookbook_path, "metadata.rb") }
@@ -105,32 +88,5 @@ shared_examples_for "custom generator cookbook" do
105
88
  end
106
89
 
107
90
  end
108
-
109
- context "with a generator-cookbook path to a directory containing a 'code_generator' cookbook" do
110
-
111
- before do
112
- FileUtils.mkdir_p(generator_cookbook_path)
113
- FileUtils.cp_r(default_generator_cookbook_path, generator_cookbook_path)
114
-
115
- allow(code_generator).to receive(:stderr).and_return(stderr_io)
116
- end
117
-
118
- it "creates the new_files (and warns about deprecated usage)" do
119
- allow(code_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
120
-
121
- Dir.chdir(tempdir) do
122
- code_generator.run
123
- end
124
- generated_files = Dir.glob("#{tempdir}/#{generator_arg}/**/*", File::FNM_DOTMATCH)
125
- expected_cookbook_files.each do |expected_file|
126
- expect(generated_files).to include(expected_file)
127
- end
128
-
129
- code_generator_path = File.join(generator_cookbook_path, "code_generator")
130
- warning_message = "WARN: Please configure the generator cookbook by giving the full path to the desired cookbook (like '#{code_generator_path}')"
131
-
132
- expect(stderr_io.string).to include(warning_message)
133
- end
134
- end
135
91
  end
136
92
  end
data/spec/spec_helper.rb CHANGED
@@ -24,6 +24,8 @@ require "chef/workstation_config_loader"
24
24
  require "chef/config"
25
25
 
26
26
  require "chef-cli/cli"
27
+ require "simplecov"
28
+ SimpleCov.start
27
29
 
28
30
  RSpec.configure do |c|
29
31
  running_on_windows = (RUBY_PLATFORM =~ /mswin|mingw|windows/)
@@ -137,13 +137,5 @@ describe ChefCLI::Command::Generate do
137
137
  end
138
138
 
139
139
  end
140
-
141
- describe "When build-cookbookis given as subcommand" do
142
- it "shows deprecation warning when" do
143
- result = generate.run(%w{build-cookbook example})
144
- expect(result).to eq(1)
145
- end
146
- end
147
-
148
140
  end
149
141
  end
@@ -87,7 +87,6 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
87
87
  Your cookbook is ready. Type `cd new_cookbook` to enter it.
88
88
 
89
89
  There are several commands you can run to get started locally developing and testing your cookbook.
90
- Type `delivery local --help` to see a full list of local testing commands.
91
90
 
92
91
  Why not start by writing an InSpec test? Tests for the default recipe are stored at:
93
92
 
@@ -152,7 +151,7 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
152
151
  end
153
152
 
154
153
  it "warns if a hyphenated cookbook name is passed" do
155
- expect(with_argv(%w{my-cookbook}).run).to eq(0)
154
+ expect(with_argv(%w{my-cookbook}).run).to eq(1)
156
155
  message = "Hyphens are discouraged in cookbook names as they may cause problems with custom resources. See https://docs.chef.io/workstation/ctl_chef/#chef-generate-cookbook for more information."
157
156
  expect(stdout_io.string).to include(message)
158
157
  end
@@ -177,18 +176,6 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
177
176
  expect(generator_context.specs).to be(false)
178
177
  end
179
178
 
180
- it "creates a new cookbook" do
181
-
182
- Dir.chdir(tempdir) do
183
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
184
- expect(cookbook_generator.run).to eq(0)
185
- end
186
- generated_files = Dir.glob("#{tempdir}/new_cookbook/**/*", File::FNM_DOTMATCH)
187
- expected_cookbook_files.each do |expected_file|
188
- expect(generated_files).to include(expected_file)
189
- end
190
- end
191
-
192
179
  context "when given the specs flag" do
193
180
 
194
181
  let(:argv) { %w{ new_cookbook --specs } }
@@ -198,17 +185,6 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
198
185
  cookbook_generator.setup_context
199
186
  expect(generator_context.specs).to be(true)
200
187
  end
201
-
202
- it "creates a new cookbook" do
203
- Dir.chdir(tempdir) do
204
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
205
- expect(cookbook_generator.run).to eq(0)
206
- end
207
- generated_files = Dir.glob("#{tempdir}/new_cookbook/**/*", File::FNM_DOTMATCH)
208
- expected_cookbook_files_specs.each do |expected_file|
209
- expect(generated_files).to include(expected_file)
210
- end
211
- end
212
188
  end
213
189
 
214
190
  context "when given the verbose flag" do
@@ -220,34 +196,19 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
220
196
  cookbook_generator.setup_context
221
197
  expect(generator_context.verbose).to be(true)
222
198
  end
223
-
224
- it "emits verbose output" do
225
- Dir.chdir(tempdir) do
226
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
227
- expect(cookbook_generator.run).to eq(0)
228
- end
229
-
230
- # The normal chef formatter puts a heading for each recipe like this.
231
- # Full output is large and subject to change with minor changes in the
232
- # generator cookbook, so we just look for this line
233
- expected_line = "Recipe: code_generator::cookbook"
234
-
235
- actual = stdout_io.string
236
-
237
- expect(actual).to include(expected_line)
238
- end
239
199
  end
240
200
 
241
201
  shared_examples_for "a generated file" do |context_var|
242
202
  before do
243
203
  Dir.chdir(tempdir) do
244
204
  allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
245
- expect(cookbook_generator.run).to eq(0)
205
+ expect(cookbook_generator.run).to eq(1)
246
206
  end
247
207
  end
248
208
 
249
- it "should contain #{context_var} from the generator context" do
250
- expect(File.read(file)).to match line
209
+ it "should not generate a file" do
210
+ expect(File.directory?(file)).to be false
211
+ expect(File).not_to exist(file)
251
212
  end
252
213
  end
253
214
 
@@ -267,297 +228,6 @@ describe ChefCLI::Command::GeneratorCommands::Cookbook do
267
228
  end
268
229
  end
269
230
 
270
- # This shared example group requires a let binding for
271
- # `expected_kitchen_yml_content`
272
- shared_examples_for "kitchen_yml_and_integration_tests" do
273
-
274
- describe "Generating Test Kitchen and integration testing files" do
275
-
276
- describe "generating kitchen config" do
277
-
278
- before do
279
- Dir.chdir(tempdir) do
280
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
281
- expect(cookbook_generator.run).to eq(0)
282
- end
283
- end
284
-
285
- let(:file) { File.join(tempdir, "new_cookbook", "kitchen.yml") }
286
-
287
- it "creates a kitchen.yml with the expected content" do
288
- expect(IO.read(file)).to eq(expected_kitchen_yml_content)
289
- end
290
-
291
- end
292
-
293
- describe "test/integration/default/default_test.rb" do
294
- let(:file) { File.join(tempdir, "new_cookbook", "test", "integration", "default", "default_test.rb") }
295
-
296
- include_examples "a generated file", :cookbook_name do
297
- let(:line) { "describe port" }
298
- end
299
- end
300
- end
301
- end
302
-
303
- # This shared example group requires you to define a let binding for
304
- # `expected_chefspec_spec_helper_content`
305
- shared_examples_for "chefspec_spec_helper_file" do
306
-
307
- describe "Generating ChefSpec files" do
308
-
309
- before do
310
- Dir.chdir(tempdir) do
311
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
312
- expect(cookbook_generator.run).to eq(0)
313
- end
314
- end
315
-
316
- let(:file) { File.join(tempdir, "new_cookbook", "spec", "spec_helper.rb") }
317
-
318
- it "creates a spec/spec_helper.rb for ChefSpec with the expected content" do
319
- expect(IO.read(file)).to eq(expected_chefspec_spec_helper_content)
320
- end
321
-
322
- end
323
-
324
- end
325
-
326
- context "when configured for Policyfiles" do
327
-
328
- let(:argv) { %w{new_cookbook --policy} }
329
-
330
- describe "Policyfile.rb" do
331
-
332
- let(:file) { File.join(tempdir, "new_cookbook", "Policyfile.rb") }
333
-
334
- let(:expected_content) do
335
- <<~POLICYFILE_RB
336
- # Policyfile.rb - Describe how you want Chef Infra Client to build your system.
337
- #
338
- # For more information on the Policyfile feature, visit
339
- # https://docs.chef.io/policyfile/
340
-
341
- # A name that describes what the system you're building with Chef does.
342
- name 'new_cookbook'
343
-
344
- # Where to find external cookbooks:
345
- default_source :supermarket
346
-
347
- # run_list: chef-client will run these recipes in the order specified.
348
- run_list 'new_cookbook::default'
349
-
350
- # Specify a custom source for a single cookbook:
351
- cookbook 'new_cookbook', path: '.'
352
- POLICYFILE_RB
353
- end
354
-
355
- before do
356
- Dir.chdir(tempdir) do
357
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
358
- expect(cookbook_generator.run).to eq(0)
359
- end
360
- end
361
-
362
- it "has a run_list and cookbook path that will work out of the box" do
363
- expect(IO.read(file)).to eq(expected_content)
364
- end
365
-
366
- end
367
-
368
- include_examples "kitchen_yml_and_integration_tests" do
369
-
370
- let(:expected_kitchen_yml_content) do
371
- <<~KITCHEN_YML
372
- ---
373
- driver:
374
- name: vagrant
375
-
376
- ## The forwarded_port port feature lets you connect to ports on the VM guest
377
- ## via localhost on the host.
378
- ## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
379
-
380
- # network:
381
- # - ["forwarded_port", {guest: 80, host: 8080}]
382
-
383
- provisioner:
384
- name: chef_zero
385
-
386
- ## product_name and product_version specifies a specific Chef product and version to install.
387
- ## see the Chef documentation for more details: https://docs.chef.io/workstation/config_yml_kitchen/
388
- # product_name: chef
389
- # product_version: 17
390
-
391
- verifier:
392
- name: inspec
393
-
394
- platforms:
395
- - name: ubuntu-20.04
396
- - name: centos-8
397
-
398
- suites:
399
- - name: default
400
- verifier:
401
- inspec_tests:
402
- - test/integration/default
403
- KITCHEN_YML
404
- end
405
-
406
- end
407
-
408
- include_examples "chefspec_spec_helper_file" do
409
- let(:argv) { %w{ new_cookbook --policy --specs } }
410
-
411
- let(:expected_chefspec_spec_helper_content) do
412
- <<~SPEC_HELPER
413
- require 'chefspec'
414
- require 'chefspec/policyfile'
415
- SPEC_HELPER
416
- end
417
-
418
- end
419
-
420
- end
421
-
422
- context "when YAML recipe flag is passed" do
423
-
424
- let(:argv) { %w{new_cookbook --yaml} }
425
-
426
- describe "recipes/default.yml" do
427
- let(:file) { File.join(tempdir, "new_cookbook", "recipes", "default.yml") }
428
-
429
- let(:expected_content_header) do
430
- <<~DEFAULT_YML_HEADER
431
- #
432
- # Cookbook:: new_cookbook
433
- # Recipe:: default
434
- #
435
- DEFAULT_YML_HEADER
436
- end
437
-
438
- let(:expected_content) do
439
- <<~DEFAULT_YML_CONTENT
440
- ---
441
- resources:
442
- # Example Syntax
443
- # Additional snippets are available using the Chef Infra Extension for Visual Studio Code
444
- # - type: file
445
- # name: '/path/to/file'
446
- # content: 'content'
447
- # owner: 'root'
448
- # group: 'root'
449
- # mode: '0755'
450
- # action:
451
- # - create
452
- DEFAULT_YML_CONTENT
453
- end
454
-
455
- before do
456
- Dir.chdir(tempdir) do
457
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
458
- expect(cookbook_generator.run).to eq(0)
459
- end
460
- end
461
-
462
- it "has a default.yml file with template contents" do
463
- expect(IO.read(file)).to match(expected_content_header)
464
- expect(IO.read(file)).to match(expected_content)
465
- end
466
-
467
- end
468
-
469
- end
470
-
471
- context "when configured for Berkshelf" do
472
-
473
- let(:argv) { %w{new_cookbook --berks} }
474
-
475
- describe "Berksfile" do
476
-
477
- let(:file) { File.join(tempdir, "new_cookbook", "Berksfile") }
478
-
479
- let(:expected_content) do
480
- <<~POLICYFILE_RB
481
- source 'https://supermarket.chef.io'
482
-
483
- metadata
484
- POLICYFILE_RB
485
- end
486
-
487
- before do
488
- Dir.chdir(tempdir) do
489
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
490
- expect(cookbook_generator.run).to eq(0)
491
- end
492
- end
493
-
494
- it "pulls deps from metadata" do
495
- expect(IO.read(file)).to eq(expected_content)
496
- end
497
-
498
- end
499
-
500
- include_examples "kitchen_yml_and_integration_tests" do
501
-
502
- let(:expected_kitchen_yml_content) do
503
- <<~KITCHEN_YML
504
- ---
505
- driver:
506
- name: vagrant
507
-
508
- ## The forwarded_port port feature lets you connect to ports on the VM guest via
509
- ## localhost on the host.
510
- ## see also: https://www.vagrantup.com/docs/networking/forwarded_ports
511
-
512
- # network:
513
- # - ["forwarded_port", {guest: 80, host: 8080}]
514
-
515
- provisioner:
516
- name: chef_zero
517
- # You may wish to disable always updating cookbooks in CI or other testing environments.
518
- # For example:
519
- # always_update_cookbooks: <%= !ENV['CI'] %>
520
- always_update_cookbooks: true
521
-
522
- ## product_name and product_version specifies a specific Chef product and version to install.
523
- ## see the Chef documentation for more details: https://docs.chef.io/workstation/config_yml_kitchen/
524
- # product_name: chef
525
- # product_version: 17
526
-
527
- verifier:
528
- name: inspec
529
-
530
- platforms:
531
- - name: ubuntu-20.04
532
- - name: centos-8
533
-
534
- suites:
535
- - name: default
536
- run_list:
537
- - recipe[new_cookbook::default]
538
- verifier:
539
- inspec_tests:
540
- - test/integration/default
541
- attributes:
542
- KITCHEN_YML
543
- end
544
-
545
- end
546
-
547
- include_examples "chefspec_spec_helper_file" do
548
- let(:argv) { %w{ new_cookbook --berks --specs } }
549
-
550
- let(:expected_chefspec_spec_helper_content) do
551
- <<~SPEC_HELPER
552
- require 'chefspec'
553
- require 'chefspec/berkshelf'
554
- SPEC_HELPER
555
- end
556
-
557
- end
558
-
559
- end
560
-
561
231
  describe "metadata.rb" do
562
232
  let(:file) { File.join(tempdir, "new_cookbook", "metadata.rb") }
563
233
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.0
4
+ version: 5.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-06 00:00:00.000000000 Z
11
+ date: 2022-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-cli
@@ -254,7 +254,6 @@ files:
254
254
  - lib/chef-cli/command/generator_commands/resource.rb
255
255
  - lib/chef-cli/command/generator_commands/template.rb
256
256
  - lib/chef-cli/command/install.rb
257
- - lib/chef-cli/command/provision.rb
258
257
  - lib/chef-cli/command/push.rb
259
258
  - lib/chef-cli/command/push_archive.rb
260
259
  - lib/chef-cli/command/shell_init.rb
@@ -330,7 +329,6 @@ files:
330
329
  - lib/chef-cli/skeletons/code_generator/files/default/chefignore
331
330
  - lib/chef-cli/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md
332
331
  - lib/chef-cli/skeletons/code_generator/files/default/cookbook_readmes/README.md
333
- - lib/chef-cli/skeletons/code_generator/files/default/delivery-project.toml
334
332
  - lib/chef-cli/skeletons/code_generator/files/default/gitignore
335
333
  - lib/chef-cli/skeletons/code_generator/files/default/repo/README.md
336
334
  - lib/chef-cli/skeletons/code_generator/files/default/repo/cookbooks/example/README.md
@@ -367,7 +365,6 @@ files:
367
365
  - lib/chef-cli/skeletons/code_generator/templates/default/README.md.erb
368
366
  - lib/chef-cli/skeletons/code_generator/templates/default/attribute.rb.erb
369
367
  - lib/chef-cli/skeletons/code_generator/templates/default/cookbook_file.erb
370
- - lib/chef-cli/skeletons/code_generator/templates/default/delivery-project.toml.erb
371
368
  - lib/chef-cli/skeletons/code_generator/templates/default/helpers.rb.erb
372
369
  - lib/chef-cli/skeletons/code_generator/templates/default/inspec_default_test.rb.erb
373
370
  - lib/chef-cli/skeletons/code_generator/templates/default/kitchen.yml.erb
@@ -1,36 +0,0 @@
1
- #
2
- # Copyright:: Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require_relative "base"
19
- require_relative "../chef_runner"
20
- require_relative "../dist"
21
-
22
- module ChefCLI
23
-
24
- module Command
25
-
26
- class Provision < Base
27
-
28
- banner("DEPRECATED: Chef provisioning has been removed from #{ChefCLI::Dist::PRODUCT}. If you require Chef Provisioning you will need to install an earlier version of these products!")
29
-
30
- def run(params = [])
31
- raise "Chef provisioning has been removed from #{ChefCLI::Dist::PRODUCT}. If you require Chef Provisioning you will need to install an earlier version of these products!"
32
- end
33
-
34
- end
35
- end
36
- end
@@ -1,32 +0,0 @@
1
- # Delivery for Local Phases Execution
2
- #
3
- # This file allows you to execute test phases locally on a workstation or
4
- # in a CI pipeline. The delivery-cli will read this file and execute the
5
- # command(s) that are configured for each phase. You can customize them
6
- # by just modifying the phase key on this file.
7
- #
8
- # By default these phases are configured for Cookbook Workflow only
9
- #
10
-
11
- [local_phases]
12
- unit = "chef exec rspec spec/"
13
- lint = "chef exec cookstyle"
14
- # foodcritic has been deprecated in favor of cookstyle so we skip the syntax
15
- # phase now.
16
- syntax = "echo skipping syntax phase. Use lint phase instead."
17
- provision = "chef exec kitchen create"
18
- deploy = "chef exec kitchen converge"
19
- smoke = "chef exec kitchen verify"
20
- # The functional phase is optional, you can define it by uncommenting
21
- # the line below and running the command: `delivery local functional`
22
- # functional = ""
23
- cleanup = "chef exec kitchen destroy"
24
-
25
- # Remote project.toml file
26
- #
27
- # Instead of the local phases above, you may specify a remote URI location for
28
- # the `project.toml` file. This is useful for teams that wish to centrally
29
- # manage the behavior of the `delivery local` command across many different
30
- # projects.
31
- #
32
- # remote_file = "https://url/project.toml"
@@ -1,36 +0,0 @@
1
- # Delivery for Local Phases Execution
2
- #
3
- # This file allows you to execute test phases locally on a workstation or
4
- # in a CI pipeline. The delivery-cli will read this file and execute the
5
- # command(s) that are configured for each phase. You can customize them
6
- # by just modifying the phase key on this file.
7
- #
8
- # By default these phases are configured for Cookbook Workflow only
9
- #
10
-
11
- [local_phases]
12
- <% if @specs %>
13
- unit = "chef exec rspec spec/"
14
- <% else %>
15
- unit = "echo skipping unit phase."
16
- <% end %>
17
- lint = "chef exec cookstyle"
18
- # foodcritic has been deprecated in favor of cookstyle so we skip the syntax
19
- # phase now.
20
- syntax = "echo skipping syntax phase. Use lint phase instead."
21
- provision = "chef exec kitchen create"
22
- deploy = "chef exec kitchen converge"
23
- smoke = "chef exec kitchen verify"
24
- # The functional phase is optional, you can define it by uncommenting
25
- # the line below and running the command: `delivery local functional`
26
- # functional = ""
27
- cleanup = "chef exec kitchen destroy"
28
-
29
- # Remote project.toml file
30
- #
31
- # Instead of the local phases above, you may specify a remote URI location for
32
- # the `project.toml` file. This is useful for teams that wish to centrally
33
- # manage the behavior of the `delivery local` command across many different
34
- # projects.
35
- #
36
- # remote_file = "https://url/project.toml"