chef-cli 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +32 -0
- data/LICENSE +201 -0
- data/Rakefile +70 -0
- data/bin/chef +25 -0
- data/chef-cli.gemspec +53 -0
- data/lib/chef-cli.rb +19 -0
- data/lib/chef-cli/authenticated_http.rb +22 -0
- data/lib/chef-cli/builtin_commands.rb +62 -0
- data/lib/chef-cli/chef_runner.rb +114 -0
- data/lib/chef-cli/chef_server_api_multi.rb +73 -0
- data/lib/chef-cli/cli.rb +206 -0
- data/lib/chef-cli/command/base.rb +89 -0
- data/lib/chef-cli/command/clean_policy_cookbooks.rb +115 -0
- data/lib/chef-cli/command/clean_policy_revisions.rb +112 -0
- data/lib/chef-cli/command/delete_policy.rb +121 -0
- data/lib/chef-cli/command/delete_policy_group.rb +121 -0
- data/lib/chef-cli/command/describe_cookbook.rb +98 -0
- data/lib/chef-cli/command/diff.rb +316 -0
- data/lib/chef-cli/command/env.rb +99 -0
- data/lib/chef-cli/command/exec.rb +45 -0
- data/lib/chef-cli/command/export.rb +156 -0
- data/lib/chef-cli/command/gem.rb +48 -0
- data/lib/chef-cli/command/generate.rb +123 -0
- data/lib/chef-cli/command/generator_commands.rb +83 -0
- data/lib/chef-cli/command/generator_commands/attribute.rb +37 -0
- data/lib/chef-cli/command/generator_commands/base.rb +157 -0
- data/lib/chef-cli/command/generator_commands/build_cookbook.rb +126 -0
- data/lib/chef-cli/command/generator_commands/chef_exts/generator_desc_resource.rb +40 -0
- data/lib/chef-cli/command/generator_commands/chef_exts/quieter_doc_formatter.rb +38 -0
- data/lib/chef-cli/command/generator_commands/chef_exts/recipe_dsl_ext.rb +39 -0
- data/lib/chef-cli/command/generator_commands/cookbook.rb +251 -0
- data/lib/chef-cli/command/generator_commands/cookbook_code_file.rb +100 -0
- data/lib/chef-cli/command/generator_commands/cookbook_file.rb +46 -0
- data/lib/chef-cli/command/generator_commands/generator_generator.rb +175 -0
- data/lib/chef-cli/command/generator_commands/helpers.rb +37 -0
- data/lib/chef-cli/command/generator_commands/policyfile.rb +125 -0
- data/lib/chef-cli/command/generator_commands/recipe.rb +37 -0
- data/lib/chef-cli/command/generator_commands/repo.rb +140 -0
- data/lib/chef-cli/command/generator_commands/resource.rb +37 -0
- data/lib/chef-cli/command/generator_commands/template.rb +47 -0
- data/lib/chef-cli/command/install.rb +121 -0
- data/lib/chef-cli/command/provision.rb +38 -0
- data/lib/chef-cli/command/push.rb +118 -0
- data/lib/chef-cli/command/push_archive.rb +126 -0
- data/lib/chef-cli/command/shell_init.rb +185 -0
- data/lib/chef-cli/command/show_policy.rb +164 -0
- data/lib/chef-cli/command/undelete.rb +155 -0
- data/lib/chef-cli/command/update.rb +140 -0
- data/lib/chef-cli/command/verify.rb +548 -0
- data/lib/chef-cli/commands_map.rb +113 -0
- data/lib/chef-cli/completions/bash.sh.erb +5 -0
- data/lib/chef-cli/completions/chef.fish.erb +10 -0
- data/lib/chef-cli/completions/zsh.zsh.erb +21 -0
- data/lib/chef-cli/component_test.rb +226 -0
- data/lib/chef-cli/configurable.rb +88 -0
- data/lib/chef-cli/cookbook_metadata.rb +45 -0
- data/lib/chef-cli/cookbook_omnifetch.rb +32 -0
- data/lib/chef-cli/cookbook_profiler/git.rb +152 -0
- data/lib/chef-cli/cookbook_profiler/identifiers.rb +72 -0
- data/lib/chef-cli/cookbook_profiler/null_scm.rb +31 -0
- data/lib/chef-cli/dist.rb +31 -0
- data/lib/chef-cli/exceptions.rb +153 -0
- data/lib/chef-cli/generator.rb +165 -0
- data/lib/chef-cli/helpers.rb +170 -0
- data/lib/chef-cli/pager.rb +104 -0
- data/lib/chef-cli/policyfile/artifactory_cookbook_source.rb +102 -0
- data/lib/chef-cli/policyfile/attribute_merge_checker.rb +110 -0
- data/lib/chef-cli/policyfile/chef_repo_cookbook_source.rb +138 -0
- data/lib/chef-cli/policyfile/chef_server_cookbook_source.rb +99 -0
- data/lib/chef-cli/policyfile/chef_server_lock_fetcher.rb +167 -0
- data/lib/chef-cli/policyfile/community_cookbook_source.rb +95 -0
- data/lib/chef-cli/policyfile/comparison_base.rb +123 -0
- data/lib/chef-cli/policyfile/cookbook_location_specification.rb +154 -0
- data/lib/chef-cli/policyfile/cookbook_locks.rb +466 -0
- data/lib/chef-cli/policyfile/cookbook_sources.rb +23 -0
- data/lib/chef-cli/policyfile/delivery_supermarket_source.rb +89 -0
- data/lib/chef-cli/policyfile/differ.rb +263 -0
- data/lib/chef-cli/policyfile/dsl.rb +288 -0
- data/lib/chef-cli/policyfile/git_lock_fetcher.rb +265 -0
- data/lib/chef-cli/policyfile/included_policies_cookbook_source.rb +156 -0
- data/lib/chef-cli/policyfile/lister.rb +229 -0
- data/lib/chef-cli/policyfile/local_lock_fetcher.rb +132 -0
- data/lib/chef-cli/policyfile/lock_applier.rb +80 -0
- data/lib/chef-cli/policyfile/lock_fetcher_mixin.rb +37 -0
- data/lib/chef-cli/policyfile/null_cookbook_source.rb +49 -0
- data/lib/chef-cli/policyfile/policyfile_location_specification.rb +128 -0
- data/lib/chef-cli/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -0
- data/lib/chef-cli/policyfile/remote_lock_fetcher.rb +108 -0
- data/lib/chef-cli/policyfile/reports/install.rb +69 -0
- data/lib/chef-cli/policyfile/reports/table_printer.rb +57 -0
- data/lib/chef-cli/policyfile/reports/upload.rb +70 -0
- data/lib/chef-cli/policyfile/solution_dependencies.rb +311 -0
- data/lib/chef-cli/policyfile/source_uri.rb +57 -0
- data/lib/chef-cli/policyfile/storage_config.rb +112 -0
- data/lib/chef-cli/policyfile/undo_record.rb +139 -0
- data/lib/chef-cli/policyfile/undo_stack.rb +128 -0
- data/lib/chef-cli/policyfile/uploader.rb +222 -0
- data/lib/chef-cli/policyfile_compiler.rb +528 -0
- data/lib/chef-cli/policyfile_lock.rb +581 -0
- data/lib/chef-cli/policyfile_services/clean_policies.rb +95 -0
- data/lib/chef-cli/policyfile_services/clean_policy_cookbooks.rb +123 -0
- data/lib/chef-cli/policyfile_services/export_repo.rb +419 -0
- data/lib/chef-cli/policyfile_services/install.rb +167 -0
- data/lib/chef-cli/policyfile_services/push.rb +112 -0
- data/lib/chef-cli/policyfile_services/push_archive.rb +164 -0
- data/lib/chef-cli/policyfile_services/rm_policy.rb +141 -0
- data/lib/chef-cli/policyfile_services/rm_policy_group.rb +85 -0
- data/lib/chef-cli/policyfile_services/show_policy.rb +234 -0
- data/lib/chef-cli/policyfile_services/undelete.rb +108 -0
- data/lib/chef-cli/policyfile_services/update_attributes.rb +110 -0
- data/lib/chef-cli/service_exception_inspectors.rb +24 -0
- data/lib/chef-cli/service_exception_inspectors/base.rb +39 -0
- data/lib/chef-cli/service_exception_inspectors/http.rb +119 -0
- data/lib/chef-cli/service_exceptions.rb +142 -0
- data/lib/chef-cli/shell_out.rb +36 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/Berksfile +3 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/build_cookbook/README.md +146 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/build_cookbook/kitchen.yml +21 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +8 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/chefignore +110 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/cookbook_readmes/README.md +66 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/delivery-config.json +17 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/delivery-project.toml +34 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/gitignore +22 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/README.md +20 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +6 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/data_bags/README.md +56 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +4 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/environments/README.md +9 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/environments/example.json +13 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/policyfiles/README.md +24 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/roles/README.md +9 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/repo/roles/example.json +13 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/spec_helper.rb +2 -0
- data/lib/chef-cli/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -0
- data/lib/chef-cli/skeletons/code_generator/metadata.rb +8 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/attribute.rb +11 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/build_cookbook.rb +175 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/cookbook.rb +167 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/cookbook_file.rb +23 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/helpers.rb +19 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/policyfile.rb +7 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/recipe.rb +50 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/repo.rb +71 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/resource.rb +12 -0
- data/lib/chef-cli/skeletons/code_generator/recipes/template.rb +31 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/CHANGELOG.md.erb +11 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/LICENSE.apachev2.erb +201 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/README.md.erb +4 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/attribute.rb.erb +0 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/build_cookbook/Berksfile.erb +7 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/build_cookbook/metadata.rb.erb +10 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/build_cookbook/recipe.rb.erb +9 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/cookbook_file.erb +0 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/helpers.rb.erb +39 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +16 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen.yml.erb +38 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen_dokken.yml.erb +36 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/metadata.rb.erb +20 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/recipe.rb.erb +5 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/recipe_spec.rb.erb +29 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/repo/gitignore.erb +128 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/resource.rb.erb +1 -0
- data/lib/chef-cli/skeletons/code_generator/templates/default/template.erb +0 -0
- data/lib/chef-cli/ui.rb +57 -0
- data/lib/chef-cli/version.rb +20 -0
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -0
- data/spec/shared/a_file_generator.rb +125 -0
- data/spec/shared/a_generated_file.rb +12 -0
- data/spec/shared/command_with_ui_object.rb +11 -0
- data/spec/shared/custom_generator_cookbook.rb +136 -0
- data/spec/shared/fixture_cookbook_checksums.rb +46 -0
- data/spec/shared/setup_git_committer_config.rb +54 -0
- data/spec/shared/setup_git_cookbooks.rb +53 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/test_helpers.rb +84 -0
- data/spec/unit/chef_runner_spec.rb +139 -0
- data/spec/unit/chef_server_api_multi_spec.rb +120 -0
- data/spec/unit/cli_spec.rb +375 -0
- data/spec/unit/command/base_spec.rb +195 -0
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +180 -0
- data/spec/unit/command/clean_policy_revisions_spec.rb +180 -0
- data/spec/unit/command/delete_policy_group_spec.rb +206 -0
- data/spec/unit/command/delete_policy_spec.rb +206 -0
- data/spec/unit/command/diff_spec.rb +311 -0
- data/spec/unit/command/env_spec.rb +86 -0
- data/spec/unit/command/exec_spec.rb +178 -0
- data/spec/unit/command/export_spec.rb +199 -0
- data/spec/unit/command/generate_spec.rb +142 -0
- data/spec/unit/command/generator_commands/attribute_spec.rb +31 -0
- data/spec/unit/command/generator_commands/base_spec.rb +180 -0
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +377 -0
- data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +77 -0
- data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +111 -0
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +31 -0
- data/spec/unit/command/generator_commands/cookbook_spec.rb +769 -0
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +227 -0
- data/spec/unit/command/generator_commands/helpers_spec.rb +31 -0
- data/spec/unit/command/generator_commands/policyfile_spec.rb +223 -0
- data/spec/unit/command/generator_commands/recipe_spec.rb +37 -0
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -0
- data/spec/unit/command/generator_commands/resource_spec.rb +31 -0
- data/spec/unit/command/generator_commands/template_spec.rb +31 -0
- data/spec/unit/command/install_spec.rb +179 -0
- data/spec/unit/command/push_archive_spec.rb +153 -0
- data/spec/unit/command/push_spec.rb +198 -0
- data/spec/unit/command/shell_init_spec.rb +339 -0
- data/spec/unit/command/show_policy_spec.rb +234 -0
- data/spec/unit/command/undelete_spec.rb +244 -0
- data/spec/unit/command/update_spec.rb +283 -0
- data/spec/unit/command/verify_spec.rb +341 -0
- data/spec/unit/commands_map_spec.rb +57 -0
- data/spec/unit/component_test_spec.rb +128 -0
- data/spec/unit/configurable_spec.rb +68 -0
- data/spec/unit/cookbook_metadata_spec.rb +96 -0
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -0
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +81 -0
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -0
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -0
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -0
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -0
- data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -0
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/kitchen.yml +16 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -0
- data/spec/unit/fixtures/cookbooks_api/chef_server_universe.json +56 -0
- data/spec/unit/fixtures/cookbooks_api/pruned_chef_server_universe.json +30 -0
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1322 -0
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -0
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -0
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +33 -0
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -0
- data/spec/unit/fixtures/dev_cookbooks/bar-cookbook.gitbundle +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/embedded/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/embedded/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/apps/berkshelf/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/apps/test-kitchen/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef-dk/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/bin/.keep +0 -0
- data/spec/unit/fixtures/example_app/Policyfile.rb +0 -0
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -0
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -0
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -0
- data/spec/unit/fixtures/example_cookbook/README.md +4 -0
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -0
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -0
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -0
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -0
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -0
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -0
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -0
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -0
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -0
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -0
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -0
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -0
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -0
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -0
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -0
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/extra/extra_file.txt +0 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -0
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -0
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -0
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -0
- data/spec/unit/generator_spec.rb +119 -0
- data/spec/unit/pager_spec.rb +117 -0
- data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +59 -0
- data/spec/unit/policyfile/attribute_merge_checker_spec.rb +80 -0
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -0
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +55 -0
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +161 -0
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +83 -0
- data/spec/unit/policyfile/comparison_base_spec.rb +340 -0
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +347 -0
- data/spec/unit/policyfile/cookbook_locks_spec.rb +527 -0
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +129 -0
- data/spec/unit/policyfile/differ_spec.rb +686 -0
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +155 -0
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +242 -0
- data/spec/unit/policyfile/lister_spec.rb +268 -0
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +199 -0
- data/spec/unit/policyfile/lock_applier_spec.rb +100 -0
- data/spec/unit/policyfile/lock_fetcher_mixin_spec.rb +60 -0
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +34 -0
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -0
- data/spec/unit/policyfile/remote_lock_fetcher_spec.rb +129 -0
- data/spec/unit/policyfile/reports/install_spec.rb +114 -0
- data/spec/unit/policyfile/reports/upload_spec.rb +94 -0
- data/spec/unit/policyfile/solution_dependencies_spec.rb +170 -0
- data/spec/unit/policyfile/source_uri_spec.rb +36 -0
- data/spec/unit/policyfile/storage_config_spec.rb +180 -0
- data/spec/unit/policyfile/undo_record_spec.rb +258 -0
- data/spec/unit/policyfile/undo_stack_spec.rb +265 -0
- data/spec/unit/policyfile/uploader_spec.rb +410 -0
- data/spec/unit/policyfile_demands_spec.rb +1197 -0
- data/spec/unit/policyfile_evaluation_spec.rb +628 -0
- data/spec/unit/policyfile_includes_dsl_spec.rb +220 -0
- data/spec/unit/policyfile_includes_spec.rb +720 -0
- data/spec/unit/policyfile_install_with_includes_spec.rb +232 -0
- data/spec/unit/policyfile_lock_build_spec.rb +1065 -0
- data/spec/unit/policyfile_lock_install_spec.rb +137 -0
- data/spec/unit/policyfile_lock_serialization_spec.rb +424 -0
- data/spec/unit/policyfile_lock_validation_spec.rb +608 -0
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -0
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +272 -0
- data/spec/unit/policyfile_services/export_repo_spec.rb +473 -0
- data/spec/unit/policyfile_services/install_spec.rb +209 -0
- data/spec/unit/policyfile_services/push_archive_spec.rb +359 -0
- data/spec/unit/policyfile_services/push_spec.rb +249 -0
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +237 -0
- data/spec/unit/policyfile_services/rm_policy_spec.rb +263 -0
- data/spec/unit/policyfile_services/show_policy_spec.rb +887 -0
- data/spec/unit/policyfile_services/undelete_spec.rb +302 -0
- data/spec/unit/policyfile_services/update_attributes_spec.rb +229 -0
- data/spec/unit/policyfile_services/update_spec.rb +162 -0
- data/spec/unit/service_exception_inspectors/base_spec.rb +41 -0
- data/spec/unit/service_exception_inspectors/http_spec.rb +138 -0
- data/spec/unit/shell_out_spec.rb +34 -0
- metadata +796 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2016 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
|
+
module ChefCLI
|
|
19
|
+
|
|
20
|
+
# CommandsMap maintains a mapping of subcommand names to the files where
|
|
21
|
+
# those commands are defined and the classes that implement the commands.
|
|
22
|
+
#
|
|
23
|
+
# In ruby it's more typical to handle this sort of thing using conventions
|
|
24
|
+
# and metaprogramming. We've implemented this approach in the past and
|
|
25
|
+
# decided against it here:
|
|
26
|
+
# 1. Performance. As the CLI suite grows, you have to load more and more
|
|
27
|
+
# code, including dependencies that are installed by rubygems, etc. This gets
|
|
28
|
+
# slow, and CLI apps need to be fast.
|
|
29
|
+
# 2. You can workaround the above by having a convention mapping filename to
|
|
30
|
+
# command name, but then you have to do a lot of work to list all of the
|
|
31
|
+
# commands, which is actually a common thing to do.
|
|
32
|
+
# 3. Other ways to mitigate the performance issue (loading deps lazily) have
|
|
33
|
+
# their own complications and tradeoffs and don't fully solve the problem.
|
|
34
|
+
# 4. It's not actually that much work to maintain the mapping.
|
|
35
|
+
#
|
|
36
|
+
# ## Adding new commands globally:
|
|
37
|
+
#
|
|
38
|
+
# A "singleton-ish" instance of this class is stored as ChefCLI.commands_map.
|
|
39
|
+
# You can configure a multiple commands at once in a block using
|
|
40
|
+
# ChefCLI.commands, like so:
|
|
41
|
+
#
|
|
42
|
+
# ChefCLI.commands do |c|
|
|
43
|
+
# # assigns `chef my-command` to the class ChefCLI::Command::MyCommand.
|
|
44
|
+
# # The "require path" is inferred to be "chef-cli/command/my_command"
|
|
45
|
+
# c.builtin("my-command", :MyCommand)
|
|
46
|
+
#
|
|
47
|
+
# # Set the require path explicitly:
|
|
48
|
+
# c.builtin("weird-command", :WeirdoClass, require_path: "chef-cli/command/this_is_cray")
|
|
49
|
+
#
|
|
50
|
+
# # You can add a description that will show up in `chef -h` output (recommended):
|
|
51
|
+
# c.builtin("documented-cmd", :DocumentedCmd, desc: "A short description")
|
|
52
|
+
# end
|
|
53
|
+
#
|
|
54
|
+
class CommandsMap
|
|
55
|
+
NULL_ARG = Object.new
|
|
56
|
+
|
|
57
|
+
CommandSpec = Struct.new(:name, :constant_name, :require_path, :description, :hidden)
|
|
58
|
+
|
|
59
|
+
class CommandSpec
|
|
60
|
+
|
|
61
|
+
def instantiate
|
|
62
|
+
require require_path
|
|
63
|
+
command_class = ChefCLI::Command.const_get(constant_name)
|
|
64
|
+
command_class.new
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
attr_reader :command_specs
|
|
70
|
+
|
|
71
|
+
def initialize
|
|
72
|
+
@command_specs = {}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def builtin(name, constant_name, require_path: NULL_ARG, desc: "", hidden: false)
|
|
76
|
+
if null?(require_path)
|
|
77
|
+
snake_case_path = name.tr("-", "_")
|
|
78
|
+
require_path = "chef-cli/command/#{snake_case_path}"
|
|
79
|
+
end
|
|
80
|
+
command_specs[name] = CommandSpec.new(name, constant_name, require_path, desc, hidden)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def instantiate(name)
|
|
84
|
+
spec_for(name).instantiate
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def have_command?(name)
|
|
88
|
+
command_specs.key?(name)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def command_names
|
|
92
|
+
command_specs.keys
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def spec_for(name)
|
|
96
|
+
command_specs[name]
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
private
|
|
100
|
+
|
|
101
|
+
def null?(argument)
|
|
102
|
+
argument.equal?(NULL_ARG)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def self.commands_map
|
|
107
|
+
@commands_map ||= CommandsMap.new
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def self.commands
|
|
111
|
+
yield commands_map
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Fish Shell command-line completions for <%=ChefCLI::Dist::PRODUCT %>
|
|
2
|
+
|
|
3
|
+
function __fish_chef_no_command --description 'Test if chef has yet to be given the main command'
|
|
4
|
+
set -l cmd (commandline -opc)
|
|
5
|
+
test (count $cmd) -eq 1
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
<% commands.each do |command, desc| -%>
|
|
9
|
+
complete -c chef -f -n '__fish_chef_no_command' -a <%= command %> -d "<%= desc %>"
|
|
10
|
+
<% end -%>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
function _chef() {
|
|
2
|
+
|
|
3
|
+
local -a _1st_arguments
|
|
4
|
+
_1st_arguments=(
|
|
5
|
+
<% commands.each do |command, desc| -%>
|
|
6
|
+
'<%=command%>:<%=desc%>'
|
|
7
|
+
<% end -%>
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
_arguments \
|
|
11
|
+
'(-v --version)'{-v,--version}'[version information]' \
|
|
12
|
+
'*:: :->subcmds' && return 0
|
|
13
|
+
|
|
14
|
+
if (( CURRENT == 1 )); then
|
|
15
|
+
_describe -t commands "chef subcommand" _1st_arguments
|
|
16
|
+
return
|
|
17
|
+
fi
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
compdef _chef chef
|
|
21
|
+
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014-2019 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 "exceptions"
|
|
19
|
+
require_relative "helpers"
|
|
20
|
+
|
|
21
|
+
# https://github.com/bundler/bundler/issues/4368
|
|
22
|
+
# As of rubygems 2.6.2, Rubygems will call Bundler::SpecSet#size, which does
|
|
23
|
+
# not exist as of Bundler 1.11.2.
|
|
24
|
+
#
|
|
25
|
+
# `#size` and `#length` should be synonyms in idiomatic ruby so we alias to
|
|
26
|
+
# make bundler and rubygems play nicely.
|
|
27
|
+
if Object.const_defined?(:Bundler) &&
|
|
28
|
+
Bundler.const_defined?(:SpecSet) &&
|
|
29
|
+
Bundler::SpecSet.instance_methods.include?(:length) &&
|
|
30
|
+
!Bundler::SpecSet.instance_methods.include?(:size)
|
|
31
|
+
|
|
32
|
+
module Bundler
|
|
33
|
+
class SpecSet
|
|
34
|
+
|
|
35
|
+
alias_method :size, :length
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
module ChefCLI
|
|
43
|
+
class ComponentTest
|
|
44
|
+
|
|
45
|
+
class NullTestResult
|
|
46
|
+
def exitstatus
|
|
47
|
+
0
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def stdout
|
|
51
|
+
""
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def stderr
|
|
55
|
+
""
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
DEFAULT_TEST = lambda { |context| NullTestResult.new }
|
|
60
|
+
|
|
61
|
+
include Helpers
|
|
62
|
+
|
|
63
|
+
attr_accessor :base_dir
|
|
64
|
+
|
|
65
|
+
attr_writer :omnibus_root
|
|
66
|
+
|
|
67
|
+
attr_reader :name
|
|
68
|
+
|
|
69
|
+
def initialize(name)
|
|
70
|
+
@name = name
|
|
71
|
+
@unit_test = DEFAULT_TEST
|
|
72
|
+
@integration_test = DEFAULT_TEST
|
|
73
|
+
@smoke_test = DEFAULT_TEST
|
|
74
|
+
@base_dir = nil
|
|
75
|
+
@gem_name_for_base_dir = nil
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def unit_test(&test_block)
|
|
79
|
+
@unit_test = test_block
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def run_unit_test
|
|
83
|
+
instance_eval(&@unit_test)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def integration_test(&test_block)
|
|
87
|
+
@integration_test = test_block
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def run_integration_test
|
|
91
|
+
instance_eval(&@integration_test)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def smoke_test(&test_block)
|
|
95
|
+
@smoke_test = test_block
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def run_smoke_test
|
|
99
|
+
instance_eval(&@smoke_test)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def bin(binary)
|
|
103
|
+
File.join(omnibus_bin_dir, binary)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def embedded_bin(binary)
|
|
107
|
+
File.join(omnibus_embedded_bin_dir, binary)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def sh(command, options = {})
|
|
111
|
+
combined_opts = default_command_options.merge(options)
|
|
112
|
+
|
|
113
|
+
# Env is a hash, so it needs to be merged separately
|
|
114
|
+
if options.key?(:env)
|
|
115
|
+
combined_opts[:env] = default_command_options[:env].merge(options[:env])
|
|
116
|
+
end
|
|
117
|
+
system_command(command, combined_opts)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Just like #sh but raises an error if the the command returns an
|
|
121
|
+
# unexpected exit code.
|
|
122
|
+
#
|
|
123
|
+
# Most verification steps just run a single command, then
|
|
124
|
+
# ChefCLI::Command::Verify#invoke_tests handles the results by inspecting
|
|
125
|
+
# the return value of the test block. For tests that run a lot of commands,
|
|
126
|
+
# this is inconvenient so you can use #sh! instead.
|
|
127
|
+
def sh!(*args)
|
|
128
|
+
sh(*args).tap { |result| result.error! }
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Run a command, if the command returns zero, raise an error,
|
|
132
|
+
# otherwise, if it returns non-zero or doesn't exist,
|
|
133
|
+
# return a passing command so that the test parser doesn't
|
|
134
|
+
# crash.
|
|
135
|
+
def fail_if_exit_zero(cmd_string, failure_string = "")
|
|
136
|
+
result = sh(cmd_string)
|
|
137
|
+
if result.status.exitstatus == 0
|
|
138
|
+
raise failure_string
|
|
139
|
+
else
|
|
140
|
+
sh("true")
|
|
141
|
+
end
|
|
142
|
+
rescue Errno::ENOENT
|
|
143
|
+
sh("true")
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def nix_platform_native_bin_dir
|
|
147
|
+
if /darwin/ =~ RUBY_PLATFORM
|
|
148
|
+
"/usr/local/bin"
|
|
149
|
+
else
|
|
150
|
+
"/usr/bin"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def run_in_tmpdir(command, options = {})
|
|
155
|
+
tmpdir do |dir|
|
|
156
|
+
options[:cwd] = dir
|
|
157
|
+
sh(command, options)
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def tmpdir
|
|
162
|
+
Dir.mktmpdir do |tmpdir|
|
|
163
|
+
yield tmpdir
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def assert_present!
|
|
168
|
+
unless File.exist?( component_path )
|
|
169
|
+
raise MissingComponentError.new(name, "Could not find #{component_path}")
|
|
170
|
+
end
|
|
171
|
+
rescue Gem::LoadError => e
|
|
172
|
+
raise MissingComponentError.new(name, e)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def default_command_options
|
|
176
|
+
{
|
|
177
|
+
cwd: component_path,
|
|
178
|
+
env: {
|
|
179
|
+
# Add the embedded/bin to the PATH so that bundle executable can
|
|
180
|
+
# be found while running the tests.
|
|
181
|
+
path_variable_key => omnibus_path,
|
|
182
|
+
"CHEF_LICENSE" => "accept-no-persist",
|
|
183
|
+
},
|
|
184
|
+
timeout: 3600,
|
|
185
|
+
}
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def component_path
|
|
189
|
+
if base_dir
|
|
190
|
+
File.join(omnibus_root, base_dir)
|
|
191
|
+
elsif gem_base_dir
|
|
192
|
+
gem_base_dir
|
|
193
|
+
else
|
|
194
|
+
raise "`base_dir` or `gem_base_dir` must be defined for component `#{name}`"
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def gem_base_dir
|
|
199
|
+
return nil if @gem_name_for_base_dir.nil?
|
|
200
|
+
# There is no way to say "give me the latest prerelease OR normal version of this gem.
|
|
201
|
+
# So we first ask if there is a normal version, and if there is not, we ask if there
|
|
202
|
+
# is a prerelease version. ">= 0.a" is how we ask for a prerelease version, because a
|
|
203
|
+
# prerelease version is defined as "any version with a letter in it."
|
|
204
|
+
gem = Gem::Specification.find_by_name(@gem_name_for_base_dir)
|
|
205
|
+
gem ||= Gem::Specification.find_by_name(@gem_name_for_base_dir, ">= 0.a")
|
|
206
|
+
gem.gem_dir
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def gem_base_dir=(gem_name)
|
|
210
|
+
@gem_name_for_base_dir = gem_name
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def omnibus_root
|
|
214
|
+
@omnibus_root || raise("`omnibus_root` must be set before running tests")
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def omnibus_path
|
|
218
|
+
[omnibus_bin_dir, omnibus_embedded_bin_dir, ENV["PATH"]].join(File::PATH_SEPARATOR)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def path_variable_key
|
|
222
|
+
ENV.keys.grep(/\Apath\Z/i).first
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
end
|
|
226
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014-2018 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/config"
|
|
19
|
+
require "chef/workstation_config_loader"
|
|
20
|
+
|
|
21
|
+
require_relative "cookbook_omnifetch"
|
|
22
|
+
require_relative "chef_server_api_multi"
|
|
23
|
+
|
|
24
|
+
# Define a config context for ChefCLI
|
|
25
|
+
class Chef::Config
|
|
26
|
+
|
|
27
|
+
default(:policy_document_native_api, true)
|
|
28
|
+
|
|
29
|
+
config_context(:chefcli) do
|
|
30
|
+
|
|
31
|
+
# Error when we encounter unknown keys. This makes it clear to the user if
|
|
32
|
+
# they get the name of the config key wrong (e.g., `chefcli.generator`
|
|
33
|
+
# instead of `chefcli.generator_cookbook`).
|
|
34
|
+
config_strict_mode(true)
|
|
35
|
+
|
|
36
|
+
default(:generator_cookbook, File.expand_path("../skeletons/code_generator", __FILE__))
|
|
37
|
+
|
|
38
|
+
config_context(:generator) do
|
|
39
|
+
config_strict_mode(true)
|
|
40
|
+
configurable :copyright_holder
|
|
41
|
+
configurable :email
|
|
42
|
+
configurable :license
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
module ChefCLI
|
|
48
|
+
module Configurable
|
|
49
|
+
|
|
50
|
+
def chef_config
|
|
51
|
+
return @chef_config if @chef_config
|
|
52
|
+
config_loader.load
|
|
53
|
+
@chef_config = Chef::Config
|
|
54
|
+
CookbookOmnifetch.integration.default_chef_server_http_client = default_chef_server_http_client
|
|
55
|
+
@chef_config
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def chefcli_config
|
|
59
|
+
chef_config.chefcli
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def config_loader
|
|
63
|
+
@config_loader ||= Chef::WorkstationConfigLoader.new(config[:config_file])
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def generator_config
|
|
67
|
+
chefcli_config.generator
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def knife_config
|
|
71
|
+
chef_config.knife
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def reset_config!
|
|
75
|
+
@chef_config = nil
|
|
76
|
+
@config_loader = nil
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def default_chef_server_http_client
|
|
80
|
+
lambda do
|
|
81
|
+
ChefServerAPIMulti.new(@chef_config.chef_server_url,
|
|
82
|
+
signing_key_filename: @chef_config.client_key,
|
|
83
|
+
client_name: @chef_config.node_name)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
end
|