chef 16.18.0-universal-mingw32 → 17.0.242-universal-mingw32
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 +9 -13
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +6 -8
- data/lib/chef/action_collection.rb +1 -1
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application.rb +1 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/client.rb +5 -5
- data/lib/chef/compliance/default_attributes.rb +4 -3
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/reporter/automate.rb +17 -7
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +65 -27
- data/lib/chef/cookbook/gem_installer.rb +1 -5
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +0 -1
- data/lib/chef/cookbook_version.rb +4 -26
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +6 -12
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/dsl/reboot_pending.rb +1 -2
- data/lib/chef/exceptions.rb +0 -3
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/formatters/error_mapper.rb +2 -2
- data/lib/chef/group.rb +75 -0
- data/lib/chef/http.rb +5 -5
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -24
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
- data/lib/chef/node.rb +19 -20
- data/lib/chef/org.rb +3 -2
- data/lib/chef/policy_builder/policyfile.rb +0 -5
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/git.rb +5 -7
- data/lib/chef/provider/group/dscl.rb +1 -1
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/mount.rb +5 -5
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +0 -5
- data/lib/chef/provider/package/rubygems.rb +9 -15
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum/yum_helper.py +1 -1
- data/lib/chef/provider/package.rb +17 -21
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +12 -12
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/subversion.rb +10 -12
- data/lib/chef/provider/systemd_unit.rb +36 -10
- data/lib/chef/provider/template/content.rb +3 -7
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +17 -20
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +1 -1
- data/lib/chef/provider/user.rb +2 -2
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +3 -2
- data/lib/chef/resource/archive_file.rb +8 -9
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +2 -2
- data/lib/chef/resource/chef_client_cron.rb +4 -4
- data/lib/chef/resource/chef_client_launchd.rb +3 -3
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +3 -8
- data/lib/chef/resource/chocolatey_config.rb +2 -6
- data/lib/chef/resource/chocolatey_feature.rb +2 -6
- data/lib/chef/resource/chocolatey_source.rb +4 -10
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +6 -1
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/group.rb +2 -2
- data/lib/chef/resource/homebrew_cask.rb +5 -15
- data/lib/chef/resource/homebrew_tap.rb +2 -6
- data/lib/chef/resource/hostname.rb +21 -17
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/kernel_module.rb +6 -17
- data/lib/chef/resource/locale.rb +2 -3
- data/lib/chef/resource/lwrp_base.rb +4 -0
- data/lib/chef/resource/macos_userdefaults.rb +10 -14
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +3 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
- data/lib/chef/resource/plist.rb +7 -7
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rhsm_errata.rb +16 -1
- data/lib/chef/resource/rhsm_errata_level.rb +10 -1
- data/lib/chef/resource/rhsm_register.rb +12 -6
- data/lib/chef/resource/rhsm_repo.rb +2 -6
- data/lib/chef/resource/rhsm_subscription.rb +7 -11
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/sudo.rb +6 -6
- data/lib/chef/resource/support/client.erb +2 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +3 -3
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -3
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -3
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +1 -1
- data/lib/chef/resource/windows_auto_run.rb +2 -5
- data/lib/chef/resource/windows_certificate.rb +207 -73
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +5 -4
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +2 -6
- data/lib/chef/resource/windows_feature_powershell.rb +3 -3
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +2 -5
- data/lib/chef/resource/windows_font.rb +2 -4
- data/lib/chef/resource/windows_pagefile.rb +2 -6
- data/lib/chef/resource/windows_path.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +4 -4
- data/lib/chef/resource/windows_printer_port.rb +6 -6
- data/lib/chef/resource/windows_security_policy.rb +9 -12
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +17 -5
- data/lib/chef/resource/windows_uac.rb +2 -4
- data/lib/chef/resource/windows_user_privilege.rb +5 -5
- data/lib/chef/resource/windows_workgroup.rb +1 -2
- data/lib/chef/resource.rb +1 -1
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resources.rb +0 -1
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +1 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -9
- data/lib/chef/win32/registry.rb +4 -2
- data/lib/chef/win32/version.rb +1 -2
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/functional/dsl/registry_helper_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/group_spec.rb +1 -5
- data/spec/functional/resource/link_spec.rb +0 -8
- data/spec/functional/resource/registry_spec.rb +8 -8
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +92 -35
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +5 -2
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +10 -13
- data/spec/support/chef_helpers.rb +0 -16
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +1 -8
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/client_spec.rb +4 -4
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
- data/spec/unit/compliance/runner_spec.rb +30 -4
- data/spec/unit/cookbook_version_spec.rb +0 -52
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/data_collector_spec.rb +2 -71
- data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
- data/spec/unit/dsl/registry_helper_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/mixin/powershell_out_spec.rb +2 -2
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/cron_spec.rb +1 -1
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/powershell_spec.rb +12 -74
- data/spec/unit/provider/package/rubygems_spec.rb +18 -30
- data/spec/unit/provider/service/arch_service_spec.rb +1 -0
- data/spec/unit/provider/service/debian_service_spec.rb +1 -0
- data/spec/unit/provider/service/macosx_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
- data/spec/unit/provider/service/windows_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/zypper_repository_spec.rb +2 -2
- data/spec/unit/provider_spec.rb +0 -8
- data/spec/unit/resource/archive_file_spec.rb +1 -13
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
- data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
- data/spec/unit/resource/mount_spec.rb +0 -10
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/user_ulimit_spec.rb +1 -14
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +2 -7
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/tasks/rspec.rb +15 -7
- metadata +19 -382
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/client_show.rb +0 -48
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_list.rb +0 -42
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_list.rb +0 -43
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/recipe_list.rb +0 -32
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/resource/user/dscl_user.rb +0 -35
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
- data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
- data/spec/data/knife_subcommand/test_yourself.rb +0 -21
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1616
- data/spec/support/shared/functional/knife.rb +0 -37
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/support/shared/integration/knife_support.rb +0 -192
- data/spec/support/shared/unit/knife_shared.rb +0 -39
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,205 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
20
|
-
require "win32/service"
|
21
|
-
end
|
22
|
-
require_relative "../config"
|
23
|
-
require "mixlib/cli" unless defined?(Mixlib::CLI)
|
24
|
-
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
25
|
-
|
26
|
-
class Chef
|
27
|
-
class Application
|
28
|
-
#
|
29
|
-
# This class is used to create and manage a windows service.
|
30
|
-
# Service should be created using Daemon class from
|
31
|
-
# win32/service gem.
|
32
|
-
# For an example see: Chef::Application::WindowsService
|
33
|
-
#
|
34
|
-
# Outside programs are expected to use this class to manage
|
35
|
-
# windows services.
|
36
|
-
#
|
37
|
-
class WindowsServiceManager
|
38
|
-
include Mixlib::CLI
|
39
|
-
|
40
|
-
option :action,
|
41
|
-
short: "-a ACTION",
|
42
|
-
long: "--action ACTION",
|
43
|
-
default: "status",
|
44
|
-
description: "Action to carry out on #{ChefUtils::Dist::Infra::SHORT}-service (install, uninstall, status, start, stop, pause, or resume)."
|
45
|
-
|
46
|
-
option :config_file,
|
47
|
-
short: "-c CONFIG",
|
48
|
-
long: "--config CONFIG",
|
49
|
-
default: "#{ChefConfig::Config.c_chef_dir}/client.rb",
|
50
|
-
description: "The configuration file to use for #{ChefUtils::Dist::Infra::PRODUCT} runs."
|
51
|
-
|
52
|
-
option :log_location,
|
53
|
-
short: "-L LOGLOCATION",
|
54
|
-
long: "--logfile LOGLOCATION",
|
55
|
-
description: "Set the log file location for #{ChefUtils::Dist::Infra::SHORT}-service."
|
56
|
-
|
57
|
-
option :help,
|
58
|
-
short: "-h",
|
59
|
-
long: "--help",
|
60
|
-
description: "Show this help message.",
|
61
|
-
on: :tail,
|
62
|
-
boolean: true,
|
63
|
-
show_options: true,
|
64
|
-
exit: 0
|
65
|
-
|
66
|
-
option :version,
|
67
|
-
short: "-v",
|
68
|
-
long: "--version",
|
69
|
-
description: "Show #{ChefUtils::Dist::Infra::PRODUCT} version.",
|
70
|
-
boolean: true,
|
71
|
-
proc: lambda { |v| puts "#{ChefUtils::Dist::Infra::PRODUCT}: #{::Chef::VERSION}" },
|
72
|
-
exit: 0
|
73
|
-
|
74
|
-
def initialize(service_options)
|
75
|
-
# having to call super in initialize is the most annoying
|
76
|
-
# anti-pattern :(
|
77
|
-
super()
|
78
|
-
|
79
|
-
raise ArgumentError, "Service definition is not provided" if service_options.nil?
|
80
|
-
|
81
|
-
required_options = %i{service_name service_display_name service_description service_file_path}
|
82
|
-
|
83
|
-
required_options.each do |req_option|
|
84
|
-
unless service_options.key?(req_option)
|
85
|
-
raise ArgumentError, "Service definition doesn't contain required option #{req_option}"
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
@service_name = service_options[:service_name]
|
90
|
-
@service_display_name = service_options[:service_display_name]
|
91
|
-
@service_description = service_options[:service_description]
|
92
|
-
@service_file_path = service_options[:service_file_path]
|
93
|
-
@service_start_name = service_options[:run_as_user]
|
94
|
-
@password = service_options[:run_as_password]
|
95
|
-
@delayed_start = service_options[:delayed_start]
|
96
|
-
@dependencies = service_options[:dependencies]
|
97
|
-
end
|
98
|
-
|
99
|
-
def run(params = ARGV)
|
100
|
-
parse_options(params)
|
101
|
-
|
102
|
-
case config[:action]
|
103
|
-
when "install"
|
104
|
-
if service_exists?
|
105
|
-
puts "Service #{@service_name} already exists on the system."
|
106
|
-
else
|
107
|
-
ruby = File.join(RbConfig::CONFIG["bindir"], "ruby")
|
108
|
-
|
109
|
-
opts = ""
|
110
|
-
opts << " -c #{config[:config_file]}" if config[:config_file]
|
111
|
-
opts << " -L #{config[:log_location]}" if config[:log_location]
|
112
|
-
|
113
|
-
# Quote the full paths to deal with possible spaces in the path name.
|
114
|
-
# Also ensure all forward slashes are backslashes
|
115
|
-
cmd = "\"#{ruby}\" \"#{@service_file_path}\" #{opts}".gsub(File::SEPARATOR, File::ALT_SEPARATOR)
|
116
|
-
|
117
|
-
::Win32::Service.new(
|
118
|
-
service_name: @service_name,
|
119
|
-
display_name: @service_display_name,
|
120
|
-
description: @service_description,
|
121
|
-
# Prior to 0.8.5, win32-service creates interactive services by default,
|
122
|
-
# and we don't want that, so we need to override the service type.
|
123
|
-
service_type: ::Win32::Service::SERVICE_WIN32_OWN_PROCESS,
|
124
|
-
start_type: ::Win32::Service::SERVICE_AUTO_START,
|
125
|
-
binary_path_name: cmd,
|
126
|
-
service_start_name: @service_start_name,
|
127
|
-
password: @password,
|
128
|
-
dependencies: @dependencies
|
129
|
-
)
|
130
|
-
unless @delayed_start.nil?
|
131
|
-
::Win32::Service.configure(
|
132
|
-
service_name: @service_name,
|
133
|
-
delayed_start: @delayed_start
|
134
|
-
)
|
135
|
-
end
|
136
|
-
puts "Service '#{@service_name}' has successfully been installed."
|
137
|
-
end
|
138
|
-
when "status"
|
139
|
-
if !service_exists?
|
140
|
-
puts "Service #{@service_name} doesn't exist on the system."
|
141
|
-
else
|
142
|
-
puts "State of #{@service_name} service is: #{current_state}"
|
143
|
-
end
|
144
|
-
when "start"
|
145
|
-
# TODO: allow override of startup parameters here?
|
146
|
-
take_action("start", RUNNING)
|
147
|
-
when "stop"
|
148
|
-
take_action("stop", STOPPED)
|
149
|
-
when "uninstall", "delete"
|
150
|
-
take_action("stop", STOPPED)
|
151
|
-
unless service_exists?
|
152
|
-
puts "Service #{@service_name} doesn't exist on the system."
|
153
|
-
else
|
154
|
-
::Win32::Service.delete(@service_name)
|
155
|
-
puts "Service #{@service_name} deleted"
|
156
|
-
end
|
157
|
-
when "pause"
|
158
|
-
take_action("pause", PAUSED)
|
159
|
-
when "resume"
|
160
|
-
take_action("resume", RUNNING)
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
private
|
165
|
-
|
166
|
-
# Just some state constants
|
167
|
-
STOPPED = "stopped".freeze
|
168
|
-
RUNNING = "running".freeze
|
169
|
-
PAUSED = "paused".freeze
|
170
|
-
|
171
|
-
def service_exists?
|
172
|
-
::Win32::Service.exists?(@service_name)
|
173
|
-
end
|
174
|
-
|
175
|
-
def take_action(action = nil, desired_state = nil)
|
176
|
-
if service_exists?
|
177
|
-
if current_state != desired_state
|
178
|
-
::Win32::Service.send(action, @service_name)
|
179
|
-
wait_for_state(desired_state)
|
180
|
-
puts "Service '#{@service_name}' is now '#{current_state}'."
|
181
|
-
else
|
182
|
-
puts "Service '#{@service_name}' is already '#{desired_state}'."
|
183
|
-
end
|
184
|
-
else
|
185
|
-
puts "Cannot '#{action}' service '#{@service_name}'"
|
186
|
-
puts "Service #{@service_name} doesn't exist on the system."
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
def current_state
|
191
|
-
::Win32::Service.status(@service_name).current_state
|
192
|
-
end
|
193
|
-
|
194
|
-
# Helper method that waits for a status to change its state since state
|
195
|
-
# changes aren't usually instantaneous.
|
196
|
-
def wait_for_state(desired_state)
|
197
|
-
while current_state != desired_state
|
198
|
-
puts "One moment... #{current_state}"
|
199
|
-
sleep 1
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
data/lib/chef/chef_fs/knife.rb
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require_relative "../knife"
|
20
|
-
require "pathname" unless defined?(Pathname)
|
21
|
-
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
22
|
-
|
23
|
-
class Chef
|
24
|
-
module ChefFS
|
25
|
-
class Knife < Chef::Knife
|
26
|
-
# Workaround for CHEF-3932
|
27
|
-
def self.deps
|
28
|
-
super do
|
29
|
-
require_relative "../config"
|
30
|
-
require_relative "parallelizer"
|
31
|
-
require_relative "config"
|
32
|
-
require_relative "file_pattern"
|
33
|
-
require_relative "path_utils"
|
34
|
-
yield
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.inherited(c)
|
39
|
-
super
|
40
|
-
|
41
|
-
# Ensure we always get to do our includes, whether subclass calls deps or not
|
42
|
-
c.deps do
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
option :repo_mode,
|
47
|
-
long: "--repo-mode MODE",
|
48
|
-
description: "Specifies the local repository layout. Values: static, everything, hosted_everything. Default: everything/hosted_everything"
|
49
|
-
|
50
|
-
option :chef_repo_path,
|
51
|
-
long: "--chef-repo-path PATH",
|
52
|
-
description: "Overrides the location of #{ChefUtils::Dist::Infra::PRODUCT} repo. Default is specified by chef_repo_path in the config"
|
53
|
-
|
54
|
-
option :concurrency,
|
55
|
-
long: "--concurrency THREADS",
|
56
|
-
description: "Maximum number of simultaneous requests to send (default: 10)"
|
57
|
-
|
58
|
-
def configure_chef
|
59
|
-
super
|
60
|
-
Chef::Config[:repo_mode] = config[:repo_mode] if config[:repo_mode]
|
61
|
-
Chef::Config[:concurrency] = config[:concurrency].to_i if config[:concurrency]
|
62
|
-
|
63
|
-
# --chef-repo-path forcibly overrides all other paths
|
64
|
-
if config[:chef_repo_path]
|
65
|
-
Chef::Config[:chef_repo_path] = config[:chef_repo_path]
|
66
|
-
Chef::ChefFS::Config::INFLECTIONS.each_value do |variable_name|
|
67
|
-
Chef::Config.delete("#{variable_name}_path".to_sym)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
@chef_fs_config = Chef::ChefFS::Config.new(Chef::Config, Dir.pwd, config, ui)
|
72
|
-
|
73
|
-
Chef::ChefFS::Parallelizer.threads = (Chef::Config[:concurrency] || 10) - 1
|
74
|
-
end
|
75
|
-
|
76
|
-
def chef_fs
|
77
|
-
@chef_fs_config.chef_fs
|
78
|
-
end
|
79
|
-
|
80
|
-
def create_chef_fs
|
81
|
-
@chef_fs_config.create_chef_fs
|
82
|
-
end
|
83
|
-
|
84
|
-
def local_fs
|
85
|
-
@chef_fs_config.local_fs
|
86
|
-
end
|
87
|
-
|
88
|
-
def create_local_fs
|
89
|
-
@chef_fs_config.create_local_fs
|
90
|
-
end
|
91
|
-
|
92
|
-
def pattern_args
|
93
|
-
@pattern_args ||= pattern_args_from(name_args)
|
94
|
-
end
|
95
|
-
|
96
|
-
def pattern_args_from(args)
|
97
|
-
args.map { |arg| pattern_arg_from(arg) }
|
98
|
-
end
|
99
|
-
|
100
|
-
def pattern_arg_from(arg)
|
101
|
-
inferred_path = nil
|
102
|
-
if Chef::ChefFS::PathUtils.is_absolute?(arg)
|
103
|
-
# We should be able to use this as-is - but the user might have incorrectly provided
|
104
|
-
# us with a path that is based off of the OS root path instead of the Chef-FS root.
|
105
|
-
# Do a quick and dirty sanity check.
|
106
|
-
if possible_server_path = @chef_fs_config.server_path(arg)
|
107
|
-
ui.warn("The absolute path provided is suspicious: #{arg}")
|
108
|
-
ui.warn("If you wish to refer to a file location, please provide a path that is rooted at the chef-repo.")
|
109
|
-
ui.warn("Consider writing '#{possible_server_path}' instead of '#{arg}'")
|
110
|
-
end
|
111
|
-
# Use the original path because we can't be sure.
|
112
|
-
inferred_path = arg
|
113
|
-
elsif arg[0, 1] == "~"
|
114
|
-
# Let's be nice and fix it if possible - but warn the user.
|
115
|
-
ui.warn("A path relative to a user home directory has been provided: #{arg}")
|
116
|
-
ui.warn("Paths provided need to be rooted at the chef-repo being considered or be relative paths.")
|
117
|
-
inferred_path = @chef_fs_config.server_path(arg)
|
118
|
-
ui.warn("Using '#{inferred_path}' as the path instead of '#{arg}'.")
|
119
|
-
elsif Pathname.new(arg).absolute?
|
120
|
-
# It is definitely a system absolute path (such as C:\ or \\foo\bar) but it cannot be
|
121
|
-
# interpreted as a Chef-FS absolute path. Again attempt to be nice but warn the user.
|
122
|
-
ui.warn("An absolute file system path that isn't a server path was provided: #{arg}")
|
123
|
-
ui.warn("Paths provided need to be rooted at the chef-repo being considered or be relative paths.")
|
124
|
-
inferred_path = @chef_fs_config.server_path(arg)
|
125
|
-
ui.warn("Using '#{inferred_path}' as the path instead of '#{arg}'.")
|
126
|
-
elsif @chef_fs_config.base_path.nil?
|
127
|
-
# These are all relative paths. We can't resolve and root paths unless we are in the
|
128
|
-
# chef repo.
|
129
|
-
ui.error("Attempt to use relative path '#{arg}' when current directory is outside the repository path.")
|
130
|
-
ui.error("Current working directory is '#{@chef_fs_config.cwd}'.")
|
131
|
-
exit(1)
|
132
|
-
else
|
133
|
-
inferred_path = Chef::ChefFS::PathUtils.join(@chef_fs_config.base_path, arg)
|
134
|
-
end
|
135
|
-
Chef::ChefFS::FilePattern.new(inferred_path)
|
136
|
-
end
|
137
|
-
|
138
|
-
def format_path(entry)
|
139
|
-
@chef_fs_config.format_path(entry)
|
140
|
-
end
|
141
|
-
|
142
|
-
def parallelize(inputs, options = {}, &block)
|
143
|
-
Chef::ChefFS::Parallelizer.parallelize(inputs, options, &block)
|
144
|
-
end
|
145
|
-
|
146
|
-
def discover_repo_dir(dir)
|
147
|
-
%w{.chef cookbooks data_bags environments roles}.each do |subdir|
|
148
|
-
return dir if File.directory?(File.join(dir, subdir))
|
149
|
-
end
|
150
|
-
# If this isn't it, check the parent
|
151
|
-
parent = File.dirname(dir)
|
152
|
-
if parent && parent != dir
|
153
|
-
discover_repo_dir(parent)
|
154
|
-
else
|
155
|
-
nil
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
class Chef
|
2
|
-
module ChefFS
|
3
|
-
class Parallelizer
|
4
|
-
class FlattenEnumerable
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
def initialize(enum, levels = nil)
|
8
|
-
@enum = enum
|
9
|
-
@levels = levels
|
10
|
-
end
|
11
|
-
|
12
|
-
attr_reader :enum
|
13
|
-
attr_reader :levels
|
14
|
-
|
15
|
-
def each(&block)
|
16
|
-
enum.each do |value|
|
17
|
-
flatten(value, levels, &block)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def flatten(value, levels, &block)
|
24
|
-
if levels != 0 && value.respond_to?(:each) && !value.is_a?(String)
|
25
|
-
value.each do |child|
|
26
|
-
flatten(child, levels.nil? ? levels : levels - 1, &block)
|
27
|
-
end
|
28
|
-
else
|
29
|
-
yield(value)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,278 +0,0 @@
|
|
1
|
-
require_relative "flatten_enumerable"
|
2
|
-
|
3
|
-
class Chef
|
4
|
-
module ChefFS
|
5
|
-
class Parallelizer
|
6
|
-
class ParallelEnumerable
|
7
|
-
include Enumerable
|
8
|
-
|
9
|
-
# options:
|
10
|
-
# :ordered [true|false] - whether the output should stay in the same order
|
11
|
-
# as the input (even though it may not actually be processed in that
|
12
|
-
# order). Default: true
|
13
|
-
# :stop_on_exception [true|false] - if true, when an exception occurs in either
|
14
|
-
# input or output, we wait for any outstanding processing to complete,
|
15
|
-
# but will not process any new inputs. Default: false
|
16
|
-
# :main_thread_processing [true|false] - whether the main thread pulling
|
17
|
-
# on each() is allowed to process inputs. Default: true
|
18
|
-
# NOTE: If you set this to false, parallelizer.kill will stop each()
|
19
|
-
# in its tracks, so you need to know for sure that won't happen.
|
20
|
-
def initialize(parent_task_queue, input_enumerable, options = {}, &block)
|
21
|
-
@parent_task_queue = parent_task_queue
|
22
|
-
@input_enumerable = input_enumerable
|
23
|
-
@options = options
|
24
|
-
@block = block
|
25
|
-
|
26
|
-
@unconsumed_input = Queue.new
|
27
|
-
@in_process = {}
|
28
|
-
@unconsumed_output = Queue.new
|
29
|
-
end
|
30
|
-
|
31
|
-
attr_reader :parent_task_queue
|
32
|
-
attr_reader :input_enumerable
|
33
|
-
attr_reader :options
|
34
|
-
attr_reader :block
|
35
|
-
|
36
|
-
def each
|
37
|
-
each_with_input do |output, index, input, type|
|
38
|
-
yield output
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def each_with_index
|
43
|
-
each_with_input do |output, index, input|
|
44
|
-
yield output, index
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def each_with_input
|
49
|
-
exception = nil
|
50
|
-
each_with_exceptions do |output, index, input, type|
|
51
|
-
if type == :exception
|
52
|
-
if @options[:ordered] == false
|
53
|
-
exception ||= output
|
54
|
-
else
|
55
|
-
raise output
|
56
|
-
end
|
57
|
-
else
|
58
|
-
yield output, index, input
|
59
|
-
end
|
60
|
-
end
|
61
|
-
raise exception if exception
|
62
|
-
end
|
63
|
-
|
64
|
-
def each_with_exceptions(&block)
|
65
|
-
if @options[:ordered] == false
|
66
|
-
each_with_exceptions_unordered(&block)
|
67
|
-
else
|
68
|
-
each_with_exceptions_ordered(&block)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def wait
|
73
|
-
exception = nil
|
74
|
-
each_with_exceptions_unordered do |output, index, input, type|
|
75
|
-
exception ||= output if type == :exception
|
76
|
-
end
|
77
|
-
raise exception if exception
|
78
|
-
end
|
79
|
-
|
80
|
-
# Enumerable methods
|
81
|
-
def restricted_copy(enumerable)
|
82
|
-
ParallelEnumerable.new(@parent_task_queue, enumerable, @options, &@block)
|
83
|
-
end
|
84
|
-
|
85
|
-
alias :original_count :count
|
86
|
-
|
87
|
-
def count(*args, &block)
|
88
|
-
if args.size == 0 && block.nil?
|
89
|
-
@input_enumerable.count
|
90
|
-
else
|
91
|
-
original_count(*args, &block)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def first(n = nil)
|
96
|
-
if n
|
97
|
-
restricted_copy(@input_enumerable.first(n)).to_a
|
98
|
-
else
|
99
|
-
first(1)[0]
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def drop(n)
|
104
|
-
restricted_copy(@input_enumerable.drop(n)).to_a
|
105
|
-
end
|
106
|
-
|
107
|
-
def flatten(levels = nil)
|
108
|
-
FlattenEnumerable.new(self, levels)
|
109
|
-
end
|
110
|
-
|
111
|
-
def take(n)
|
112
|
-
restricted_copy(@input_enumerable.take(n)).to_a
|
113
|
-
end
|
114
|
-
|
115
|
-
if Enumerable.method_defined?(:lazy)
|
116
|
-
class RestrictedLazy
|
117
|
-
def initialize(parallel_enumerable, actual_lazy)
|
118
|
-
@parallel_enumerable = parallel_enumerable
|
119
|
-
@actual_lazy = actual_lazy
|
120
|
-
end
|
121
|
-
|
122
|
-
def drop(*args, &block)
|
123
|
-
input = @parallel_enumerable.input_enumerable.lazy.drop(*args, &block)
|
124
|
-
@parallel_enumerable.restricted_copy(input)
|
125
|
-
end
|
126
|
-
|
127
|
-
def take(*args, &block)
|
128
|
-
input = @parallel_enumerable.input_enumerable.lazy.take(*args, &block)
|
129
|
-
@parallel_enumerable.restricted_copy(input)
|
130
|
-
end
|
131
|
-
|
132
|
-
def method_missing(method, *args, &block)
|
133
|
-
@actual_lazy.send(:method, *args, &block)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
alias :original_lazy :lazy
|
138
|
-
|
139
|
-
def lazy
|
140
|
-
RestrictedLazy.new(self, original_lazy)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
private
|
145
|
-
|
146
|
-
def each_with_exceptions_unordered
|
147
|
-
if @each_running
|
148
|
-
raise "each() called on parallel enumerable twice simultaneously! Bad mojo"
|
149
|
-
end
|
150
|
-
|
151
|
-
@each_running = true
|
152
|
-
begin
|
153
|
-
# Grab all the inputs, yielding any responses during enumeration
|
154
|
-
# in case the enumeration itself takes time
|
155
|
-
begin
|
156
|
-
@input_enumerable.each_with_index do |input, index|
|
157
|
-
@unconsumed_input.push([ input, index ])
|
158
|
-
@parent_task_queue.push(method(:process_one))
|
159
|
-
|
160
|
-
stop_processing_input = false
|
161
|
-
until @unconsumed_output.empty?
|
162
|
-
output, index, input, type = @unconsumed_output.pop
|
163
|
-
yield output, index, input, type
|
164
|
-
if type == :exception && @options[:stop_on_exception]
|
165
|
-
stop_processing_input = true
|
166
|
-
break
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
if stop_processing_input
|
171
|
-
break
|
172
|
-
end
|
173
|
-
end
|
174
|
-
rescue
|
175
|
-
# We still want to wait for the rest of the outputs to process
|
176
|
-
@unconsumed_output.push([$!, nil, nil, :exception])
|
177
|
-
if @options[:stop_on_exception]
|
178
|
-
@unconsumed_input.clear
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
until finished?
|
183
|
-
# yield thread to others (for 1.8.7)
|
184
|
-
if @unconsumed_output.empty?
|
185
|
-
sleep(0.01)
|
186
|
-
end
|
187
|
-
|
188
|
-
yield @unconsumed_output.pop until @unconsumed_output.empty?
|
189
|
-
|
190
|
-
# If no one is working on our tasks and we're allowed to
|
191
|
-
# work on them in the main thread, process an input to
|
192
|
-
# move things forward.
|
193
|
-
if @in_process.size == 0 && !(@options[:main_thread_processing] == false)
|
194
|
-
process_one
|
195
|
-
end
|
196
|
-
end
|
197
|
-
rescue
|
198
|
-
# If we exited early, perhaps due to any? finding a result, we want
|
199
|
-
# to make sure and throw away any extra results (gracefully) so that
|
200
|
-
# the next enumerator can start over.
|
201
|
-
unless finished?
|
202
|
-
stop
|
203
|
-
end
|
204
|
-
raise
|
205
|
-
ensure
|
206
|
-
@each_running = false
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
def each_with_exceptions_ordered
|
211
|
-
next_to_yield = 0
|
212
|
-
unconsumed = {}
|
213
|
-
each_with_exceptions_unordered do |output, index, input, type|
|
214
|
-
unconsumed[index] = [ output, input, type ]
|
215
|
-
while unconsumed[next_to_yield]
|
216
|
-
input_output = unconsumed.delete(next_to_yield)
|
217
|
-
yield input_output[0], next_to_yield, input_output[1], input_output[2]
|
218
|
-
next_to_yield += 1
|
219
|
-
end
|
220
|
-
end
|
221
|
-
input_exception = unconsumed.delete(nil)
|
222
|
-
if input_exception
|
223
|
-
yield input_exception[0], next_to_yield, input_exception[1], input_exception[2]
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
def stop
|
228
|
-
@unconsumed_input.clear
|
229
|
-
sleep(0.05) while @in_process.size > 0
|
230
|
-
@unconsumed_output.clear
|
231
|
-
end
|
232
|
-
|
233
|
-
#
|
234
|
-
# This is thread safe only if called from the main thread pulling on each().
|
235
|
-
# The order of these checks is important, as well, to be thread safe.
|
236
|
-
# 1. If @unconsumed_input.empty? is true, then we will never have any more
|
237
|
-
# work legitimately picked up.
|
238
|
-
# 2. If @in_process == 0, then there is no work in process, and because of when unconsumed_input is empty, it will never go back up, because
|
239
|
-
# this is called after the input enumerator is finished. Note that switching #2 and #1
|
240
|
-
# could cause a race, because in_process is incremented *before* consuming input.
|
241
|
-
# 3. If @unconsumed_output.empty? is true, then we are done with outputs.
|
242
|
-
# Thus, 1+2 means no more output will ever show up, and 3 means we've passed all
|
243
|
-
# existing outputs to the user.
|
244
|
-
#
|
245
|
-
def finished?
|
246
|
-
@unconsumed_input.empty? && @in_process.size == 0 && @unconsumed_output.empty?
|
247
|
-
end
|
248
|
-
|
249
|
-
def process_one
|
250
|
-
@in_process[Thread.current] = true
|
251
|
-
begin
|
252
|
-
begin
|
253
|
-
input, index = @unconsumed_input.pop(true)
|
254
|
-
process_input(input, index)
|
255
|
-
rescue ThreadError
|
256
|
-
end
|
257
|
-
ensure
|
258
|
-
@in_process.delete(Thread.current)
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
def process_input(input, index)
|
263
|
-
begin
|
264
|
-
output = @block.call(input)
|
265
|
-
@unconsumed_output.push([ output, index, input, :result ])
|
266
|
-
rescue StandardError, ScriptError
|
267
|
-
if @options[:stop_on_exception]
|
268
|
-
@unconsumed_input.clear
|
269
|
-
end
|
270
|
-
@unconsumed_output.push([ $!, index, input, :exception ])
|
271
|
-
end
|
272
|
-
|
273
|
-
index
|
274
|
-
end
|
275
|
-
end
|
276
|
-
end
|
277
|
-
end
|
278
|
-
end
|