chef 12.18.31 → 13.0.118
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/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
|
@@ -21,442 +21,9 @@ require "chef/knife"
|
|
|
21
21
|
class Chef
|
|
22
22
|
class Knife
|
|
23
23
|
class CookbookCreate < Knife
|
|
24
|
-
|
|
25
|
-
deps do
|
|
26
|
-
require "chef/json_compat"
|
|
27
|
-
require "uri"
|
|
28
|
-
require "fileutils"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
banner "knife cookbook create COOKBOOK (options)"
|
|
32
|
-
|
|
33
|
-
option :cookbook_path,
|
|
34
|
-
:short => "-o PATH",
|
|
35
|
-
:long => "--cookbook-path PATH",
|
|
36
|
-
:description => "The directory where the cookbook will be created"
|
|
37
|
-
|
|
38
|
-
option :readme_format,
|
|
39
|
-
:short => "-r FORMAT",
|
|
40
|
-
:long => "--readme-format FORMAT",
|
|
41
|
-
:description => "Format of the README file, supported formats are 'md' (markdown) and 'rdoc' (rdoc)"
|
|
42
|
-
|
|
43
|
-
option :cookbook_license,
|
|
44
|
-
:short => "-I LICENSE",
|
|
45
|
-
:long => "--license LICENSE",
|
|
46
|
-
:description => "License for cookbook, apachev2, gplv2, gplv3, mit or none"
|
|
47
|
-
|
|
48
|
-
option :cookbook_copyright,
|
|
49
|
-
:short => "-C COPYRIGHT",
|
|
50
|
-
:long => "--copyright COPYRIGHT",
|
|
51
|
-
:description => "Name of copyright holder"
|
|
52
|
-
|
|
53
|
-
option :cookbook_email,
|
|
54
|
-
:short => "-m EMAIL",
|
|
55
|
-
:long => "--email EMAIL",
|
|
56
|
-
:description => "Email address of cookbook maintainer"
|
|
57
|
-
|
|
58
24
|
def run
|
|
59
|
-
Chef::Log.
|
|
60
|
-
This command is being deprecated in favor of `chef generate cookbook` and will soon return an error.
|
|
61
|
-
Please use `chef generate cookbook` instead of this command.
|
|
62
|
-
EOF
|
|
63
|
-
self.config = Chef::Config.merge!(config)
|
|
64
|
-
if @name_args.length < 1
|
|
65
|
-
show_usage
|
|
66
|
-
ui.fatal("You must specify a cookbook name")
|
|
67
|
-
exit 1
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
if default_cookbook_path_empty? && parameter_empty?(config[:cookbook_path])
|
|
71
|
-
raise ArgumentError, "Default cookbook_path is not specified in the knife.rb config file, and a value to -o is not provided. Nowhere to write the new cookbook to."
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
cookbook_path = File.expand_path(Array(config[:cookbook_path]).first)
|
|
75
|
-
cookbook_name = @name_args.first
|
|
76
|
-
copyright = config[:cookbook_copyright] || "YOUR_COMPANY_NAME"
|
|
77
|
-
email = config[:cookbook_email] || "YOUR_EMAIL"
|
|
78
|
-
license = ((config[:cookbook_license] != "false") && config[:cookbook_license]) || "none"
|
|
79
|
-
readme_format = ((config[:readme_format] != "false") && config[:readme_format]) || "md"
|
|
80
|
-
create_cookbook(cookbook_path, cookbook_name, copyright, license)
|
|
81
|
-
create_readme(cookbook_path, cookbook_name, readme_format)
|
|
82
|
-
create_changelog(cookbook_path, cookbook_name)
|
|
83
|
-
create_metadata(cookbook_path, cookbook_name, copyright, email, license, readme_format)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def create_cookbook(dir, cookbook_name, copyright, license)
|
|
87
|
-
msg("** Creating cookbook #{cookbook_name} in #{dir}")
|
|
88
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "attributes")}"
|
|
89
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "recipes")}"
|
|
90
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "definitions")}"
|
|
91
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "libraries")}"
|
|
92
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "resources")}"
|
|
93
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "providers")}"
|
|
94
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "files", "default")}"
|
|
95
|
-
FileUtils.mkdir_p "#{File.join(dir, cookbook_name, "templates", "default")}"
|
|
96
|
-
unless File.exists?(File.join(dir, cookbook_name, "recipes", "default.rb"))
|
|
97
|
-
open(File.join(dir, cookbook_name, "recipes", "default.rb"), "w") do |file|
|
|
98
|
-
file.puts <<-EOH
|
|
99
|
-
#
|
|
100
|
-
# Cookbook Name:: #{cookbook_name}
|
|
101
|
-
# Recipe:: default
|
|
102
|
-
#
|
|
103
|
-
# Copyright #{Time.now.year}, #{copyright}
|
|
104
|
-
#
|
|
105
|
-
EOH
|
|
106
|
-
case license
|
|
107
|
-
when "apachev2"
|
|
108
|
-
file.puts <<-EOH
|
|
109
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
110
|
-
# you may not use this file except in compliance with the License.
|
|
111
|
-
# You may obtain a copy of the License at
|
|
112
|
-
#
|
|
113
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
114
|
-
#
|
|
115
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
116
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
117
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
118
|
-
# See the License for the specific language governing permissions and
|
|
119
|
-
# limitations under the License.
|
|
120
|
-
#
|
|
121
|
-
EOH
|
|
122
|
-
when "gplv2"
|
|
123
|
-
file.puts <<-EOH
|
|
124
|
-
# This program is free software; you can redistribute it and/or modify
|
|
125
|
-
# it under the terms of the GNU General Public License as published by
|
|
126
|
-
# the Free Software Foundation; either version 2 of the License, or
|
|
127
|
-
# (at your option) any later version.
|
|
128
|
-
#
|
|
129
|
-
# This program is distributed in the hope that it will be useful,
|
|
130
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
131
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
132
|
-
# GNU General Public License for more details.
|
|
133
|
-
#
|
|
134
|
-
# You should have received a copy of the GNU General Public License along
|
|
135
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
136
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
137
|
-
#
|
|
138
|
-
EOH
|
|
139
|
-
when "gplv3"
|
|
140
|
-
file.puts <<-EOH
|
|
141
|
-
# This program is free software: you can redistribute it and/or modify
|
|
142
|
-
# it under the terms of the GNU General Public License as published by
|
|
143
|
-
# the Free Software Foundation, either version 3 of the License, or
|
|
144
|
-
# (at your option) any later version.
|
|
145
|
-
#
|
|
146
|
-
# This program is distributed in the hope that it will be useful,
|
|
147
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
148
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
149
|
-
# GNU General Public License for more details.
|
|
150
|
-
#
|
|
151
|
-
# You should have received a copy of the GNU General Public License
|
|
152
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
153
|
-
#
|
|
154
|
-
EOH
|
|
155
|
-
when "mit"
|
|
156
|
-
file.puts <<-EOH
|
|
157
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
|
158
|
-
# a copy of this software and associated documentation files (the
|
|
159
|
-
# "Software"), to deal in the Software without restriction, including
|
|
160
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
|
161
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
162
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
|
163
|
-
# the following conditions:
|
|
164
|
-
#
|
|
165
|
-
# The above copyright notice and this permission notice shall be
|
|
166
|
-
# included in all copies or substantial portions of the Software.
|
|
167
|
-
#
|
|
168
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
169
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
170
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
171
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
172
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
173
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
174
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
175
|
-
#
|
|
176
|
-
EOH
|
|
177
|
-
when "none"
|
|
178
|
-
file.puts <<-EOH
|
|
179
|
-
# All rights reserved - Do Not Redistribute
|
|
180
|
-
#
|
|
181
|
-
EOH
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
def create_changelog(dir, cookbook_name)
|
|
188
|
-
msg("** Creating CHANGELOG for cookbook: #{cookbook_name}")
|
|
189
|
-
unless File.exists?(File.join(dir, cookbook_name, "CHANGELOG.md"))
|
|
190
|
-
open(File.join(dir, cookbook_name, "CHANGELOG.md"), "w") do |file|
|
|
191
|
-
file.puts <<-EOH
|
|
192
|
-
# #{cookbook_name} CHANGELOG
|
|
193
|
-
|
|
194
|
-
This file is used to list changes made in each version of the #{cookbook_name} cookbook.
|
|
195
|
-
|
|
196
|
-
## 0.1.0
|
|
197
|
-
- [your_name] - Initial release of #{cookbook_name}
|
|
198
|
-
|
|
199
|
-
- - -
|
|
200
|
-
Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
|
|
201
|
-
|
|
202
|
-
The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
|
|
203
|
-
EOH
|
|
204
|
-
end
|
|
205
|
-
end
|
|
25
|
+
Chef::Log.fatal("knife cookbook create has been removed. Please use `chef generate cookbook` from the ChefDK")
|
|
206
26
|
end
|
|
207
|
-
|
|
208
|
-
def create_readme(dir, cookbook_name, readme_format)
|
|
209
|
-
msg("** Creating README for cookbook: #{cookbook_name}")
|
|
210
|
-
unless File.exist?(File.join(dir, cookbook_name, "README.#{readme_format}"))
|
|
211
|
-
open(File.join(dir, cookbook_name, "README.#{readme_format}"), "w") do |file|
|
|
212
|
-
case readme_format
|
|
213
|
-
when "rdoc"
|
|
214
|
-
file.puts <<-EOH
|
|
215
|
-
= #{cookbook_name} Cookbook
|
|
216
|
-
TODO: Enter the cookbook description here.
|
|
217
|
-
|
|
218
|
-
e.g.
|
|
219
|
-
This cookbook makes your favorite breakfast sandwich.
|
|
220
|
-
|
|
221
|
-
== Requirements
|
|
222
|
-
TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
|
|
223
|
-
|
|
224
|
-
e.g.
|
|
225
|
-
==== packages
|
|
226
|
-
- +toaster+ - #{cookbook_name} needs toaster to brown your bagel.
|
|
227
|
-
|
|
228
|
-
== Attributes
|
|
229
|
-
TODO: List your cookbook attributes here.
|
|
230
|
-
|
|
231
|
-
e.g.
|
|
232
|
-
==== #{cookbook_name}::default
|
|
233
|
-
<table>
|
|
234
|
-
<tr>
|
|
235
|
-
<th>Key</th>
|
|
236
|
-
<th>Type</th>
|
|
237
|
-
<th>Description</th>
|
|
238
|
-
<th>Default</th>
|
|
239
|
-
</tr>
|
|
240
|
-
<tr>
|
|
241
|
-
<td><tt>['#{cookbook_name}']['bacon']</tt></td>
|
|
242
|
-
<td>Boolean</td>
|
|
243
|
-
<td>whether to include bacon</td>
|
|
244
|
-
<td><tt>true</tt></td>
|
|
245
|
-
</tr>
|
|
246
|
-
</table>
|
|
247
|
-
|
|
248
|
-
== Usage
|
|
249
|
-
==== #{cookbook_name}::default
|
|
250
|
-
TODO: Write usage instructions for each cookbook.
|
|
251
|
-
|
|
252
|
-
e.g.
|
|
253
|
-
Just include +#{cookbook_name}+ in your node's +run_list+:
|
|
254
|
-
|
|
255
|
-
{
|
|
256
|
-
"name":"my_node",
|
|
257
|
-
"run_list": [
|
|
258
|
-
"recipe[#{cookbook_name}]"
|
|
259
|
-
]
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
== Contributing
|
|
263
|
-
TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
|
|
264
|
-
|
|
265
|
-
e.g.
|
|
266
|
-
1. Fork the repository on Github
|
|
267
|
-
2. Create a named feature branch (like `add_component_x`)
|
|
268
|
-
3. Write your change
|
|
269
|
-
4. Write tests for your change (if applicable)
|
|
270
|
-
5. Run the tests, ensuring they all pass
|
|
271
|
-
6. Submit a Pull Request using Github
|
|
272
|
-
|
|
273
|
-
== License and Authors
|
|
274
|
-
Authors: TODO: List authors
|
|
275
|
-
EOH
|
|
276
|
-
when "md", "mkd", "txt"
|
|
277
|
-
file.puts <<-EOH
|
|
278
|
-
# #{cookbook_name} Cookbook
|
|
279
|
-
|
|
280
|
-
TODO: Enter the cookbook description here.
|
|
281
|
-
|
|
282
|
-
e.g.
|
|
283
|
-
This cookbook makes your favorite breakfast sandwich.
|
|
284
|
-
|
|
285
|
-
## Requirements
|
|
286
|
-
|
|
287
|
-
TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
|
|
288
|
-
|
|
289
|
-
e.g.
|
|
290
|
-
### Platforms
|
|
291
|
-
|
|
292
|
-
- SandwichOS
|
|
293
|
-
|
|
294
|
-
### Chef
|
|
295
|
-
|
|
296
|
-
- Chef 12.0 or later
|
|
297
|
-
|
|
298
|
-
### Cookbooks
|
|
299
|
-
|
|
300
|
-
- `toaster` - #{cookbook_name} needs toaster to brown your bagel.
|
|
301
|
-
|
|
302
|
-
## Attributes
|
|
303
|
-
|
|
304
|
-
TODO: List your cookbook attributes here.
|
|
305
|
-
|
|
306
|
-
e.g.
|
|
307
|
-
### #{cookbook_name}::default
|
|
308
|
-
|
|
309
|
-
<table>
|
|
310
|
-
<tr>
|
|
311
|
-
<th>Key</th>
|
|
312
|
-
<th>Type</th>
|
|
313
|
-
<th>Description</th>
|
|
314
|
-
<th>Default</th>
|
|
315
|
-
</tr>
|
|
316
|
-
<tr>
|
|
317
|
-
<td><tt>['#{cookbook_name}']['bacon']</tt></td>
|
|
318
|
-
<td>Boolean</td>
|
|
319
|
-
<td>whether to include bacon</td>
|
|
320
|
-
<td><tt>true</tt></td>
|
|
321
|
-
</tr>
|
|
322
|
-
</table>
|
|
323
|
-
|
|
324
|
-
## Usage
|
|
325
|
-
|
|
326
|
-
### #{cookbook_name}::default
|
|
327
|
-
|
|
328
|
-
TODO: Write usage instructions for each cookbook.
|
|
329
|
-
|
|
330
|
-
e.g.
|
|
331
|
-
Just include `#{cookbook_name}` in your node's `run_list`:
|
|
332
|
-
|
|
333
|
-
```json
|
|
334
|
-
{
|
|
335
|
-
"name":"my_node",
|
|
336
|
-
"run_list": [
|
|
337
|
-
"recipe[#{cookbook_name}]"
|
|
338
|
-
]
|
|
339
|
-
}
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
## Contributing
|
|
343
|
-
|
|
344
|
-
TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
|
|
345
|
-
|
|
346
|
-
e.g.
|
|
347
|
-
1. Fork the repository on Github
|
|
348
|
-
2. Create a named feature branch (like `add_component_x`)
|
|
349
|
-
3. Write your change
|
|
350
|
-
4. Write tests for your change (if applicable)
|
|
351
|
-
5. Run the tests, ensuring they all pass
|
|
352
|
-
6. Submit a Pull Request using Github
|
|
353
|
-
|
|
354
|
-
## License and Authors
|
|
355
|
-
|
|
356
|
-
Authors: TODO: List authors
|
|
357
|
-
|
|
358
|
-
EOH
|
|
359
|
-
else
|
|
360
|
-
file.puts <<-EOH
|
|
361
|
-
#{cookbook_name} Cookbook
|
|
362
|
-
#{'=' * "#{cookbook_name} Cookbook".length}
|
|
363
|
-
TODO: Enter the cookbook description here.
|
|
364
|
-
|
|
365
|
-
e.g.
|
|
366
|
-
This cookbook makes your favorite breakfast sandwich.
|
|
367
|
-
|
|
368
|
-
Requirements
|
|
369
|
-
TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc.
|
|
370
|
-
|
|
371
|
-
e.g.
|
|
372
|
-
toaster #{cookbook_name} needs toaster to brown your bagel.
|
|
373
|
-
|
|
374
|
-
Attributes
|
|
375
|
-
TODO: List your cookbook attributes here.
|
|
376
|
-
|
|
377
|
-
#{cookbook_name}
|
|
378
|
-
Key Type Description Default
|
|
379
|
-
['#{cookbook_name}']['bacon'] Boolean whether to include bacon true
|
|
380
|
-
|
|
381
|
-
Usage
|
|
382
|
-
#{cookbook_name}
|
|
383
|
-
TODO: Write usage instructions for each cookbook.
|
|
384
|
-
|
|
385
|
-
e.g.
|
|
386
|
-
Just include `#{cookbook_name}` in your node's `run_list`:
|
|
387
|
-
|
|
388
|
-
[code]
|
|
389
|
-
{
|
|
390
|
-
"name":"my_node",
|
|
391
|
-
"run_list": [
|
|
392
|
-
"recipe[#{cookbook_name}]"
|
|
393
|
-
]
|
|
394
|
-
}
|
|
395
|
-
[/code]
|
|
396
|
-
|
|
397
|
-
Contributing
|
|
398
|
-
TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section.
|
|
399
|
-
|
|
400
|
-
e.g.
|
|
401
|
-
1. Fork the repository on Github
|
|
402
|
-
2. Create a named feature branch (like `add_component_x`)
|
|
403
|
-
3. Write your change
|
|
404
|
-
4. Write tests for your change (if applicable)
|
|
405
|
-
5. Run the tests, ensuring they all pass
|
|
406
|
-
6. Submit a Pull Request using Github
|
|
407
|
-
|
|
408
|
-
License and Authors
|
|
409
|
-
Authors: TODO: List authors
|
|
410
|
-
EOH
|
|
411
|
-
end
|
|
412
|
-
end
|
|
413
|
-
end
|
|
414
|
-
end
|
|
415
|
-
|
|
416
|
-
def create_metadata(dir, cookbook_name, copyright, email, license, readme_format)
|
|
417
|
-
msg("** Creating metadata for cookbook: #{cookbook_name}")
|
|
418
|
-
|
|
419
|
-
license_name = case license
|
|
420
|
-
when "apachev2"
|
|
421
|
-
"Apache 2.0"
|
|
422
|
-
when "gplv2"
|
|
423
|
-
"GNU Public License 2.0"
|
|
424
|
-
when "gplv3"
|
|
425
|
-
"GNU Public License 3.0"
|
|
426
|
-
when "mit"
|
|
427
|
-
"MIT"
|
|
428
|
-
when "none"
|
|
429
|
-
"All rights reserved"
|
|
430
|
-
end
|
|
431
|
-
|
|
432
|
-
unless File.exist?(File.join(dir, cookbook_name, "metadata.rb"))
|
|
433
|
-
open(File.join(dir, cookbook_name, "metadata.rb"), "w") do |file|
|
|
434
|
-
if File.exist?(File.join(dir, cookbook_name, "README.#{readme_format}"))
|
|
435
|
-
long_description = "long_description IO.read(File.join(File.dirname(__FILE__), 'README.#{readme_format}'))"
|
|
436
|
-
end
|
|
437
|
-
file.puts <<-EOH
|
|
438
|
-
name '#{cookbook_name}'
|
|
439
|
-
maintainer '#{copyright}'
|
|
440
|
-
maintainer_email '#{email}'
|
|
441
|
-
license '#{license_name}'
|
|
442
|
-
description 'Installs/Configures #{cookbook_name}'
|
|
443
|
-
#{long_description}
|
|
444
|
-
version '0.1.0'
|
|
445
|
-
EOH
|
|
446
|
-
end
|
|
447
|
-
end
|
|
448
|
-
end
|
|
449
|
-
|
|
450
|
-
private
|
|
451
|
-
|
|
452
|
-
def default_cookbook_path_empty?
|
|
453
|
-
Chef::Config[:cookbook_path].nil? || Chef::Config[:cookbook_path].empty?
|
|
454
|
-
end
|
|
455
|
-
|
|
456
|
-
def parameter_empty?(parameter)
|
|
457
|
-
parameter.nil? || parameter.empty?
|
|
458
|
-
end
|
|
459
|
-
|
|
460
27
|
end
|
|
461
28
|
end
|
|
462
29
|
end
|
|
@@ -70,7 +70,7 @@ class Chef
|
|
|
70
70
|
ui.info("Downloading #{@cookbook_name} cookbook version #{@version}")
|
|
71
71
|
|
|
72
72
|
cookbook = Chef::CookbookVersion.load(@cookbook_name, @version)
|
|
73
|
-
manifest = cookbook.
|
|
73
|
+
manifest = cookbook.cookbook_manifest
|
|
74
74
|
|
|
75
75
|
basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
|
|
76
76
|
if File.exists?(basedir)
|
|
@@ -83,10 +83,9 @@ class Chef
|
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
next unless manifest.has_key?(segment)
|
|
86
|
+
manifest.by_parent_directory.each do |segment, files|
|
|
88
87
|
ui.info("Downloading #{segment}")
|
|
89
|
-
|
|
88
|
+
files.each do |segment_file|
|
|
90
89
|
dest = File.join(basedir, segment_file["path"].gsub("/", File::SEPARATOR))
|
|
91
90
|
Chef::Log.debug("Downloading #{segment_file['path']} to #{dest}")
|
|
92
91
|
FileUtils.mkdir_p(File.dirname(dest))
|
|
@@ -76,9 +76,13 @@ class Chef
|
|
|
76
76
|
pretty_print(temp_file.read)
|
|
77
77
|
|
|
78
78
|
when 3 # We are showing a specific part of the cookbook
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
if segment == "metadata"
|
|
80
|
+
output(cookbook.metadata)
|
|
81
|
+
else
|
|
82
|
+
output(cookbook.files_for(segment))
|
|
83
|
+
end
|
|
84
|
+
when 2 # We are showing the whole cookbook
|
|
85
|
+
output(cookbook.display)
|
|
82
86
|
when 1 # We are showing the cookbook versions (all of them)
|
|
83
87
|
env = config[:environment]
|
|
84
88
|
api_endpoint = env ? "environments/#{env}/cookbooks/#{cookbook_name}" : "cookbooks/#{cookbook_name}"
|
|
@@ -161,9 +161,9 @@ class Chef
|
|
|
161
161
|
def convert_path(upstream_file)
|
|
162
162
|
# converts a Windows path (C:\foo) to a mingw path (/c/foo)
|
|
163
163
|
if ENV["MSYSTEM"] == "MINGW32"
|
|
164
|
-
|
|
164
|
+
upstream_file.sub(/^([[:alpha:]]):/, '/\1')
|
|
165
165
|
else
|
|
166
|
-
|
|
166
|
+
Shellwords.escape upstream_file
|
|
167
167
|
end
|
|
168
168
|
end
|
|
169
169
|
|
|
@@ -161,13 +161,14 @@ validation_client_name "#{@chef_config[:validation_client_name]}"
|
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
if Chef::Config[:fips]
|
|
164
|
-
client_rb << <<-CONFIG
|
|
165
|
-
fips true
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
164
|
+
client_rb << <<-CONFIG.gsub(/^ {14}/, "")
|
|
165
|
+
fips true
|
|
166
|
+
require "chef/version"
|
|
167
|
+
chef_version = ::Chef::VERSION.split(".")
|
|
168
|
+
unless chef_version[0].to_i > 12 || (chef_version[0].to_i == 12 && chef_version[1].to_i >= 8)
|
|
169
|
+
raise "FIPS Mode requested but not supported by this client"
|
|
170
|
+
end
|
|
171
|
+
CONFIG
|
|
171
172
|
end
|
|
172
173
|
|
|
173
174
|
client_rb
|
|
@@ -131,9 +131,9 @@ class Chef
|
|
|
131
131
|
|
|
132
132
|
def git_repo?(directory)
|
|
133
133
|
if File.directory?(File.join(directory, ".git"))
|
|
134
|
-
|
|
134
|
+
true
|
|
135
135
|
elsif File.dirname(directory) == directory
|
|
136
|
-
|
|
136
|
+
false
|
|
137
137
|
else
|
|
138
138
|
git_repo?(File.dirname(directory))
|
|
139
139
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Author:: Christopher Brown (<cb@chef.io>)
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2009-
|
|
3
|
+
# Copyright:: Copyright 2009-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -20,7 +20,6 @@ require "chef/version"
|
|
|
20
20
|
require "chef/util/path_helper"
|
|
21
21
|
require "chef/knife/core/gem_glob_loader"
|
|
22
22
|
require "chef/knife/core/hashed_command_loader"
|
|
23
|
-
require "chef/knife/core/custom_manifest_loader"
|
|
24
23
|
|
|
25
24
|
class Chef
|
|
26
25
|
class Knife
|
|
@@ -38,7 +37,6 @@ class Chef
|
|
|
38
37
|
#
|
|
39
38
|
class SubcommandLoader
|
|
40
39
|
attr_reader :chef_config_dir
|
|
41
|
-
attr_reader :env
|
|
42
40
|
|
|
43
41
|
# A small factory method. Eventually, this is the only place
|
|
44
42
|
# where SubcommandLoader should know about its subclasses, but
|
|
@@ -50,9 +48,6 @@ class Chef
|
|
|
50
48
|
if autogenerated_manifest?
|
|
51
49
|
Chef::Log.debug("Using autogenerated hashed command manifest #{plugin_manifest_path}")
|
|
52
50
|
Knife::SubcommandLoader::HashedCommandLoader.new(chef_config_dir, plugin_manifest)
|
|
53
|
-
elsif custom_manifest?
|
|
54
|
-
Chef.deprecated(:internal_api, "Using custom manifest #{plugin_manifest_path} is deprecated. Please use a `knife rehash` autogenerated manifest instead.")
|
|
55
|
-
Knife::SubcommandLoader::CustomManifestLoader.new(chef_config_dir, plugin_manifest)
|
|
56
51
|
else
|
|
57
52
|
Knife::SubcommandLoader::GemGlobLoader.new(chef_config_dir)
|
|
58
53
|
end
|
|
@@ -72,10 +67,6 @@ class Chef
|
|
|
72
67
|
plugin_manifest? && plugin_manifest.key?(HashedCommandLoader::KEY)
|
|
73
68
|
end
|
|
74
69
|
|
|
75
|
-
def self.custom_manifest?
|
|
76
|
-
plugin_manifest? && plugin_manifest.key?("plugins")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
70
|
def self.plugin_manifest
|
|
80
71
|
Chef::JSONCompat.from_json(File.read(plugin_manifest_path))
|
|
81
72
|
end
|
|
@@ -84,14 +75,8 @@ class Chef
|
|
|
84
75
|
Chef::Util::PathHelper.home(".chef", "plugin_manifest.json")
|
|
85
76
|
end
|
|
86
77
|
|
|
87
|
-
def initialize(chef_config_dir
|
|
78
|
+
def initialize(chef_config_dir)
|
|
88
79
|
@chef_config_dir = chef_config_dir
|
|
89
|
-
|
|
90
|
-
# Deprecated and un-used instance variable.
|
|
91
|
-
@env = env
|
|
92
|
-
unless env.nil?
|
|
93
|
-
Chef.deprecated(:internal_api, "The env argument to Chef::Knife::SubcommandLoader is deprecated. If you are using env to inject/mock HOME, consider mocking Chef::Util::PathHelper.home instead.")
|
|
94
|
-
end
|
|
95
80
|
end
|
|
96
81
|
|
|
97
82
|
# Load all the sub-commands
|
|
@@ -148,21 +133,6 @@ class Chef
|
|
|
148
133
|
subcommand_files
|
|
149
134
|
end
|
|
150
135
|
|
|
151
|
-
#
|
|
152
|
-
# Subclassses should define this themselves. Eventually, this will raise a
|
|
153
|
-
# NotImplemented error, but for now, we mimic the behavior the user was likely
|
|
154
|
-
# to get in the past.
|
|
155
|
-
#
|
|
156
|
-
def subcommand_files
|
|
157
|
-
Chef.deprecated :internal_api, "Using Chef::Knife::SubcommandLoader directly is deprecated.
|
|
158
|
-
Please use Chef::Knife::SubcommandLoader.for_config(chef_config_dir, env)"
|
|
159
|
-
@subcommand_files ||= if Chef::Knife::SubcommandLoader.plugin_manifest?
|
|
160
|
-
Chef::Knife::SubcommandLoader::CustomManifestLoader.new(chef_config_dir, env).subcommand_files
|
|
161
|
-
else
|
|
162
|
-
Chef::Knife::SubcommandLoader::GemGlobLoader.new(chef_config_dir, env).subcommand_files
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
136
|
#
|
|
167
137
|
# Utility function for finding an element in a hash given an array
|
|
168
138
|
# of words and a separator. We find the the longest key in the
|