puppet 4.8.2-universal-darwin → 4.9.0-universal-darwin
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 +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +52 -0
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2595
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -1,25 +1,37 @@
|
|
1
1
|
require 'puppet/pops/lookup/interpolation'
|
2
2
|
|
3
|
+
# TODO: API 5.0, remove this module
|
4
|
+
# @api private
|
5
|
+
# @deprecated
|
3
6
|
module Puppet::Plugins::DataProviders
|
4
|
-
# @
|
7
|
+
# @deprecated
|
5
8
|
module DataProvider
|
9
|
+
include Puppet::Pops::Lookup::DataProvider
|
6
10
|
include Puppet::Pops::Lookup::Interpolation
|
7
11
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
def key_lookup(key, lookup_invocation, merge)
|
13
|
+
lookup(key.to_s, lookup_invocation, merge)
|
14
|
+
end
|
15
|
+
|
16
|
+
def unchecked_key_lookup(key, lookup_invocation, merge)
|
17
|
+
unchecked_lookup(key.to_s, lookup_invocation, merge)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @deprecated
|
21
|
+
def lookup(key, lookup_invocation, merge)
|
22
|
+
lookup_invocation.check(key) { unchecked_lookup(key, lookup_invocation, merge) }
|
15
23
|
end
|
16
24
|
|
17
25
|
# Performs a lookup with the assumption that a recursive check has been made.
|
18
26
|
#
|
19
27
|
# @param key [String] The key to lookup
|
20
28
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
21
|
-
# @param merge [String|Hash
|
29
|
+
# @param merge [String|Hash{String => Object}] Merge strategy or hash with strategy and options
|
22
30
|
def unchecked_lookup(key, lookup_invocation, merge)
|
31
|
+
unless Puppet[:strict] == :off
|
32
|
+
Puppet.warn_once(:deprecation, 'DataProvider#unchecked_lookup',
|
33
|
+
'DataProvider#unchecked_lookup is deprecated and will be removed in the next major version of Puppet')
|
34
|
+
end
|
23
35
|
segments = split_key(key)
|
24
36
|
root_key = segments.shift
|
25
37
|
lookup_invocation.with(:data_provider, self) do
|
@@ -41,6 +53,7 @@ module Puppet::Plugins::DataProviders
|
|
41
53
|
# @param value [Object] The value to perform post processing on
|
42
54
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
43
55
|
# @return [Object] The result of post processing the value.
|
56
|
+
# @deprecated
|
44
57
|
def post_process(value, lookup_invocation)
|
45
58
|
interpolate(value, lookup_invocation, true)
|
46
59
|
end
|
@@ -56,10 +69,15 @@ module Puppet::Plugins::DataProviders
|
|
56
69
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
57
70
|
# @param merge [String|Hash<String,Object>|nil] Merge strategy or hash with strategy and options
|
58
71
|
# @return [Hash] The data hash for the given _key_
|
72
|
+
# @deprecated
|
59
73
|
def data(data_key, lookup_invocation)
|
74
|
+
unless Puppet[:strict] == :off
|
75
|
+
Puppet.warn_once(:deprecation, 'DataProvider#data',
|
76
|
+
'DataProvider#data is deprecated and will be removed in the next major version of Puppet')
|
77
|
+
end
|
60
78
|
compiler = lookup_invocation.scope.compiler
|
61
79
|
adapter = Puppet::DataProviders::DataAdapter.get(compiler) || Puppet::DataProviders::DataAdapter.adapt(compiler)
|
62
|
-
adapter.data[data_key] ||= validate_data(initialize_data(data_key, lookup_invocation)
|
80
|
+
adapter.data[data_key] ||= validate_data(initialize_data(data_key, lookup_invocation))
|
63
81
|
end
|
64
82
|
protected :data
|
65
83
|
|
@@ -67,7 +85,12 @@ module Puppet::Plugins::DataProviders
|
|
67
85
|
#
|
68
86
|
# @param key [String] The key to lookup
|
69
87
|
# @return [String,nil] The data key or nil if not applicable
|
88
|
+
# @deprecated
|
70
89
|
def data_key(key, lookup_invocation)
|
90
|
+
unless Puppet[:strict] == :off
|
91
|
+
Puppet.warn_once(:deprecation, 'DataProvider#data_key',
|
92
|
+
'DataProvider#data_key is deprecated and will be removed in the next major version of Puppet')
|
93
|
+
end
|
71
94
|
nil
|
72
95
|
end
|
73
96
|
|
@@ -76,7 +99,12 @@ module Puppet::Plugins::DataProviders
|
|
76
99
|
# @param data_key [String] The data key such as the name of a module or the constant 'environment'
|
77
100
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
78
101
|
# @return [Hash] The hash of values
|
102
|
+
# @deprecated
|
79
103
|
def initialize_data(data_key, lookup_invocation)
|
104
|
+
unless Puppet[:strict] == :off
|
105
|
+
Puppet.warn_once(:deprecation, 'DataProvider#initialize_data',
|
106
|
+
'DataProvider#initialize_data is deprecated and will be removed in the next major version of Puppet')
|
107
|
+
end
|
80
108
|
{}
|
81
109
|
end
|
82
110
|
protected :initialize_data
|
@@ -86,23 +114,38 @@ module Puppet::Plugins::DataProviders
|
|
86
114
|
cname[cname.rindex(':')+1..-1]
|
87
115
|
end
|
88
116
|
|
117
|
+
# @deprecated
|
89
118
|
def validate_data(data, data_key)
|
90
119
|
data
|
91
120
|
end
|
92
121
|
end
|
93
122
|
|
123
|
+
# TODO: API 5.0 Remove this class
|
124
|
+
# @deprecated
|
94
125
|
# @api private
|
95
126
|
class ModuleDataProvider
|
96
|
-
LOOKUP_OPTIONS =
|
127
|
+
LOOKUP_OPTIONS = 'lookup_options'.freeze
|
97
128
|
include DataProvider
|
98
129
|
|
130
|
+
attr_reader :module_name
|
131
|
+
|
132
|
+
def initialize(module_name = nil)
|
133
|
+
unless Puppet[:strict] == :off
|
134
|
+
Puppet.warn_once(:deprecation, 'Plugins::DataProviders::ModuleDataProvider',
|
135
|
+
'Plugins::DataProviders::ModuleDataProvider is deprecated and will be removed in the next major version of Puppet')
|
136
|
+
end
|
137
|
+
@module_name = module_name || Puppet::Pops::Lookup::Invocation.current.module_name
|
138
|
+
end
|
139
|
+
|
99
140
|
# Retrieve the first segment of the qualified name _key_. This method will throw
|
100
141
|
# :no_such_key unless the segment can be extracted.
|
101
142
|
#
|
102
143
|
# @param key [String] The key
|
103
144
|
# @return [String] The first segment of the given key
|
145
|
+
# @api private
|
146
|
+
# @deprecated
|
104
147
|
def data_key(key, lookup_invocation)
|
105
|
-
return
|
148
|
+
return module_name if key == LOOKUP_OPTIONS
|
106
149
|
qual_index = key.index('::')
|
107
150
|
throw :no_such_key if qual_index.nil?
|
108
151
|
key[0..qual_index-1]
|
@@ -132,10 +175,21 @@ module Puppet::Plugins::DataProviders
|
|
132
175
|
end
|
133
176
|
end
|
134
177
|
|
178
|
+
# TODO: API 5.0 Remove this class
|
179
|
+
# @deprecated
|
135
180
|
# @api private
|
136
181
|
class EnvironmentDataProvider
|
137
182
|
include DataProvider
|
138
183
|
|
184
|
+
def initialize
|
185
|
+
unless Puppet[:strict] == :off
|
186
|
+
Puppet.warn_once(:deprecation, 'Plugins::DataProviders::EnvironmentDataProvider',
|
187
|
+
'Plugins::DataProviders::EnvironmentDataProvider is deprecated and will be removed in the next major version of Puppet')
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
# @api private
|
192
|
+
# @deprecated
|
139
193
|
def data_key(key, lookup_invocation)
|
140
194
|
'environment'
|
141
195
|
end
|
@@ -145,11 +199,13 @@ module Puppet::Plugins::DataProviders
|
|
145
199
|
# the fully resolved path, and whether or the resolved path exists.
|
146
200
|
#
|
147
201
|
# @api private
|
202
|
+
# @deprecated
|
148
203
|
class ResolvedPath
|
149
204
|
attr_reader :original_path, :path
|
150
205
|
|
151
206
|
# @param original_path [String] path as found in declaration. May contain interpolation expressions
|
152
207
|
# @param path [Pathname] the expanded absolute path
|
208
|
+
# @deprecated
|
153
209
|
def initialize(original_path, path)
|
154
210
|
@original_path = original_path
|
155
211
|
@path = path
|
@@ -157,11 +213,12 @@ module Puppet::Plugins::DataProviders
|
|
157
213
|
end
|
158
214
|
|
159
215
|
# @return [Boolean] cached info if the path exists or not
|
160
|
-
# @
|
216
|
+
# @deprecated
|
161
217
|
def exists?
|
162
218
|
@exists = @path.exist? if @exists.nil?
|
163
219
|
@exists
|
164
220
|
end
|
221
|
+
alias exist? exists?
|
165
222
|
end
|
166
223
|
|
167
224
|
# A data provider that is initialized with a set of _paths_. When performing lookup, each
|
@@ -170,6 +227,7 @@ module Puppet::Plugins::DataProviders
|
|
170
227
|
#
|
171
228
|
# @abstract
|
172
229
|
# @api private
|
230
|
+
# @deprecated
|
173
231
|
class PathBasedDataProvider
|
174
232
|
include DataProvider
|
175
233
|
|
@@ -178,7 +236,12 @@ module Puppet::Plugins::DataProviders
|
|
178
236
|
# @param name [String] The name of the data provider
|
179
237
|
# @param paths [Array<ResolvedPath>] Paths used by this provider
|
180
238
|
# @param parent_data_provider [DataProvider] The data provider that is the container of this data provider
|
239
|
+
# @deprecated
|
181
240
|
def initialize(name, paths, parent_data_provider = nil)
|
241
|
+
unless Puppet[:strict] == :off
|
242
|
+
Puppet.warn_once(:deprecation, 'PathBasedDataProvider',
|
243
|
+
'PathBasedDataProvider is deprecated and will be removed in the next major version of Puppet')
|
244
|
+
end
|
182
245
|
@name = name
|
183
246
|
@paths = paths
|
184
247
|
@parent_data_provider = parent_data_provider
|
@@ -196,6 +259,7 @@ module Puppet::Plugins::DataProviders
|
|
196
259
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
197
260
|
# @param merge [String|Hash<String,Object>|nil] Merge strategy or hash with strategy and options
|
198
261
|
# @return [Hash] The data hash for the given _key_
|
262
|
+
# @deprecated
|
199
263
|
def load_data(path, data_key, lookup_invocation)
|
200
264
|
compiler = lookup_invocation.scope.compiler
|
201
265
|
adapter = Puppet::DataProviders::DataAdapter.get(compiler) || Puppet::DataProviders::DataAdapter.adapt(compiler)
|
@@ -203,6 +267,7 @@ module Puppet::Plugins::DataProviders
|
|
203
267
|
end
|
204
268
|
protected :data
|
205
269
|
|
270
|
+
# @deprecated
|
206
271
|
def validate_data(data, module_name)
|
207
272
|
@parent_data_provider.nil? ? data : @parent_data_provider.validate_data(data, module_name)
|
208
273
|
end
|
@@ -213,6 +278,7 @@ module Puppet::Plugins::DataProviders
|
|
213
278
|
# @param key [String] The key to lookup
|
214
279
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
215
280
|
# @param merge [Puppet::Pops::MergeStrategy,String,Hash<String,Object>,nil] Merge strategy or hash with strategy and options
|
281
|
+
# @deprecated
|
216
282
|
def unchecked_lookup(key, lookup_invocation, merge)
|
217
283
|
segments = split_key(key)
|
218
284
|
root_key = segments.shift
|
@@ -222,7 +288,7 @@ module Puppet::Plugins::DataProviders
|
|
222
288
|
merge_strategy = Puppet::Pops::MergeStrategy.strategy(merge)
|
223
289
|
lookup_invocation.with(:merge, merge_strategy) do
|
224
290
|
merged_result = merge_strategy.merge_lookup(@paths) do |path|
|
225
|
-
lookup_invocation.with(:
|
291
|
+
lookup_invocation.with(:location, path) do
|
226
292
|
if path.exists?
|
227
293
|
hash = load_data(path.path, module_name, lookup_invocation)
|
228
294
|
value = hash[root_key]
|
@@ -234,7 +300,7 @@ module Puppet::Plugins::DataProviders
|
|
234
300
|
throw :no_such_key
|
235
301
|
end
|
236
302
|
else
|
237
|
-
lookup_invocation.
|
303
|
+
lookup_invocation.report_location_not_found
|
238
304
|
throw :no_such_key
|
239
305
|
end
|
240
306
|
end
|
@@ -245,17 +311,28 @@ module Puppet::Plugins::DataProviders
|
|
245
311
|
end
|
246
312
|
end
|
247
313
|
|
314
|
+
# TODO: API 5.0 Remove this class
|
248
315
|
# Factory for creating path based data providers
|
249
316
|
#
|
250
317
|
# @abstract
|
251
318
|
# @api private
|
319
|
+
# @deprecated
|
252
320
|
class PathBasedDataProviderFactory
|
321
|
+
# @deprecated
|
322
|
+
def initialize
|
323
|
+
unless Puppet[:strict] == :off
|
324
|
+
Puppet.warn_once(:deprecation, 'PathBasedDataProviderFactory',
|
325
|
+
'PathBasedDataProviderFactory is deprecated and will be removed in the next major version of Puppet')
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
253
329
|
# Create a path based data provider with the given _name_ and _paths_
|
254
330
|
#
|
255
331
|
# @param name [String] the name of the created provider (for logging and debugging)
|
256
332
|
# @param paths [Array<String>] array of resolved paths
|
257
333
|
# @param parent_data_provider [DataProvider] The data provider that is the container of this data provider
|
258
334
|
# @return [DataProvider] The created data provider
|
335
|
+
# @deprecated
|
259
336
|
def create(name, paths, parent_data_provider)
|
260
337
|
raise NotImplementedError, "Subclass of PathBasedDataProviderFactory must implement 'create' method"
|
261
338
|
end
|
@@ -271,6 +348,7 @@ module Puppet::Plugins::DataProviders
|
|
271
348
|
# @param paths [Array<String>] paths that have been preprocessed (interpolations resolved)
|
272
349
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
273
350
|
# @return [Array<ResolvedPath>] Array of resolved paths
|
351
|
+
# @deprecated
|
274
352
|
def resolve_paths(datadir, declared_paths, paths, lookup_invocation)
|
275
353
|
[]
|
276
354
|
end
|
@@ -283,30 +361,43 @@ module Puppet::Plugins::DataProviders
|
|
283
361
|
end
|
284
362
|
end
|
285
363
|
|
364
|
+
# TODO: API 5.0 Remove this class
|
286
365
|
# Factory for creating file based data providers. This is an extension of the path based
|
287
366
|
# factory where it is required that each resolved path appoints an existing file in the local
|
288
367
|
# file system.
|
289
368
|
#
|
290
369
|
# @abstract
|
291
370
|
# @api private
|
371
|
+
# @deprecated
|
292
372
|
class FileBasedDataProviderFactory < PathBasedDataProviderFactory
|
373
|
+
# @deprecated
|
374
|
+
def initialize
|
375
|
+
unless Puppet[:strict] == :off
|
376
|
+
Puppet.warn_once(:deprecation, 'FileBasedDataProviderFactory',
|
377
|
+
'FileBasedDataProviderFactory is deprecated and will be removed in the next major version of Puppet')
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
293
381
|
# @param datadir [Pathname] The base when creating absolute paths
|
294
382
|
# @param declared_paths [Array<String>] paths as found in declaration. May contain interpolation expressions
|
295
383
|
# @param paths [Array<String>] paths that have been preprocessed (interpolations resolved)
|
296
384
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
297
|
-
# @return [Array<
|
385
|
+
# @return [Array<Puppet::DataProviders::ResolvedLocation>] Array of resolved paths
|
386
|
+
# @deprecated
|
298
387
|
def resolve_paths(datadir, declared_paths, paths, lookup_invocation)
|
299
388
|
resolved_paths = []
|
300
389
|
unless paths.nil? || datadir.nil?
|
301
390
|
ext = path_extension
|
302
391
|
paths.each_with_index do |path, idx|
|
303
392
|
path = path + ext unless path.end_with?(ext)
|
304
|
-
|
393
|
+
path = datadir + path
|
394
|
+
resolved_paths << Puppet::Pops::Lookup::ResolvedLocation.new(declared_paths[idx], path, path.exist?)
|
305
395
|
end
|
306
396
|
end
|
307
397
|
resolved_paths
|
308
398
|
end
|
309
399
|
|
400
|
+
# @deprecated
|
310
401
|
def path_extension
|
311
402
|
raise NotImplementedError, "Subclass of FileBasedProviderFactory must implement 'path_extension' method"
|
312
403
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
+
# TODO: API 5.0, remove this module
|
1
2
|
# @api private
|
3
|
+
# @deprecated
|
2
4
|
module Puppet::Plugins::DataProviders
|
3
5
|
class Registry
|
4
6
|
def self.register_extensions(extensions)
|
@@ -38,47 +40,11 @@ module Puppet::Plugins::DataProviders
|
|
38
40
|
to_instance(ENV_DATA_PROVIDERS_TYPE)
|
39
41
|
end
|
40
42
|
|
41
|
-
default_bindings.bind do
|
42
|
-
name('function')
|
43
|
-
in_multibind(ENV_DATA_PROVIDERS_KEY)
|
44
|
-
to_instance('Puppet::DataProviders::FunctionEnvDataProvider')
|
45
|
-
end
|
46
|
-
|
47
|
-
default_bindings.bind do
|
48
|
-
name('hiera')
|
49
|
-
in_multibind(ENV_DATA_PROVIDERS_KEY)
|
50
|
-
to_instance('Puppet::DataProviders::HieraEnvDataProvider')
|
51
|
-
end
|
52
|
-
|
53
43
|
default_bindings.bind do
|
54
44
|
name('none')
|
55
45
|
in_multibind(MODULE_DATA_PROVIDERS_KEY)
|
56
46
|
to_instance(MODULE_DATA_PROVIDERS_TYPE)
|
57
47
|
end
|
58
|
-
|
59
|
-
default_bindings.bind do
|
60
|
-
name('function')
|
61
|
-
in_multibind(MODULE_DATA_PROVIDERS_KEY)
|
62
|
-
to_instance('Puppet::DataProviders::FunctionModuleDataProvider')
|
63
|
-
end
|
64
|
-
|
65
|
-
default_bindings.bind do
|
66
|
-
name('hiera')
|
67
|
-
in_multibind(MODULE_DATA_PROVIDERS_KEY)
|
68
|
-
to_instance('Puppet::DataProviders::HieraModuleDataProvider')
|
69
|
-
end
|
70
|
-
|
71
|
-
default_bindings.bind do
|
72
|
-
name('json')
|
73
|
-
in_multibind(PATH_BASED_DATA_PROVIDER_FACTORIES_KEY)
|
74
|
-
to_instance('Puppet::DataProviders::JsonDataProviderFactory')
|
75
|
-
end
|
76
|
-
|
77
|
-
default_bindings.bind do
|
78
|
-
name('yaml')
|
79
|
-
in_multibind(PATH_BASED_DATA_PROVIDER_FACTORIES_KEY)
|
80
|
-
to_instance('Puppet::DataProviders::YamlDataProviderFactory')
|
81
|
-
end
|
82
48
|
end
|
83
49
|
end
|
84
50
|
end
|
@@ -176,9 +176,6 @@ module Adaptable
|
|
176
176
|
adapter
|
177
177
|
end
|
178
178
|
|
179
|
-
DOUBLE_COLON = '::'
|
180
|
-
USCORE = '_'
|
181
|
-
|
182
179
|
# Returns a suitable instance variable name given a class name.
|
183
180
|
# The returned string is the fully qualified name of a class with '::' replaced by '_' since
|
184
181
|
# '::' is not allowed in an instance variable name.
|
@@ -722,7 +722,7 @@ module Producers
|
|
722
722
|
end
|
723
723
|
|
724
724
|
if uniq || flatten || conflict_resolution.to_s == 'append'
|
725
|
-
etype = binding.type.
|
725
|
+
etype = binding.type.value_type
|
726
726
|
unless etype.class == Types::PDataType || etype.is_a?(Types::PArrayType)
|
727
727
|
detail = []
|
728
728
|
detail << ":uniq" if uniq
|
@@ -818,10 +818,10 @@ module Producers
|
|
818
818
|
raise ArgumentError, "Entry contributing to multibind hash with id '#{binding.id}' must have a name."
|
819
819
|
end
|
820
820
|
|
821
|
-
unless tc.instance?(binding.type.
|
821
|
+
unless tc.instance?(binding.type.value_type, value)
|
822
822
|
raise ArgumentError, ["Type Error: value contribution to #{binding.name}['#{key}'] ",
|
823
823
|
"is incompatible, ",
|
824
|
-
type_error_detail(binding.type.
|
824
|
+
type_error_detail(binding.type.value_type, value)].join()
|
825
825
|
end
|
826
826
|
end
|
827
827
|
end
|
@@ -158,7 +158,7 @@ class AccessOperator
|
|
158
158
|
|
159
159
|
def access_PSemVerType(o, scope, keys)
|
160
160
|
keys.flatten!
|
161
|
-
assert_keys(keys, o, 1, Float::INFINITY, String,
|
161
|
+
assert_keys(keys, o, 1, Float::INFINITY, String, SemanticPuppet::VersionRange)
|
162
162
|
Types::TypeFactory.sem_ver(*keys)
|
163
163
|
end
|
164
164
|
|
@@ -284,7 +284,7 @@ class AccessOperator
|
|
284
284
|
type = keys[0]
|
285
285
|
unless type.is_a?(Types::PAnyType)
|
286
286
|
if type.is_a?(String)
|
287
|
-
type = Types::TypeFactory.string(
|
287
|
+
type = Types::TypeFactory.string(type)
|
288
288
|
else
|
289
289
|
fail(Issues::BAD_TYPE_SLICE_TYPE, @semantic.keys[0], {:base_type => 'Optional-Type', :actual => type.class})
|
290
290
|
end
|
@@ -335,7 +335,7 @@ class AccessOperator
|
|
335
335
|
type = keys[0]
|
336
336
|
case type
|
337
337
|
when String
|
338
|
-
type = Types::TypeFactory.string(
|
338
|
+
type = Types::TypeFactory.string(type)
|
339
339
|
when Types::PAnyType
|
340
340
|
type = nil if type.class == Types::PAnyType
|
341
341
|
else
|
@@ -460,7 +460,7 @@ class AccessOperator
|
|
460
460
|
fail(Issues::BAD_TYPE_SLICE_ARITY, @semantic,
|
461
461
|
{:base_type => 'Collection-Type', :min => 1, :max => 2, :actual => keys.size})
|
462
462
|
end
|
463
|
-
Types::PCollectionType.new(
|
463
|
+
Types::PCollectionType.new(size_t)
|
464
464
|
end
|
465
465
|
|
466
466
|
# An Array can create a new Array type. It is not possible to create a collection of Array types.
|
@@ -311,7 +311,7 @@ class Closure < CallableSignature
|
|
311
311
|
|
312
312
|
parameters.each do |param|
|
313
313
|
arg_type, param_range = create_param_type(param, closure_scope)
|
314
|
-
key_type = type_factory.string(
|
314
|
+
key_type = type_factory.string(param.name.to_s)
|
315
315
|
key_type = type_factory.optional(key_type) unless param.value.nil?
|
316
316
|
members[key_type] = arg_type
|
317
317
|
end
|
@@ -103,7 +103,7 @@ class CompareOperator
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def cmp_Version(a, b)
|
106
|
-
raise ArgumentError.new('Versions not comparable to non Versions') unless b.is_a?(
|
106
|
+
raise ArgumentError.new('Versions not comparable to non Versions') unless b.is_a?(SemanticPuppet::Version)
|
107
107
|
a <=> b
|
108
108
|
end
|
109
109
|
|
@@ -172,7 +172,7 @@ class CompareOperator
|
|
172
172
|
# Always set match data, a "not found" should not keep old match data visible
|
173
173
|
set_match_data(matched, scope) # creates ephemeral
|
174
174
|
return !!matched
|
175
|
-
when String,
|
175
|
+
when String, SemanticPuppet::Version
|
176
176
|
a.any? { |element| match(b, element, scope) }
|
177
177
|
when Types::PAnyType
|
178
178
|
a.each {|element| return true if b.instance?(element) }
|
@@ -206,11 +206,11 @@ class CompareOperator
|
|
206
206
|
|
207
207
|
# Matches against semvers and strings
|
208
208
|
def match_Version(version, left, scope)
|
209
|
-
if left.is_a?(
|
209
|
+
if left.is_a?(SemanticPuppet::Version)
|
210
210
|
version == left
|
211
211
|
elsif left.is_a? String
|
212
212
|
begin
|
213
|
-
version ==
|
213
|
+
version == SemanticPuppet::Version.parse(left)
|
214
214
|
rescue ArgumentError
|
215
215
|
false
|
216
216
|
end
|
@@ -570,7 +570,7 @@ class EvaluatorImpl
|
|
570
570
|
return o.operator == :'=~' ? !!matched : !matched
|
571
571
|
end
|
572
572
|
|
573
|
-
if pattern.is_a?(
|
573
|
+
if pattern.is_a?(SemanticPuppet::VersionRange)
|
574
574
|
# evaluate if range includes version
|
575
575
|
matched = Types::PSemVerRangeType.include?(pattern, left)
|
576
576
|
return o.operator == :'=~' ? matched : !matched
|
data/lib/puppet/pops/issues.rb
CHANGED
@@ -619,6 +619,10 @@ module Issues
|
|
619
619
|
"The key '#{key}' is declared more than once"
|
620
620
|
end
|
621
621
|
|
622
|
+
DUPLICATE_DEFAULT = issue :DUPLICATE_DEFAULT, :container do
|
623
|
+
"This #{label.label(container)} already has a 'default' entry - this is a duplicate"
|
624
|
+
end
|
625
|
+
|
622
626
|
RESERVED_PARAMETER = hard_issue :RESERVED_PARAMETER, :container, :param_name do
|
623
627
|
"The parameter $#{param_name} redefines a built in parameter in #{label.the(container)}"
|
624
628
|
end
|
@@ -40,6 +40,20 @@ module Puppet::Pops::LabelProvider
|
|
40
40
|
count == 1 ? text : "#{text}s"
|
41
41
|
end
|
42
42
|
|
43
|
+
# Combines several strings using commas and a final conjunction
|
44
|
+
def combine_strings(strings, conjunction = 'or')
|
45
|
+
case strings.size
|
46
|
+
when 0
|
47
|
+
''
|
48
|
+
when 1
|
49
|
+
strings[0]
|
50
|
+
when 2
|
51
|
+
"#{strings[0]} #{conjunction} #{strings[1]}"
|
52
|
+
else
|
53
|
+
"#{strings[0...-1].join(', ')}, #{conjunction} #{strings.last}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
43
57
|
# Produces an *indefinite article* (a/an) for the given text ('a' if
|
44
58
|
# it starts with a vowel) This is obviously flawed in the general
|
45
59
|
# sense as may labels have punctuation at the start and this method
|
@@ -109,7 +109,9 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
109
109
|
def effective_path(typed_name, start_index_in_name)
|
110
110
|
# Puppet name to path always skips the name-space as that is part of the generic path
|
111
111
|
# i.e. <module>/mymodule/functions/foo.pp is the function mymodule::foo
|
112
|
-
|
112
|
+
parts = typed_name.name_parts
|
113
|
+
parts = parts[start_index_in_name..-1] if parts.size > 1
|
114
|
+
"#{File.join(generic_path, parts)}.pp"
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
@@ -21,6 +21,8 @@ module Loader
|
|
21
21
|
# @api private
|
22
22
|
#
|
23
23
|
module ModuleLoaders
|
24
|
+
ENVIRONMENT = 'environment'.freeze
|
25
|
+
|
24
26
|
def self.system_loader_from(parent_loader, loaders)
|
25
27
|
# Puppet system may be installed in a fixed location via RPM, installed as a Gem, via source etc.
|
26
28
|
# The only way to find this across the different ways puppet can be installed is
|
@@ -37,6 +39,15 @@ module ModuleLoaders
|
|
37
39
|
)
|
38
40
|
end
|
39
41
|
|
42
|
+
def self.environment_loader_from(parent_loader, loaders, env_path)
|
43
|
+
ModuleLoaders::FileBased.new(parent_loader,
|
44
|
+
loaders,
|
45
|
+
ENVIRONMENT,
|
46
|
+
File.join(env_path, 'lib'),
|
47
|
+
ENVIRONMENT
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
40
51
|
def self.module_loader_from(parent_loader, loaders, module_name, module_path)
|
41
52
|
ModuleLoaders::FileBased.new(parent_loader,
|
42
53
|
loaders,
|
@@ -107,7 +118,6 @@ module ModuleLoaders
|
|
107
118
|
return nil unless typed_name.name_authority == Pcore::RUNTIME_NAME_AUTHORITY
|
108
119
|
|
109
120
|
# Assume it is a global name, and that all parts of the name should be used when looking up
|
110
|
-
name_part_index = 0
|
111
121
|
name_parts = typed_name.name_parts
|
112
122
|
|
113
123
|
# Certain types and names can be disqualified up front
|
@@ -119,10 +129,6 @@ module ModuleLoaders
|
|
119
129
|
# ok since such a "module" cannot have namespaced content).
|
120
130
|
#
|
121
131
|
return nil unless name_parts[0] == module_name
|
122
|
-
|
123
|
-
# Skip the first part of the name when computing the path since the path already contains the name of the
|
124
|
-
# module
|
125
|
-
name_part_index = 1
|
126
132
|
else
|
127
133
|
# The name is in the global name space.
|
128
134
|
|
@@ -144,7 +150,7 @@ module ModuleLoaders
|
|
144
150
|
# Find the file to instantiate, and instantiate the entity if file is found
|
145
151
|
origin = nil
|
146
152
|
if (smart_path = smart_paths.effective_paths(typed_name.type).find do |sp|
|
147
|
-
origin = sp.effective_path(typed_name,
|
153
|
+
origin = sp.effective_path(typed_name, global? ? 0 : 1)
|
148
154
|
existing_path(origin)
|
149
155
|
end)
|
150
156
|
value = smart_path.instantiator.create(self, typed_name, origin, get_contents(origin))
|
@@ -200,12 +206,20 @@ module ModuleLoaders
|
|
200
206
|
raise NotImplementedError.new
|
201
207
|
end
|
202
208
|
|
209
|
+
# Answers the question if this loader represents a global component (true for resource type loader and environment loader)
|
210
|
+
#
|
211
|
+
# @return [Boolean] `true` if this loader represents a global component
|
212
|
+
#
|
213
|
+
def global?
|
214
|
+
module_name.nil? || module_name == ENVIRONMENT
|
215
|
+
end
|
216
|
+
|
203
217
|
# Produces the private loader for the module. If this module is not already resolved, this will trigger resolution
|
204
218
|
#
|
205
219
|
def private_loader
|
206
220
|
# The system loader has a nil module_name and it does not have a private_loader as there are no functions
|
207
221
|
# that can only by called by puppet runtime - if so, it acts as the private loader directly.
|
208
|
-
@private_loader ||= (
|
222
|
+
@private_loader ||= (global? ? self : @loaders.private_loader_for_module(module_name))
|
209
223
|
end
|
210
224
|
end
|
211
225
|
|