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,126 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2015-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 "base"
|
|
19
|
+
require_relative "../ui"
|
|
20
|
+
require_relative "../policyfile_services/push_archive"
|
|
21
|
+
require_relative "../configurable"
|
|
22
|
+
require_relative "../dist"
|
|
23
|
+
|
|
24
|
+
module ChefCLI
|
|
25
|
+
module Command
|
|
26
|
+
|
|
27
|
+
class PushArchive < Base
|
|
28
|
+
|
|
29
|
+
include Configurable
|
|
30
|
+
|
|
31
|
+
banner(<<~E)
|
|
32
|
+
Usage: #{ChefCLI::Dist::EXEC} push-archive POLICY_GROUP ARCHIVE_FILE [options]
|
|
33
|
+
|
|
34
|
+
`#{ChefCLI::Dist::EXEC} push-archive` publishes a policy archive to a #{ChefCLI::Dist::SERVER_PRODUCT}. Policy
|
|
35
|
+
archives can be created with `chef export -a`. The policy will be applied to
|
|
36
|
+
the given POLICY_GROUP, which is a set of nodes that share the same
|
|
37
|
+
run_list and cookbooks.
|
|
38
|
+
|
|
39
|
+
For more information about Policyfiles, see our detailed README:
|
|
40
|
+
|
|
41
|
+
https://docs.chef.io/policyfile.html
|
|
42
|
+
|
|
43
|
+
Options:
|
|
44
|
+
E
|
|
45
|
+
|
|
46
|
+
option :config_file,
|
|
47
|
+
short: "-c CONFIG_FILE",
|
|
48
|
+
long: "--config CONFIG_FILE",
|
|
49
|
+
description: "Path to configuration file"
|
|
50
|
+
|
|
51
|
+
option :debug,
|
|
52
|
+
short: "-D",
|
|
53
|
+
long: "--debug",
|
|
54
|
+
description: "Enable stacktraces and other debug output",
|
|
55
|
+
default: false
|
|
56
|
+
|
|
57
|
+
attr_accessor :ui
|
|
58
|
+
|
|
59
|
+
attr_reader :policy_group
|
|
60
|
+
|
|
61
|
+
attr_reader :archive_path
|
|
62
|
+
|
|
63
|
+
def initialize(*args)
|
|
64
|
+
super
|
|
65
|
+
@policy_group = nil
|
|
66
|
+
@archive_path = nil
|
|
67
|
+
@chef_config = nil
|
|
68
|
+
@ui = UI.new
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def run(params)
|
|
72
|
+
return 1 unless apply_params!(params)
|
|
73
|
+
|
|
74
|
+
push_archive_service.run
|
|
75
|
+
|
|
76
|
+
0
|
|
77
|
+
rescue PolicyfileServiceError => e
|
|
78
|
+
handle_error(e)
|
|
79
|
+
1
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# @api private
|
|
83
|
+
def handle_error(error)
|
|
84
|
+
ui.err("Error: #{error.message}")
|
|
85
|
+
if error.respond_to?(:reason)
|
|
86
|
+
ui.err("Reason: #{error.reason}")
|
|
87
|
+
ui.err("")
|
|
88
|
+
ui.err(error.extended_error_info) if debug?
|
|
89
|
+
ui.err(error.cause.backtrace.join("\n")) if debug?
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# @api private
|
|
94
|
+
def push_archive_service
|
|
95
|
+
@push_archive_service ||=
|
|
96
|
+
ChefCLI::PolicyfileServices::PushArchive.new(
|
|
97
|
+
archive_file: archive_file,
|
|
98
|
+
policy_group: policy_group,
|
|
99
|
+
ui: ui,
|
|
100
|
+
config: chef_config
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def archive_file
|
|
105
|
+
File.expand_path(archive_path)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# @api private
|
|
109
|
+
def debug?
|
|
110
|
+
!!config[:debug]
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# @api private
|
|
114
|
+
def apply_params!(params)
|
|
115
|
+
remaining_args = parse_options(params)
|
|
116
|
+
if remaining_args.size != 2
|
|
117
|
+
ui.err(opt_parser)
|
|
118
|
+
return false
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
@policy_group, @archive_path = remaining_args
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,185 @@
|
|
|
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 "erb"
|
|
19
|
+
|
|
20
|
+
require_relative "../commands_map"
|
|
21
|
+
require_relative "../builtin_commands"
|
|
22
|
+
require_relative "base"
|
|
23
|
+
require_relative "../dist"
|
|
24
|
+
require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
|
|
25
|
+
|
|
26
|
+
module ChefCLI
|
|
27
|
+
|
|
28
|
+
class ShellCompletionTemplateContext
|
|
29
|
+
|
|
30
|
+
def commands
|
|
31
|
+
ChefCLI.commands_map.command_specs.inject({}) do |cmd_info, (_key, cmd_spec)|
|
|
32
|
+
cmd_info[cmd_spec.name] = cmd_spec.description
|
|
33
|
+
cmd_info
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def get_binding
|
|
38
|
+
binding
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
module Command
|
|
43
|
+
class ShellInit < ChefCLI::Command::Base
|
|
44
|
+
|
|
45
|
+
SUPPORTED_SHELLS = %w{ bash fish zsh sh powershell posh}.map(&:freeze).freeze
|
|
46
|
+
|
|
47
|
+
banner(<<~HELP)
|
|
48
|
+
Usage: #{ChefCLI::Dist::EXEC} shell-init
|
|
49
|
+
|
|
50
|
+
`#{ChefCLI::Dist::EXEC} shell-init` modifies your shell environment to make ChefCLI or Workstation your
|
|
51
|
+
default Ruby.
|
|
52
|
+
|
|
53
|
+
To enable for just the current shell session:
|
|
54
|
+
|
|
55
|
+
In sh, bash, and zsh:
|
|
56
|
+
eval "$(#{ChefCLI::Dist::EXEC} shell-init SHELL_NAME)"
|
|
57
|
+
In fish:
|
|
58
|
+
eval (#{ChefCLI::Dist::EXEC} shell-init fish)
|
|
59
|
+
In Powershell:
|
|
60
|
+
#{ChefCLI::Dist::EXEC} shell-init powershell | Invoke-Expression
|
|
61
|
+
|
|
62
|
+
To permanently enable:
|
|
63
|
+
|
|
64
|
+
In sh, bash, and zsh:
|
|
65
|
+
echo 'eval "$(#{ChefCLI::Dist::EXEC} shell-init SHELL_NAME)"' >> ~/.YOUR_SHELL_RC_FILE
|
|
66
|
+
In fish:
|
|
67
|
+
echo 'eval (#{ChefCLI::Dist::EXEC} shell-init SHELL_NAME)' >> ~/.config/fish/config.fish
|
|
68
|
+
In Powershell
|
|
69
|
+
"#{ChefCLI::Dist::EXEC} shell-init powershell | Invoke-Expression" >> $PROFILE
|
|
70
|
+
|
|
71
|
+
OPTIONS:
|
|
72
|
+
|
|
73
|
+
HELP
|
|
74
|
+
|
|
75
|
+
option :omnibus_dir,
|
|
76
|
+
long: "--omnibus-dir OMNIBUS_DIR",
|
|
77
|
+
description: "Alternate path to omnibus install (used for testing)"
|
|
78
|
+
|
|
79
|
+
def initialize
|
|
80
|
+
super
|
|
81
|
+
@shell_completion_template_context = nil
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def omnibus_root
|
|
85
|
+
config[:omnibus_dir] || super
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def run(argv)
|
|
89
|
+
# Currently we don't have any shell-specific features, so we ignore the
|
|
90
|
+
# shell name. We'll need it if we add completion.
|
|
91
|
+
remaining_args = parse_options(argv)
|
|
92
|
+
shell_name = remaining_args.first
|
|
93
|
+
if shell_name.nil?
|
|
94
|
+
err("Please specify what shell you are using\n")
|
|
95
|
+
err(opt_parser.to_s)
|
|
96
|
+
return 1
|
|
97
|
+
elsif !SUPPORTED_SHELLS.include?(shell_name)
|
|
98
|
+
err("Shell `#{shell_name}' is not currently supported")
|
|
99
|
+
err("Supported shells are: #{SUPPORTED_SHELLS.join(' ')}")
|
|
100
|
+
return 1
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
env = omnibus_env.dup
|
|
104
|
+
path = env.delete("PATH")
|
|
105
|
+
export(shell_name, "PATH", path)
|
|
106
|
+
env.each do |var_name, value|
|
|
107
|
+
export(shell_name, var_name, value)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
emit_shell_cmd(completion_for(shell_name))
|
|
111
|
+
0
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def emit_shell_cmd(cmd)
|
|
115
|
+
msg(cmd) unless cmd.empty?
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def completion_for(shell)
|
|
119
|
+
return "" unless (completion_template_basename = completion_template_for(shell))
|
|
120
|
+
completion_template_path = expand_completion_template_path(completion_template_basename)
|
|
121
|
+
erb = ERB.new(File.read(completion_template_path), nil, "-")
|
|
122
|
+
context_binding = shell_completion_template_context.get_binding
|
|
123
|
+
erb.result(context_binding)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def completion_template_for(shell)
|
|
127
|
+
case shell
|
|
128
|
+
when "bash"
|
|
129
|
+
"bash.sh.erb"
|
|
130
|
+
when "fish"
|
|
131
|
+
"chef.fish.erb"
|
|
132
|
+
when "zsh"
|
|
133
|
+
"zsh.zsh.erb"
|
|
134
|
+
else
|
|
135
|
+
# Pull requests accepted!
|
|
136
|
+
nil
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def expand_completion_template_path(basename)
|
|
141
|
+
File.join(File.expand_path("../../completions", __FILE__), basename)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def shell_completion_template_context
|
|
145
|
+
@shell_completion_template_context ||= ShellCompletionTemplateContext.new
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def export(shell, var, val)
|
|
149
|
+
case shell
|
|
150
|
+
when "sh", "bash", "zsh"
|
|
151
|
+
posix_shell_export(var, val)
|
|
152
|
+
when "fish"
|
|
153
|
+
fish_shell_export(var, val)
|
|
154
|
+
when "powershell", "posh"
|
|
155
|
+
powershell_export(var, val)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def posix_shell_export(var, val)
|
|
160
|
+
emit_shell_cmd(%Q{export #{var}="#{val}"})
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def fish_shell_export(var, val)
|
|
164
|
+
# Fish's syntax for setting PATH is special. Path elements are
|
|
165
|
+
# divided by spaces (instead of colons). We also send STDERR to
|
|
166
|
+
# /dev/null to avoid Fish's helpful warnings about nonexistent
|
|
167
|
+
# PATH elements.
|
|
168
|
+
if var == "PATH"
|
|
169
|
+
emit_shell_cmd(%Q{set -gx #{var} "#{val.split(':').join('" "')}" 2>/dev/null;})
|
|
170
|
+
else
|
|
171
|
+
emit_shell_cmd(%Q{set -gx #{var} "#{val}";})
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def powershell_export(var, val)
|
|
176
|
+
emit_shell_cmd(%Q{$env:#{var}="#{val}"})
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def check_license_acceptance
|
|
180
|
+
# It gives a very weird error if users try to eval the shell-init command and it requests the
|
|
181
|
+
# license from them. Instead, let users shell-init without accepting the license.
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2015-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 "base"
|
|
19
|
+
require_relative "../ui"
|
|
20
|
+
require_relative "../configurable"
|
|
21
|
+
require_relative "../policyfile/lister"
|
|
22
|
+
require_relative "../policyfile_services/show_policy"
|
|
23
|
+
require_relative "../dist"
|
|
24
|
+
|
|
25
|
+
module ChefCLI
|
|
26
|
+
module Command
|
|
27
|
+
|
|
28
|
+
class ShowPolicy < Base
|
|
29
|
+
|
|
30
|
+
banner(<<~BANNER)
|
|
31
|
+
Usage: #{ChefCLI::Dist::EXEC} show-policy [POLICY_NAME [POLICY_GROUP]] [options]
|
|
32
|
+
|
|
33
|
+
`#{ChefCLI::Dist::EXEC} show-policy` Displays the revisions of policyfiles on the server. By
|
|
34
|
+
default, only active policy revisions are shown. Use the `--orphans` options to
|
|
35
|
+
show policy revisions that are not assigned to any policy group.
|
|
36
|
+
|
|
37
|
+
When both POLICY_NAME and POLICY_GROUP are given, the command shows the content
|
|
38
|
+
of a the active policyfile lock for the given POLICY_GROUP. See also the `diff`
|
|
39
|
+
command.
|
|
40
|
+
|
|
41
|
+
See our detailed README for more information:
|
|
42
|
+
|
|
43
|
+
https://docs.chef.io/policyfile.html
|
|
44
|
+
|
|
45
|
+
Options:
|
|
46
|
+
|
|
47
|
+
BANNER
|
|
48
|
+
|
|
49
|
+
option :show_orphans,
|
|
50
|
+
short: "-o",
|
|
51
|
+
long: "--orphans",
|
|
52
|
+
description: "Show policy revisions that are unassigned",
|
|
53
|
+
default: false
|
|
54
|
+
|
|
55
|
+
option :pager,
|
|
56
|
+
long: "--[no-]pager",
|
|
57
|
+
description: "Enable/disable paged policyfile lock ouput (default: enabled)",
|
|
58
|
+
default: true,
|
|
59
|
+
boolean: true
|
|
60
|
+
|
|
61
|
+
option :config_file,
|
|
62
|
+
short: "-c CONFIG_FILE",
|
|
63
|
+
long: "--config CONFIG_FILE",
|
|
64
|
+
description: "Path to configuration file"
|
|
65
|
+
|
|
66
|
+
option :debug,
|
|
67
|
+
short: "-D",
|
|
68
|
+
long: "--debug",
|
|
69
|
+
description: "Enable stacktraces and other debug output",
|
|
70
|
+
default: false
|
|
71
|
+
|
|
72
|
+
include Configurable
|
|
73
|
+
|
|
74
|
+
attr_accessor :ui
|
|
75
|
+
|
|
76
|
+
attr_reader :policy_name
|
|
77
|
+
|
|
78
|
+
attr_reader :policy_group
|
|
79
|
+
|
|
80
|
+
def initialize(*args)
|
|
81
|
+
super
|
|
82
|
+
@show_all_policies = nil
|
|
83
|
+
@policy_name = nil
|
|
84
|
+
@policy_group = nil
|
|
85
|
+
@ui = UI.new
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def run(params)
|
|
89
|
+
return 1 unless apply_params!(params)
|
|
90
|
+
show_policy_service.run
|
|
91
|
+
0
|
|
92
|
+
rescue PolicyfileServiceError => e
|
|
93
|
+
handle_error(e)
|
|
94
|
+
1
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def show_policy_service
|
|
98
|
+
@policy_list_service ||=
|
|
99
|
+
PolicyfileServices::ShowPolicy.new(config: chef_config,
|
|
100
|
+
ui: ui,
|
|
101
|
+
policy_name: policy_name,
|
|
102
|
+
policy_group: policy_group,
|
|
103
|
+
show_orphans: show_orphans?,
|
|
104
|
+
summary_diff: show_summary_diff?,
|
|
105
|
+
pager: enable_pager?)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def debug?
|
|
109
|
+
!!config[:debug]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def show_summary_diff?
|
|
113
|
+
false
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def show_orphans?
|
|
117
|
+
config[:show_orphans]
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def enable_pager?
|
|
121
|
+
config[:pager]
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def handle_error(error)
|
|
125
|
+
ui.err("Error: #{error.message}")
|
|
126
|
+
if error.respond_to?(:reason)
|
|
127
|
+
ui.err("Reason: #{error.reason}")
|
|
128
|
+
ui.err("")
|
|
129
|
+
ui.err(error.extended_error_info) if debug?
|
|
130
|
+
ui.err(error.cause.backtrace.join("\n")) if debug?
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def apply_params!(params)
|
|
135
|
+
remaining_args = parse_options(params)
|
|
136
|
+
|
|
137
|
+
if remaining_args.empty? && show_summary_diff?
|
|
138
|
+
ui.err("The --summary-diff option can only be used when showing a single policy")
|
|
139
|
+
ui.err("")
|
|
140
|
+
ui.err(opt_parser)
|
|
141
|
+
false
|
|
142
|
+
elsif remaining_args.empty?
|
|
143
|
+
@show_all_policies = true
|
|
144
|
+
true
|
|
145
|
+
elsif remaining_args.size == 1
|
|
146
|
+
@policy_name = remaining_args.first
|
|
147
|
+
@show_all_policies = false
|
|
148
|
+
true
|
|
149
|
+
elsif remaining_args.size == 2
|
|
150
|
+
@policy_name = remaining_args[0]
|
|
151
|
+
@policy_group = remaining_args[1]
|
|
152
|
+
@show_all_policies = false
|
|
153
|
+
true
|
|
154
|
+
else
|
|
155
|
+
ui.err("Too many arguments")
|
|
156
|
+
ui.err("")
|
|
157
|
+
ui.err(opt_parser)
|
|
158
|
+
false
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|