chef-dk 0.13.21 → 0.14.25
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/CONTRIBUTING.md +186 -186
- data/Gemfile +37 -14
- data/Gemfile.lock +178 -72
- data/LICENSE +201 -201
- data/README.md +11 -148
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +288 -288
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +2 -1
- data/acceptance/Gemfile.lock +39 -42
- data/acceptance/README.md +132 -132
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -5
- data/bin/chef +25 -25
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +40 -40
- data/lib/chef-dk/chef_runner.rb +107 -107
- data/lib/chef-dk/cli.rb +200 -200
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
- data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
- data/lib/chef-dk/command/delete_policy.rb +122 -122
- data/lib/chef-dk/command/delete_policy_group.rb +122 -122
- data/lib/chef-dk/command/diff.rb +316 -316
- data/lib/chef-dk/command/env.rb +90 -90
- data/lib/chef-dk/command/exec.rb +45 -45
- data/lib/chef-dk/command/export.rb +157 -157
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +120 -120
- data/lib/chef-dk/command/generator_commands.rb +83 -80
- data/lib/chef-dk/command/generator_commands/app.rb +107 -107
- data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
- data/lib/chef-dk/command/generator_commands/base.rb +148 -148
- data/lib/chef-dk/command/generator_commands/cookbook.rb +153 -153
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
- data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +121 -121
- data/lib/chef-dk/command/provision.rb +438 -438
- data/lib/chef-dk/command/push.rb +118 -118
- data/lib/chef-dk/command/push_archive.rb +126 -126
- data/lib/chef-dk/command/shell_init.rb +180 -180
- data/lib/chef-dk/command/show_policy.rb +165 -165
- data/lib/chef-dk/command/undelete.rb +155 -155
- data/lib/chef-dk/command/update.rb +148 -148
- data/lib/chef-dk/command/verify.rb +106 -29
- data/lib/chef-dk/completions/bash.sh.erb +5 -5
- data/lib/chef-dk/completions/chef.fish.erb +10 -10
- data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
- data/lib/chef-dk/component_test.rb +30 -1
- data/lib/chef-dk/configurable.rb +69 -69
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
- data/lib/chef-dk/exceptions.rb +129 -129
- data/lib/chef-dk/generator.rb +163 -163
- data/lib/chef-dk/helpers.rb +159 -159
- data/lib/chef-dk/pager.rb +106 -106
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
- data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -22
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
- data/lib/chef-dk/policyfile/differ.rb +266 -266
- data/lib/chef-dk/policyfile/dsl.rb +261 -261
- data/lib/chef-dk/policyfile/lister.rb +232 -232
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +70 -70
- data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
- data/lib/chef-dk/policyfile/storage_config.rb +100 -100
- data/lib/chef-dk/policyfile/undo_record.rb +142 -142
- data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +419 -419
- data/lib/chef-dk/policyfile_lock.rb +552 -552
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
- data/lib/chef-dk/policyfile_services/export_repo.rb +421 -421
- data/lib/chef-dk/policyfile_services/install.rb +126 -126
- data/lib/chef-dk/policyfile_services/push.rb +114 -114
- data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
- data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
- data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
- data/lib/chef-dk/service_exception_inspectors.rb +25 -25
- data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
- data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
- data/lib/chef-dk/service_exceptions.rb +143 -143
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +117 -117
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/{LICENSE.apache2.erb → LICENSE.apachev2.erb} +201 -201
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
- data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
- data/lib/chef-dk/ui.rb +58 -58
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +19 -11
- data/spec/shared/a_file_generator.rb +125 -125
- data/spec/shared/a_generated_file.rb +12 -12
- data/spec/shared/command_with_ui_object.rb +11 -11
- data/spec/shared/custom_generator_cookbook.rb +130 -130
- data/spec/shared/fixture_cookbook_checksums.rb +47 -47
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +51 -51
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +139 -139
- data/spec/unit/cli_spec.rb +357 -357
- data/spec/unit/command/base_spec.rb +173 -169
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
- data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
- data/spec/unit/command/delete_policy_group_spec.rb +207 -207
- data/spec/unit/command/delete_policy_spec.rb +207 -207
- data/spec/unit/command/diff_spec.rb +312 -312
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +179 -179
- data/spec/unit/command/export_spec.rb +200 -200
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +169 -169
- data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
- data/spec/unit/command/generator_commands/base_spec.rb +136 -136
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_spec.rb +450 -450
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
- data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
- data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
- data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -367
- data/spec/unit/command/generator_commands/template_spec.rb +32 -32
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +592 -592
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +199 -199
- data/spec/unit/command/shell_init_spec.rb +329 -329
- data/spec/unit/command/show_policy_spec.rb +235 -235
- data/spec/unit/command/undelete_spec.rb +246 -246
- data/spec/unit/command/update_spec.rb +275 -275
- data/spec/unit/command/verify_spec.rb +15 -6
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -126
- data/spec/unit/configurable_spec.rb +41 -41
- data/spec/unit/cookbook_metadata_spec.rb +98 -98
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/generator_spec.rb +119 -120
- data/spec/unit/helpers_spec.rb +92 -92
- data/spec/unit/pager_spec.rb +119 -119
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
- data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
- data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
- data/spec/unit/policyfile/differ_spec.rb +687 -687
- data/spec/unit/policyfile/lister_spec.rb +272 -272
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +115 -115
- data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
- data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
- data/spec/unit/policyfile/storage_config_spec.rb +172 -172
- data/spec/unit/policyfile/undo_record_spec.rb +260 -260
- data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
- data/spec/unit/policyfile/uploader_spec.rb +410 -410
- data/spec/unit/policyfile_demands_spec.rb +1203 -1203
- data/spec/unit/policyfile_evaluation_spec.rb +642 -642
- data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
- data/spec/unit/policyfile_lock_install_spec.rb +138 -138
- data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
- data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
- data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
- data/spec/unit/policyfile_services/install_spec.rb +211 -211
- data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
- data/spec/unit/policyfile_services/push_spec.rb +233 -233
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
- data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
- data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
- data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
- data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
- data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
- data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
- data/spec/unit/shell_out_spec.rb +34 -34
- data/spec/unit/tasks/helpers_spec.rb +75 -0
- data/tasks/bin/bundle-platform +0 -0
- data/tasks/bin/bundle-platform.bat +0 -0
- data/tasks/bin/create-override-gemfile +110 -0
- data/tasks/bundle.rb +27 -11
- data/tasks/bundle_util.rb +6 -5
- data/tasks/dependencies.rb +97 -122
- data/tasks/gemfile_util.rb +357 -66
- data/tasks/helpers.rb +47 -0
- data/tasks/version.rb +1 -5
- data/version_policy.rb +66 -41
- data/warning.txt +9 -9
- metadata +7 -5
- data/Gemfile.windows +0 -34
- data/Gemfile.windows.lock +0 -936
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 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 'chef-dk/command/generator_commands/base'
|
|
19
|
-
|
|
20
|
-
module ChefDK
|
|
21
|
-
module Command
|
|
22
|
-
module GeneratorCommands
|
|
23
|
-
|
|
24
|
-
# ## App
|
|
25
|
-
# chef generate app path/to/basename --generator-cookbook=path/to/generator
|
|
26
|
-
#
|
|
27
|
-
# Generates a full "application" directory structure.
|
|
28
|
-
class App < Base
|
|
29
|
-
|
|
30
|
-
banner "Usage: chef generate app NAME [options]"
|
|
31
|
-
|
|
32
|
-
attr_reader :errors
|
|
33
|
-
attr_reader :app_name_or_path
|
|
34
|
-
|
|
35
|
-
options.merge!(SharedGeneratorOptions.options)
|
|
36
|
-
|
|
37
|
-
def initialize(params)
|
|
38
|
-
@params_valid = true
|
|
39
|
-
@app_name = nil
|
|
40
|
-
super
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def run
|
|
44
|
-
read_and_validate_params
|
|
45
|
-
if params_valid?
|
|
46
|
-
setup_context
|
|
47
|
-
chef_runner.converge
|
|
48
|
-
else
|
|
49
|
-
err(opt_parser)
|
|
50
|
-
1
|
|
51
|
-
end
|
|
52
|
-
rescue ChefDK::ChefRunnerError => e
|
|
53
|
-
err("ERROR: #{e}")
|
|
54
|
-
1
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def setup_context
|
|
58
|
-
super
|
|
59
|
-
Generator.add_attr_to_context(:app_root, app_root)
|
|
60
|
-
Generator.add_attr_to_context(:app_name, app_name)
|
|
61
|
-
Generator.add_attr_to_context(:cookbook_root, cookbook_root)
|
|
62
|
-
Generator.add_attr_to_context(:cookbook_name, cookbook_name)
|
|
63
|
-
Generator.add_attr_to_context(:recipe_name, recipe_name)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def recipe
|
|
67
|
-
"app"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def recipe_name
|
|
71
|
-
"default"
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def app_name
|
|
75
|
-
File.basename(app_full_path)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def app_root
|
|
79
|
-
File.dirname(app_full_path)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def cookbook_root
|
|
83
|
-
File.join(app_full_path, 'cookbooks')
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def cookbook_name
|
|
87
|
-
app_name
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def app_full_path
|
|
91
|
-
File.expand_path(app_name_or_path, Dir.pwd)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def read_and_validate_params
|
|
95
|
-
arguments = parse_options(params)
|
|
96
|
-
@app_name_or_path = arguments[0]
|
|
97
|
-
@params_valid = false unless @app_name_or_path
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def params_valid?
|
|
101
|
-
@params_valid
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 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 'chef-dk/command/generator_commands/base'
|
|
19
|
+
|
|
20
|
+
module ChefDK
|
|
21
|
+
module Command
|
|
22
|
+
module GeneratorCommands
|
|
23
|
+
|
|
24
|
+
# ## App
|
|
25
|
+
# chef generate app path/to/basename --generator-cookbook=path/to/generator
|
|
26
|
+
#
|
|
27
|
+
# Generates a full "application" directory structure.
|
|
28
|
+
class App < Base
|
|
29
|
+
|
|
30
|
+
banner "Usage: chef generate app NAME [options]"
|
|
31
|
+
|
|
32
|
+
attr_reader :errors
|
|
33
|
+
attr_reader :app_name_or_path
|
|
34
|
+
|
|
35
|
+
options.merge!(SharedGeneratorOptions.options)
|
|
36
|
+
|
|
37
|
+
def initialize(params)
|
|
38
|
+
@params_valid = true
|
|
39
|
+
@app_name = nil
|
|
40
|
+
super
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def run
|
|
44
|
+
read_and_validate_params
|
|
45
|
+
if params_valid?
|
|
46
|
+
setup_context
|
|
47
|
+
chef_runner.converge
|
|
48
|
+
else
|
|
49
|
+
err(opt_parser)
|
|
50
|
+
1
|
|
51
|
+
end
|
|
52
|
+
rescue ChefDK::ChefRunnerError => e
|
|
53
|
+
err("ERROR: #{e}")
|
|
54
|
+
1
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def setup_context
|
|
58
|
+
super
|
|
59
|
+
Generator.add_attr_to_context(:app_root, app_root)
|
|
60
|
+
Generator.add_attr_to_context(:app_name, app_name)
|
|
61
|
+
Generator.add_attr_to_context(:cookbook_root, cookbook_root)
|
|
62
|
+
Generator.add_attr_to_context(:cookbook_name, cookbook_name)
|
|
63
|
+
Generator.add_attr_to_context(:recipe_name, recipe_name)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def recipe
|
|
67
|
+
"app"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def recipe_name
|
|
71
|
+
"default"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def app_name
|
|
75
|
+
File.basename(app_full_path)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def app_root
|
|
79
|
+
File.dirname(app_full_path)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def cookbook_root
|
|
83
|
+
File.join(app_full_path, 'cookbooks')
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def cookbook_name
|
|
87
|
+
app_name
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def app_full_path
|
|
91
|
+
File.expand_path(app_name_or_path, Dir.pwd)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def read_and_validate_params
|
|
95
|
+
arguments = parse_options(params)
|
|
96
|
+
@app_name_or_path = arguments[0]
|
|
97
|
+
@params_valid = false unless @app_name_or_path
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def params_valid?
|
|
101
|
+
@params_valid
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 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 'chef-dk/command/generator_commands/cookbook_code_file'
|
|
19
|
-
|
|
20
|
-
module ChefDK
|
|
21
|
-
module Command
|
|
22
|
-
module GeneratorCommands
|
|
23
|
-
# chef generate attribute [path/to/cookbook_root] NAME
|
|
24
|
-
class Attribute < CookbookCodeFile
|
|
25
|
-
|
|
26
|
-
banner "Usage: chef generate attribute [path/to/cookbook] NAME [options]"
|
|
27
|
-
|
|
28
|
-
options.merge!(SharedGeneratorOptions.options)
|
|
29
|
-
|
|
30
|
-
def recipe
|
|
31
|
-
'attribute'
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 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 'chef-dk/command/generator_commands/cookbook_code_file'
|
|
19
|
+
|
|
20
|
+
module ChefDK
|
|
21
|
+
module Command
|
|
22
|
+
module GeneratorCommands
|
|
23
|
+
# chef generate attribute [path/to/cookbook_root] NAME
|
|
24
|
+
class Attribute < CookbookCodeFile
|
|
25
|
+
|
|
26
|
+
banner "Usage: chef generate attribute [path/to/cookbook] NAME [options]"
|
|
27
|
+
|
|
28
|
+
options.merge!(SharedGeneratorOptions.options)
|
|
29
|
+
|
|
30
|
+
def recipe
|
|
31
|
+
'attribute'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
@@ -1,148 +1,148 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 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 'chef-dk/configurable'
|
|
19
|
-
require 'chef-dk/command/generator_commands'
|
|
20
|
-
|
|
21
|
-
module ChefDK
|
|
22
|
-
module Command
|
|
23
|
-
module GeneratorCommands
|
|
24
|
-
# ## Base
|
|
25
|
-
#
|
|
26
|
-
# Base class for `chef generate` subcommands. Contains basic behaviors
|
|
27
|
-
# for setting up the generator context, detecting git, and launching a
|
|
28
|
-
# chef converge.
|
|
29
|
-
#
|
|
30
|
-
# The behavior of the generators is largely delegated to a chef cookbook.
|
|
31
|
-
# The default implementation is the `code_generator` cookbook in
|
|
32
|
-
# chef-dk/skeletons/code_generator.
|
|
33
|
-
class Base < Command::Base
|
|
34
|
-
|
|
35
|
-
include Configurable
|
|
36
|
-
|
|
37
|
-
attr_reader :params
|
|
38
|
-
|
|
39
|
-
options.merge!(SharedGeneratorOptions.options)
|
|
40
|
-
|
|
41
|
-
def initialize(params)
|
|
42
|
-
super()
|
|
43
|
-
@params = params
|
|
44
|
-
|
|
45
|
-
@generator_cookbook_path = nil
|
|
46
|
-
@generator_cookbook_name = nil
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# An instance of ChefRunner. Calling ChefRunner#converge will trigger
|
|
50
|
-
# convergence and generate the desired code.
|
|
51
|
-
def chef_runner
|
|
52
|
-
@chef_runner ||= ChefRunner.new(generator_cookbook_path, ["recipe[#{generator_cookbook_name}::#{recipe}]"])
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Path to the directory where the code_generator cookbook is located.
|
|
56
|
-
def generator_cookbook_path
|
|
57
|
-
detect_generator_cookbook_name_and_path! unless @generator_cookbook_path
|
|
58
|
-
@generator_cookbook_path
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def generator_cookbook_name
|
|
62
|
-
detect_generator_cookbook_name_and_path! unless @generator_cookbook_name
|
|
63
|
-
@generator_cookbook_name
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Sets git related generator_context values.
|
|
67
|
-
def setup_context
|
|
68
|
-
apply_generator_values_from_config
|
|
69
|
-
Generator.add_attr_to_context(:have_git, have_git?)
|
|
70
|
-
Generator.add_attr_to_context(:skip_git_init, false)
|
|
71
|
-
config.each do |k,v|
|
|
72
|
-
Generator.add_attr_to_context(k, v)
|
|
73
|
-
end
|
|
74
|
-
# inject the arbitrary args supplied on cmdline, default = []
|
|
75
|
-
config[:generator_arg].each do |k,v|
|
|
76
|
-
Generator.add_attr_to_context(k, v)
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Checks the `PATH` for the presence of a `git` (or `git.exe`, on
|
|
81
|
-
# windows) executable.
|
|
82
|
-
def have_git?
|
|
83
|
-
path = ENV["PATH"] || ""
|
|
84
|
-
paths = path.split(File::PATH_SEPARATOR)
|
|
85
|
-
paths.any? {|bin_path| File.exist?(File.join(bin_path, "git#{RbConfig::CONFIG['EXEEXT']}"))}
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
private
|
|
89
|
-
|
|
90
|
-
# Inspects the `config[:generator_cookbook]` option to determine the
|
|
91
|
-
# generator_cookbook_name and generator_cookbook_path. There are two
|
|
92
|
-
# supported ways this can work:
|
|
93
|
-
#
|
|
94
|
-
# * `config[:generator_cookbook]` is the full path to the generator
|
|
95
|
-
# cookbook. In this case, the last path component is the cookbook name,
|
|
96
|
-
# and the parent directory is the cookbook path
|
|
97
|
-
# * `config[:generator_cookbook]` is the path to a directory that
|
|
98
|
-
# contains a cookbook named "code_generator" (DEPRECATED). This is how
|
|
99
|
-
# the `--generator-cookbook` feature was originally written, so we
|
|
100
|
-
# support this for backwards compatibility. This way has poor UX and
|
|
101
|
-
# we'd like to get rid of it, so a warning is printed in this case.
|
|
102
|
-
def detect_generator_cookbook_name_and_path!
|
|
103
|
-
given_path = generator_cookbook_option
|
|
104
|
-
code_generator_subdir = File.join(given_path, "code_generator")
|
|
105
|
-
if File.directory?(code_generator_subdir)
|
|
106
|
-
@generator_cookbook_name = "code_generator"
|
|
107
|
-
@generator_cookbook_path = given_path
|
|
108
|
-
err("WARN: Please configure the generator cookbook by giving the full path to the desired cookbook (like '#{code_generator_subdir}')")
|
|
109
|
-
else
|
|
110
|
-
@generator_cookbook_name = File.basename(given_path)
|
|
111
|
-
@generator_cookbook_path = File.dirname(given_path)
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def generator_cookbook_option
|
|
116
|
-
config[:generator_cookbook] || chefdk_config.generator_cookbook
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# Load any values that were not defined via cli switches from Chef
|
|
120
|
-
# configuration
|
|
121
|
-
#
|
|
122
|
-
def apply_generator_values_from_config
|
|
123
|
-
config[:copyright_holder] ||= coerce_generator_copyright_holder
|
|
124
|
-
config[:email] ||= coerce_generator_email
|
|
125
|
-
config[:license] ||= coerce_generator_license
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def coerce_generator_copyright_holder
|
|
129
|
-
generator_config.copyright_holder ||
|
|
130
|
-
knife_config.cookbook_copyright ||
|
|
131
|
-
"The Authors"
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def coerce_generator_email
|
|
135
|
-
generator_config.email ||
|
|
136
|
-
knife_config.cookbook_email ||
|
|
137
|
-
"you@example.com"
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def coerce_generator_license
|
|
141
|
-
generator_config.license ||
|
|
142
|
-
knife_config.cookbook_license ||
|
|
143
|
-
"all_rights"
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 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 'chef-dk/configurable'
|
|
19
|
+
require 'chef-dk/command/generator_commands'
|
|
20
|
+
|
|
21
|
+
module ChefDK
|
|
22
|
+
module Command
|
|
23
|
+
module GeneratorCommands
|
|
24
|
+
# ## Base
|
|
25
|
+
#
|
|
26
|
+
# Base class for `chef generate` subcommands. Contains basic behaviors
|
|
27
|
+
# for setting up the generator context, detecting git, and launching a
|
|
28
|
+
# chef converge.
|
|
29
|
+
#
|
|
30
|
+
# The behavior of the generators is largely delegated to a chef cookbook.
|
|
31
|
+
# The default implementation is the `code_generator` cookbook in
|
|
32
|
+
# chef-dk/skeletons/code_generator.
|
|
33
|
+
class Base < Command::Base
|
|
34
|
+
|
|
35
|
+
include Configurable
|
|
36
|
+
|
|
37
|
+
attr_reader :params
|
|
38
|
+
|
|
39
|
+
options.merge!(SharedGeneratorOptions.options)
|
|
40
|
+
|
|
41
|
+
def initialize(params)
|
|
42
|
+
super()
|
|
43
|
+
@params = params
|
|
44
|
+
|
|
45
|
+
@generator_cookbook_path = nil
|
|
46
|
+
@generator_cookbook_name = nil
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# An instance of ChefRunner. Calling ChefRunner#converge will trigger
|
|
50
|
+
# convergence and generate the desired code.
|
|
51
|
+
def chef_runner
|
|
52
|
+
@chef_runner ||= ChefRunner.new(generator_cookbook_path, ["recipe[#{generator_cookbook_name}::#{recipe}]"])
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Path to the directory where the code_generator cookbook is located.
|
|
56
|
+
def generator_cookbook_path
|
|
57
|
+
detect_generator_cookbook_name_and_path! unless @generator_cookbook_path
|
|
58
|
+
@generator_cookbook_path
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def generator_cookbook_name
|
|
62
|
+
detect_generator_cookbook_name_and_path! unless @generator_cookbook_name
|
|
63
|
+
@generator_cookbook_name
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Sets git related generator_context values.
|
|
67
|
+
def setup_context
|
|
68
|
+
apply_generator_values_from_config
|
|
69
|
+
Generator.add_attr_to_context(:have_git, have_git?)
|
|
70
|
+
Generator.add_attr_to_context(:skip_git_init, false)
|
|
71
|
+
config.each do |k,v|
|
|
72
|
+
Generator.add_attr_to_context(k, v)
|
|
73
|
+
end
|
|
74
|
+
# inject the arbitrary args supplied on cmdline, default = []
|
|
75
|
+
config[:generator_arg].each do |k,v|
|
|
76
|
+
Generator.add_attr_to_context(k, v)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Checks the `PATH` for the presence of a `git` (or `git.exe`, on
|
|
81
|
+
# windows) executable.
|
|
82
|
+
def have_git?
|
|
83
|
+
path = ENV["PATH"] || ""
|
|
84
|
+
paths = path.split(File::PATH_SEPARATOR)
|
|
85
|
+
paths.any? {|bin_path| File.exist?(File.join(bin_path, "git#{RbConfig::CONFIG['EXEEXT']}"))}
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
private
|
|
89
|
+
|
|
90
|
+
# Inspects the `config[:generator_cookbook]` option to determine the
|
|
91
|
+
# generator_cookbook_name and generator_cookbook_path. There are two
|
|
92
|
+
# supported ways this can work:
|
|
93
|
+
#
|
|
94
|
+
# * `config[:generator_cookbook]` is the full path to the generator
|
|
95
|
+
# cookbook. In this case, the last path component is the cookbook name,
|
|
96
|
+
# and the parent directory is the cookbook path
|
|
97
|
+
# * `config[:generator_cookbook]` is the path to a directory that
|
|
98
|
+
# contains a cookbook named "code_generator" (DEPRECATED). This is how
|
|
99
|
+
# the `--generator-cookbook` feature was originally written, so we
|
|
100
|
+
# support this for backwards compatibility. This way has poor UX and
|
|
101
|
+
# we'd like to get rid of it, so a warning is printed in this case.
|
|
102
|
+
def detect_generator_cookbook_name_and_path!
|
|
103
|
+
given_path = generator_cookbook_option
|
|
104
|
+
code_generator_subdir = File.join(given_path, "code_generator")
|
|
105
|
+
if File.directory?(code_generator_subdir)
|
|
106
|
+
@generator_cookbook_name = "code_generator"
|
|
107
|
+
@generator_cookbook_path = given_path
|
|
108
|
+
err("WARN: Please configure the generator cookbook by giving the full path to the desired cookbook (like '#{code_generator_subdir}')")
|
|
109
|
+
else
|
|
110
|
+
@generator_cookbook_name = File.basename(given_path)
|
|
111
|
+
@generator_cookbook_path = File.dirname(given_path)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def generator_cookbook_option
|
|
116
|
+
config[:generator_cookbook] || chefdk_config.generator_cookbook
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Load any values that were not defined via cli switches from Chef
|
|
120
|
+
# configuration
|
|
121
|
+
#
|
|
122
|
+
def apply_generator_values_from_config
|
|
123
|
+
config[:copyright_holder] ||= coerce_generator_copyright_holder
|
|
124
|
+
config[:email] ||= coerce_generator_email
|
|
125
|
+
config[:license] ||= coerce_generator_license
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def coerce_generator_copyright_holder
|
|
129
|
+
generator_config.copyright_holder ||
|
|
130
|
+
knife_config.cookbook_copyright ||
|
|
131
|
+
"The Authors"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def coerce_generator_email
|
|
135
|
+
generator_config.email ||
|
|
136
|
+
knife_config.cookbook_email ||
|
|
137
|
+
"you@example.com"
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def coerce_generator_license
|
|
141
|
+
generator_config.license ||
|
|
142
|
+
knife_config.cookbook_license ||
|
|
143
|
+
"all_rights"
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|