puppet 4.3.2-x64-mingw32 → 4.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
data/lib/puppet/file_system.rb
CHANGED
@@ -122,8 +122,8 @@ module Puppet::FileSystem
|
|
122
122
|
#
|
123
123
|
# @api public
|
124
124
|
#
|
125
|
-
def self.read(path)
|
126
|
-
@impl.read(assert_path(path))
|
125
|
+
def self.read(path, opts = {})
|
126
|
+
@impl.read(assert_path(path), opts)
|
127
127
|
end
|
128
128
|
|
129
129
|
# Read a file keeping the original line endings intact. This
|
@@ -156,7 +156,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
156
156
|
if $SAFE > 0
|
157
157
|
tmp = @@systmpdir
|
158
158
|
else
|
159
|
-
for dir in [
|
159
|
+
for dir in [ Puppet::Util.get_env('TMPDIR'), Puppet::Util.get_env('TMP'), Puppet::Util.get_env('TEMP'), @@systmpdir, '/tmp']
|
160
160
|
if dir and stat = File.stat(dir) and stat.directory? and stat.writable?
|
161
161
|
tmp = dir
|
162
162
|
break
|
data/lib/puppet/forge.rb
CHANGED
@@ -38,7 +38,7 @@ class Puppet::Forge < Semantic::Dependency::Source
|
|
38
38
|
# "releases" => [{"version"=>"0.0.1"}, {"version"=>"0.0.2"}],
|
39
39
|
# "full_name" => "puppetlabs/bacula",
|
40
40
|
# "version" => "0.0.2",
|
41
|
-
# "project_url" => "
|
41
|
+
# "project_url" => "https://github.com/puppetlabs/puppetlabs-bacula",
|
42
42
|
# "desc" => "bacula"
|
43
43
|
# }
|
44
44
|
# ]
|
@@ -90,7 +90,7 @@ class Puppet::Forge
|
|
90
90
|
# @raise [Puppet::Forge::Errors::SSLVerifyError] if there is a problem
|
91
91
|
# verifying the remote SSL certificate
|
92
92
|
def read_response(request, io = nil)
|
93
|
-
http_object = get_http_object
|
93
|
+
http_object = Puppet::Util::HttpProxy.get_http_object(uri)
|
94
94
|
|
95
95
|
http_object.start do |http|
|
96
96
|
response = http.request(request)
|
@@ -121,36 +121,6 @@ class Puppet::Forge
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
-
# Return a Net::HTTP::Proxy object constructed from the settings provided
|
125
|
-
# accessing the repository.
|
126
|
-
#
|
127
|
-
# This method optionally configures SSL correctly if the URI scheme is
|
128
|
-
# 'https', including setting up the root certificate store so remote server
|
129
|
-
# SSL certificates can be validated.
|
130
|
-
#
|
131
|
-
# @return [Net::HTTP::Proxy] object constructed from repo settings
|
132
|
-
def get_http_object
|
133
|
-
proxy = Puppet::Util::HttpProxy.proxy(@uri)
|
134
|
-
|
135
|
-
if @uri.scheme == 'https'
|
136
|
-
cert_store = OpenSSL::X509::Store.new
|
137
|
-
cert_store.set_default_paths
|
138
|
-
|
139
|
-
proxy.use_ssl = true
|
140
|
-
proxy.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
141
|
-
proxy.cert_store = cert_store
|
142
|
-
end
|
143
|
-
|
144
|
-
if Puppet[:http_debug]
|
145
|
-
proxy.set_debug_output($stderr)
|
146
|
-
end
|
147
|
-
|
148
|
-
proxy.open_timeout = Puppet[:http_connect_timeout]
|
149
|
-
proxy.read_timeout = Puppet[:http_read_timeout]
|
150
|
-
|
151
|
-
proxy
|
152
|
-
end
|
153
|
-
|
154
124
|
# Return the local file name containing the data downloaded from the
|
155
125
|
# repository at +release+ (e.g. "myuser-mymodule").
|
156
126
|
def retrieve(release)
|
data/lib/puppet/functions.rb
CHANGED
@@ -153,6 +153,28 @@ module Puppet::Functions
|
|
153
153
|
#
|
154
154
|
# @api public
|
155
155
|
def self.create_function(func_name, function_base = Function, &block)
|
156
|
+
# Ruby < 2.1.0 does not have method on Binding, can only do eval
|
157
|
+
# and it will fail unless protected with an if defined? if the local
|
158
|
+
# variable does not exist in the block's binder.
|
159
|
+
#
|
160
|
+
loader = block.binding.eval('loader_injected_arg if defined?(loader_injected_arg)')
|
161
|
+
create_loaded_function(func_name, loader, function_base, &block)
|
162
|
+
end
|
163
|
+
|
164
|
+
# Creates a function in, or in a local loader under the given loader.
|
165
|
+
# This method should only be used when manually creating functions
|
166
|
+
# for the sake of testing. Functions that are autoloaded should
|
167
|
+
# always use the `create_function` method and the autoloader will supply
|
168
|
+
# the correct loader.
|
169
|
+
#
|
170
|
+
# @param func_name [String, Symbol] a simple or qualified function name
|
171
|
+
# @param loader [Puppet::Pops::Loaders::Loader] the loader loading the function
|
172
|
+
# @param block [Proc] the block that defines the methods and dispatch of the
|
173
|
+
# Function to create
|
174
|
+
# @return [Class<Function>] the newly created Function class
|
175
|
+
#
|
176
|
+
# @api public
|
177
|
+
def self.create_loaded_function(func_name, loader, function_base = Function, &block)
|
156
178
|
if function_base.ancestors.none? { |s| s == Puppet::Pops::Functions::Function }
|
157
179
|
raise ArgumentError, "Functions must be based on Puppet::Pops::Functions::Function. Got #{function_base}"
|
158
180
|
end
|
@@ -162,7 +184,12 @@ module Puppet::Functions
|
|
162
184
|
# The idea being that it is garbage collected when there are no more
|
163
185
|
# references to it.
|
164
186
|
#
|
165
|
-
|
187
|
+
# (Do not give the class the block here, as instance variables should be set first)
|
188
|
+
the_class = Class.new(function_base)
|
189
|
+
|
190
|
+
unless loader.nil?
|
191
|
+
the_class.instance_variable_set(:'@loader', loader.private_loader)
|
192
|
+
end
|
166
193
|
|
167
194
|
# Make the anonymous class appear to have the class-name <func_name>
|
168
195
|
# Even if this class is not bound to such a symbol in a global ruby scope and
|
@@ -175,11 +202,20 @@ module Puppet::Functions
|
|
175
202
|
#
|
176
203
|
the_class.instance_eval do
|
177
204
|
@func_name = func_name
|
205
|
+
|
178
206
|
def name
|
179
207
|
@func_name
|
180
208
|
end
|
209
|
+
|
210
|
+
def loader
|
211
|
+
@loader
|
212
|
+
end
|
181
213
|
end
|
182
214
|
|
215
|
+
# The given block can now be evaluated and have access to name and loader
|
216
|
+
#
|
217
|
+
the_class.class_eval(&block)
|
218
|
+
|
183
219
|
# Automatically create an object dispatcher based on introspection if the
|
184
220
|
# loaded user code did not define any dispatchers. Fail if function name
|
185
221
|
# does not match a given method name in user code.
|
@@ -238,7 +274,7 @@ module Puppet::Functions
|
|
238
274
|
def self.builder
|
239
275
|
@type_parser ||= Puppet::Pops::Types::TypeParser.new
|
240
276
|
@all_callables ||= Puppet::Pops::Types::TypeFactory.all_callables
|
241
|
-
DispatcherBuilder.new(dispatcher, @type_parser, @all_callables)
|
277
|
+
DispatcherBuilder.new(dispatcher, @type_parser, @all_callables, loader)
|
242
278
|
end
|
243
279
|
|
244
280
|
# Dispatch any calls that match the signature to the provided method name.
|
@@ -269,11 +305,14 @@ module Puppet::Functions
|
|
269
305
|
#
|
270
306
|
# @api public
|
271
307
|
class DispatcherBuilder
|
308
|
+
attr_reader :loader
|
309
|
+
|
272
310
|
# @api private
|
273
|
-
def initialize(dispatcher, type_parser, all_callables)
|
311
|
+
def initialize(dispatcher, type_parser, all_callables, loader)
|
274
312
|
@type_parser = type_parser
|
275
313
|
@all_callables = all_callables
|
276
314
|
@dispatcher = dispatcher
|
315
|
+
@loader = loader
|
277
316
|
end
|
278
317
|
|
279
318
|
# Defines a required positional parameter with _type_ and _name_.
|
@@ -356,7 +395,7 @@ module Puppet::Functions
|
|
356
395
|
name = type_and_name[0]
|
357
396
|
when 2
|
358
397
|
type_string, name = type_and_name
|
359
|
-
type = @type_parser.parse(type_string)
|
398
|
+
type = @type_parser.parse(type_string, loader)
|
360
399
|
else
|
361
400
|
raise ArgumentError, "block_param accepts max 2 arguments (type, name), got #{type_and_name.size}."
|
362
401
|
end
|
@@ -441,7 +480,7 @@ module Puppet::Functions
|
|
441
480
|
# @api private
|
442
481
|
def create_callable(types, block_type, from, to)
|
443
482
|
mapped_types = types.map do |t|
|
444
|
-
@type_parser.parse(t)
|
483
|
+
@type_parser.parse(t, loader)
|
445
484
|
end
|
446
485
|
|
447
486
|
if from != to
|
@@ -496,7 +535,7 @@ module Puppet::Functions
|
|
496
535
|
def self.builder
|
497
536
|
@type_parser ||= Puppet::Pops::Types::TypeParser.new
|
498
537
|
@all_callables ||= Puppet::Pops::Types::TypeFactory.all_callables
|
499
|
-
InternalDispatchBuilder.new(dispatcher, @type_parser, @all_callables)
|
538
|
+
InternalDispatchBuilder.new(dispatcher, @type_parser, @all_callables, loader)
|
500
539
|
end
|
501
540
|
|
502
541
|
# Defines class level injected attribute with reader method
|
@@ -50,7 +50,7 @@
|
|
50
50
|
#
|
51
51
|
# @since 4.0.0
|
52
52
|
#
|
53
|
-
Puppet::Functions.create_function(:assert_type) do
|
53
|
+
Puppet::Functions.create_function(:assert_type, Puppet::Functions::InternalFunction) do
|
54
54
|
dispatch :assert_type do
|
55
55
|
param 'Type', :type
|
56
56
|
param 'Any', :value
|
@@ -58,6 +58,7 @@ Puppet::Functions.create_function(:assert_type) do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
dispatch :assert_type_s do
|
61
|
+
scope_param
|
61
62
|
param 'String', :type_string
|
62
63
|
param 'Any', :value
|
63
64
|
optional_block_param 'Callable[Type, Type]', :block
|
@@ -70,26 +71,25 @@ Puppet::Functions.create_function(:assert_type) do
|
|
70
71
|
unless Puppet::Pops::Types::TypeCalculator.instance?(type,value)
|
71
72
|
inferred_type = Puppet::Pops::Types::TypeCalculator.infer(value)
|
72
73
|
if block_given?
|
73
|
-
# Give the inferred type to allow richer
|
74
|
+
# Give the inferred type to allow richer comparison in the given block (if generalized
|
74
75
|
# information is lost).
|
75
76
|
#
|
76
77
|
value = yield(type, inferred_type)
|
77
78
|
else
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
actual = Puppet::Pops::Types::TypeCalculator.generalize(inferred_type)
|
82
|
-
raise Puppet::Pops::Types::TypeAssertionError.new("assert_type(): Expected type #{type} does not match actual: #{actual}", type,actual)
|
79
|
+
raise Puppet::Pops::Types::TypeAssertionError.new(
|
80
|
+
Puppet::Pops::Types::TypeMismatchDescriber.singleton.describe_mismatch('assert_type():', type, inferred_type),
|
81
|
+
type, inferred_type)
|
83
82
|
end
|
84
83
|
end
|
85
84
|
value
|
86
85
|
end
|
87
86
|
|
87
|
+
# @param scope [Puppet::Parser::Scope] scope used when obtaining loader for defined types
|
88
88
|
# @param type_string [String] the type the value must be an instance of given in String form
|
89
89
|
# @param value [Object] the value to assert
|
90
90
|
#
|
91
|
-
def assert_type_s(type_string, value, &proc)
|
92
|
-
t = Puppet::Pops::Types::TypeParser.new.parse(type_string)
|
91
|
+
def assert_type_s(scope, type_string, value, &proc)
|
92
|
+
t = Puppet::Pops::Types::TypeParser.new.parse(type_string, scope)
|
93
93
|
block_given? ? assert_type(t, value, &proc) : assert_type(t, value)
|
94
94
|
end
|
95
95
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# This function takes two mandatory arguments, in this order:
|
5
5
|
#
|
6
|
-
# 1. An array or
|
6
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
7
7
|
# 2. A lambda, which the function calls for each element in the first argument. It can
|
8
8
|
# request one or two parameters.
|
9
9
|
#
|
@@ -106,12 +106,12 @@ Puppet::Functions.create_function(:each) do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
dispatch :foreach_Enumerable_2 do
|
109
|
-
param '
|
109
|
+
param 'Iterable', :enumerable
|
110
110
|
block_param 'Callable[2,2]', :block
|
111
111
|
end
|
112
112
|
|
113
113
|
dispatch :foreach_Enumerable_1 do
|
114
|
-
param '
|
114
|
+
param 'Iterable', :enumerable
|
115
115
|
block_param 'Callable[1,1]', :block
|
116
116
|
end
|
117
117
|
|
@@ -134,7 +134,7 @@ Puppet::Functions.create_function(:each) do
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def foreach_Enumerable_1(enumerable)
|
137
|
-
enum =
|
137
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
138
138
|
begin
|
139
139
|
loop { yield(enum.next) }
|
140
140
|
rescue StopIteration
|
@@ -144,7 +144,7 @@ Puppet::Functions.create_function(:each) do
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def foreach_Enumerable_2(enumerable)
|
147
|
-
enum =
|
147
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
148
148
|
index = 0
|
149
149
|
begin
|
150
150
|
loop do
|
@@ -156,12 +156,4 @@ Puppet::Functions.create_function(:each) do
|
|
156
156
|
# produces the receiver
|
157
157
|
enumerable
|
158
158
|
end
|
159
|
-
|
160
|
-
def asserted_enumerable(obj)
|
161
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
162
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
163
|
-
end
|
164
|
-
enum
|
165
|
-
end
|
166
|
-
|
167
159
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# This function takes two mandatory arguments, in this order:
|
6
6
|
#
|
7
|
-
# 1. An array or
|
7
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
8
8
|
# 2. A lambda, which the function calls for each element in the first argument. It can
|
9
9
|
# request one or two parameters.
|
10
10
|
#
|
@@ -80,12 +80,12 @@ Puppet::Functions.create_function(:filter) do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
dispatch :filter_Enumerable_2 do
|
83
|
-
param '
|
83
|
+
param 'Iterable', :enumerable
|
84
84
|
block_param 'Callable[2,2]', :block
|
85
85
|
end
|
86
86
|
|
87
87
|
dispatch :filter_Enumerable_1 do
|
88
|
-
param '
|
88
|
+
param 'Iterable', :enumerable
|
89
89
|
block_param 'Callable[1,1]', :block
|
90
90
|
end
|
91
91
|
|
@@ -105,8 +105,7 @@ Puppet::Functions.create_function(:filter) do
|
|
105
105
|
|
106
106
|
def filter_Enumerable_1(enumerable)
|
107
107
|
result = []
|
108
|
-
|
109
|
-
enum = asserted_enumerable(enumerable)
|
108
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
110
109
|
begin
|
111
110
|
loop do
|
112
111
|
it = enum.next
|
@@ -122,7 +121,7 @@ Puppet::Functions.create_function(:filter) do
|
|
122
121
|
def filter_Enumerable_2(enumerable)
|
123
122
|
result = []
|
124
123
|
index = 0
|
125
|
-
enum =
|
124
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
126
125
|
begin
|
127
126
|
loop do
|
128
127
|
it = enum.next
|
@@ -135,12 +134,4 @@ Puppet::Functions.create_function(:filter) do
|
|
135
134
|
end
|
136
135
|
result
|
137
136
|
end
|
138
|
-
|
139
|
-
def asserted_enumerable(obj)
|
140
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
141
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
142
|
-
end
|
143
|
-
enum
|
144
|
-
end
|
145
|
-
|
146
137
|
end
|
data/lib/puppet/functions/map.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
# Applies a [lambda](
|
1
|
+
# Applies a [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
2
2
|
# to every value in a data structure and returns an array containing the results.
|
3
3
|
#
|
4
4
|
# This function takes two mandatory arguments, in this order:
|
5
5
|
#
|
6
|
-
# 1. An array or
|
6
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
7
7
|
# 2. A lambda, which the function calls for each element in the first argument. It can
|
8
8
|
# request one or two parameters.
|
9
9
|
#
|
@@ -78,12 +78,12 @@ Puppet::Functions.create_function(:map) do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
dispatch :map_Enumerable_2 do
|
81
|
-
param '
|
81
|
+
param 'Iterable', :enumerable
|
82
82
|
block_param 'Callable[2,2]', :block
|
83
83
|
end
|
84
84
|
|
85
85
|
dispatch :map_Enumerable_1 do
|
86
|
-
param '
|
86
|
+
param 'Iterable', :enumerable
|
87
87
|
block_param 'Callable[1,1]', :block
|
88
88
|
end
|
89
89
|
|
@@ -98,7 +98,7 @@ Puppet::Functions.create_function(:map) do
|
|
98
98
|
def map_Enumerable_1(enumerable)
|
99
99
|
result = []
|
100
100
|
index = 0
|
101
|
-
enum =
|
101
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
102
102
|
begin
|
103
103
|
loop { result << yield(enum.next) }
|
104
104
|
rescue StopIteration
|
@@ -109,7 +109,7 @@ Puppet::Functions.create_function(:map) do
|
|
109
109
|
def map_Enumerable_2(enumerable)
|
110
110
|
result = []
|
111
111
|
index = 0
|
112
|
-
enum =
|
112
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
113
113
|
begin
|
114
114
|
loop do
|
115
115
|
result << yield(index, enum.next)
|
@@ -119,12 +119,4 @@ Puppet::Functions.create_function(:map) do
|
|
119
119
|
end
|
120
120
|
result
|
121
121
|
end
|
122
|
-
|
123
|
-
def asserted_enumerable(obj)
|
124
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
125
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
126
|
-
end
|
127
|
-
enum
|
128
|
-
end
|
129
|
-
|
130
122
|
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
#
|
7
7
|
# This function takes two mandatory arguments, in this order:
|
8
8
|
#
|
9
|
-
# 1. An array or
|
9
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
10
10
|
# 2. A lambda, which the function calls for each element in the first argument. It takes
|
11
11
|
# two mandatory parameters:
|
12
12
|
# 1. A memo value that is overwritten after each iteration with the iteration's result.
|
@@ -99,31 +99,23 @@
|
|
99
99
|
Puppet::Functions.create_function(:reduce) do
|
100
100
|
|
101
101
|
dispatch :reduce_without_memo do
|
102
|
-
param '
|
102
|
+
param 'Iterable', :enumerable
|
103
103
|
block_param 'Callable[2,2]', :block
|
104
104
|
end
|
105
105
|
|
106
106
|
dispatch :reduce_with_memo do
|
107
|
-
param '
|
107
|
+
param 'Iterable', :enumerable
|
108
108
|
param 'Any', :memo
|
109
109
|
block_param 'Callable[2,2]', :block
|
110
110
|
end
|
111
111
|
|
112
112
|
def reduce_without_memo(enumerable)
|
113
|
-
enum =
|
113
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
114
114
|
enum.reduce {|memo, x| yield(memo, x) }
|
115
115
|
end
|
116
116
|
|
117
117
|
def reduce_with_memo(enumerable, given_memo)
|
118
|
-
enum =
|
118
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
119
119
|
enum.reduce(given_memo) {|memo, x| yield(memo, x) }
|
120
120
|
end
|
121
|
-
|
122
|
-
def asserted_enumerable(obj)
|
123
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
124
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
125
|
-
end
|
126
|
-
enum
|
127
|
-
end
|
128
|
-
|
129
121
|
end
|