puppet 4.8.2-x86-mingw32 → 4.9.0-x86-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 +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.rb +52 -0
- 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.rb +6 -3
- 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/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.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- 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.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- 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.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- 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/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.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- 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.rb +4 -3
- 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/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.rb +1 -1
- 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/visitor.rb +4 -3
- 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.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- 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/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.rb +1 -0
- 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/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_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- 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_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/version.rb +1 -1
- 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 -2607
- 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.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- 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
@@ -0,0 +1,87 @@
|
|
1
|
+
require_relative 'hiera_config'
|
2
|
+
require_relative 'data_provider'
|
3
|
+
|
4
|
+
module Puppet::Pops
|
5
|
+
module Lookup
|
6
|
+
# @api private
|
7
|
+
class ConfiguredDataProvider
|
8
|
+
include DataProvider
|
9
|
+
|
10
|
+
# @param config [HieraConfig,nil] the configuration
|
11
|
+
def initialize(config = nil)
|
12
|
+
@config = config.nil? ? nil : assert_config_version(config)
|
13
|
+
end
|
14
|
+
|
15
|
+
def config(lookup_invocation)
|
16
|
+
@config ||= assert_config_version(HieraConfig.create(configuration_path(lookup_invocation)))
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Pathname] the path to the configuration
|
20
|
+
def config_path
|
21
|
+
@config.nil? ? nil : @config.config_path
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [String] the name of this provider
|
25
|
+
def name
|
26
|
+
n = "#{place} "
|
27
|
+
n << '"' << module_name << '" ' unless module_name.nil?
|
28
|
+
n << 'Data Provider'
|
29
|
+
n << " (#{@config.name})" unless @config.nil?
|
30
|
+
n
|
31
|
+
end
|
32
|
+
|
33
|
+
# Performs a lookup by searching all configured locations for the given _key_. A merge will be performed if
|
34
|
+
# the value is found in more than one location.
|
35
|
+
#
|
36
|
+
# @param key [String] The key to lookup
|
37
|
+
# @param lookup_invocation [Invocation] The current lookup invocation
|
38
|
+
# @param merge [MergeStrategy,String,Hash{String => Object},nil] Merge strategy, merge strategy name, strategy and options hash, or nil (implies "first found")
|
39
|
+
# @return [Object] the found object
|
40
|
+
# @throw :no_such_key when the object is not found
|
41
|
+
def unchecked_key_lookup(key, lookup_invocation, merge)
|
42
|
+
lookup_invocation.with(:data_provider, self) do
|
43
|
+
merge_strategy = MergeStrategy.strategy(merge)
|
44
|
+
dps = data_providers(lookup_invocation)
|
45
|
+
if dps.empty?
|
46
|
+
lookup_invocation.report_not_found(key)
|
47
|
+
throw :no_such_key
|
48
|
+
end
|
49
|
+
merge_strategy.lookup(data_providers(lookup_invocation), lookup_invocation) do |data_provider|
|
50
|
+
data_provider.unchecked_key_lookup(key, lookup_invocation, merge_strategy)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
protected
|
56
|
+
|
57
|
+
# Assert that the given config version is accepted by this data provider.
|
58
|
+
#
|
59
|
+
# @param config [HieraConfig] the configuration to check
|
60
|
+
# @return [HieraConfig] the argument
|
61
|
+
# @raise [Puppet::DataBinding::LookupError] if the configuration version is unacceptable
|
62
|
+
def assert_config_version(config)
|
63
|
+
config
|
64
|
+
end
|
65
|
+
|
66
|
+
# Return the root of the configured entity
|
67
|
+
#
|
68
|
+
# @param lookup_invocation [Invocation] The current lookup invocation
|
69
|
+
# @return [Pathname] Path to root of the module
|
70
|
+
# @raise [Puppet::DataBinding::LookupError] if the given module is can not be found
|
71
|
+
#
|
72
|
+
def provider_root(lookup_invocation)
|
73
|
+
raise NotImplementedError, "#{self.class.name} must implement method '#provider_root'"
|
74
|
+
end
|
75
|
+
|
76
|
+
def configuration_path(lookup_invocation)
|
77
|
+
provider_root(lookup_invocation) + HieraConfig::CONFIG_FILE_NAME
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def data_providers(lookup_invocation)
|
83
|
+
config(lookup_invocation).configured_data_providers(lookup_invocation, self)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -1,86 +1,136 @@
|
|
1
|
+
require_relative 'interpolation'
|
2
|
+
|
1
3
|
module Puppet::Pops
|
2
|
-
|
3
|
-
|
4
|
-
|
4
|
+
module Lookup
|
5
|
+
# A FunctionContext is created for each unique hierarchy entry and adapted to the Compiler (and hence shares
|
6
|
+
# the compiler's life-cycle).
|
7
|
+
# @api private
|
8
|
+
class FunctionContext
|
9
|
+
include Interpolation
|
5
10
|
|
6
|
-
|
7
|
-
|
8
|
-
end
|
11
|
+
attr_reader :environment_name, :module_name, :function
|
12
|
+
attr_accessor :data_hash
|
9
13
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
Types::KEY_VALUE => nil
|
18
|
-
}
|
19
|
-
},
|
20
|
-
{
|
21
|
-
'not_found' => tf.callable([0, 0], tf.undef),
|
22
|
-
'explain' => tf.callable([0, 0, tf.callable(0,0)], tf.undef),
|
23
|
-
'cache' => tf.callable([tf.scalar, tf.any], tf.undef),
|
24
|
-
'cache_all' => tf.callable([tf.hash_kv(tf.scalar, tf.any)], tf.undef),
|
25
|
-
'cached_value' => tf.callable([tf.scalar], tf.any),
|
26
|
-
'cached_entries' => tf.variant(
|
27
|
-
tf.callable([0, 0, tf.callable(1,1)], tf.undef),
|
28
|
-
tf.callable([0, 0, tf.callable(2,2)], tf.undef),
|
29
|
-
tf.callable([0, 0], tf.iterable(tf.tuple([tf.scalar, tf.any])))
|
30
|
-
)
|
31
|
-
}
|
32
|
-
).resolve(Types::TypeParser.singleton, loader)
|
33
|
-
end
|
34
|
-
|
35
|
-
attr_reader :environment_name
|
36
|
-
attr_reader :module_name
|
14
|
+
def initialize(environment_name, module_name, function)
|
15
|
+
@data_hash = nil
|
16
|
+
@cache = {}
|
17
|
+
@environment_name = environment_name
|
18
|
+
@module_name = module_name
|
19
|
+
@function = function
|
20
|
+
end
|
37
21
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
@module_name = module_name
|
42
|
-
@cache = {}
|
43
|
-
end
|
22
|
+
def cache(key, value)
|
23
|
+
@cache[key] = value
|
24
|
+
end
|
44
25
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
26
|
+
def cache_all(hash)
|
27
|
+
@cache.merge!(hash)
|
28
|
+
nil
|
29
|
+
end
|
49
30
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
31
|
+
def cache_has_key(key)
|
32
|
+
@cache.include?(key)
|
33
|
+
end
|
54
34
|
|
55
|
-
|
56
|
-
|
57
|
-
|
35
|
+
def cached_value(key)
|
36
|
+
@cache[key]
|
37
|
+
end
|
58
38
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
yield(*enumerator.next)
|
66
|
-
else
|
67
|
-
yield(enumerator.next)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
nil
|
39
|
+
def cached_entries(&block)
|
40
|
+
if block_given?
|
41
|
+
enumerator = @cache.each_pair
|
42
|
+
@cache.size.times do
|
43
|
+
if block.arity == 2
|
44
|
+
yield(*enumerator.next)
|
71
45
|
else
|
72
|
-
|
46
|
+
yield(enumerator.next)
|
73
47
|
end
|
74
48
|
end
|
49
|
+
nil
|
50
|
+
else
|
51
|
+
Types::Iterable.on(@cache)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
75
55
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
56
|
+
# The Context is created once for each call to a function. It provides a combination of the {Invocation} object needed
|
57
|
+
# to provide explanation support and the {FunctionContext} object needed to provide the private cache.
|
58
|
+
# The {Context} is part of the public API. It will be passed to a _data_hash_, _data_dig_, or _lookup_key_ function and its
|
59
|
+
# attributes and methods can be used in a Puppet function as well as in a Ruby function.
|
60
|
+
# The {Context} is maps to the Pcore type 'Puppet::LookupContext'
|
61
|
+
#
|
62
|
+
# @api public
|
63
|
+
class Context
|
64
|
+
include Types::PuppetObject
|
65
|
+
extend Forwardable
|
80
66
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
67
|
+
def self._ptype
|
68
|
+
@type
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.register_ptype(loader, ir)
|
72
|
+
tf = Types::TypeFactory
|
73
|
+
key_type = tf.optional(tf.scalar)
|
74
|
+
@type = Pcore::create_object_type(loader, ir, self, 'Puppet::LookupContext', 'Any',
|
75
|
+
{
|
76
|
+
'environment_name' => Types::PStringType::NON_EMPTY,
|
77
|
+
'module_name' => {
|
78
|
+
Types::KEY_TYPE => tf.optional(Types::PStringType::NON_EMPTY),
|
79
|
+
Types::KEY_VALUE => nil
|
80
|
+
}
|
81
|
+
},
|
82
|
+
{
|
83
|
+
'not_found' => tf.callable([0, 0], tf.undef),
|
84
|
+
'explain' => tf.callable([0, 0, tf.callable(0,0)], tf.undef),
|
85
|
+
'interpolate' => tf.callable(1, 1),
|
86
|
+
'cache' => tf.callable([key_type, tf.any], tf.any),
|
87
|
+
'cache_all' => tf.callable([tf.hash_kv(key_type, tf.any)], tf.undef),
|
88
|
+
'cache_has_key' => tf.callable([key_type], tf.boolean),
|
89
|
+
'cached_value' => tf.callable([key_type], tf.any),
|
90
|
+
'cached_entries' => tf.variant(
|
91
|
+
tf.callable([0, 0, tf.callable(1,1)], tf.undef),
|
92
|
+
tf.callable([0, 0, tf.callable(2,2)], tf.undef),
|
93
|
+
tf.callable([0, 0], tf.iterable(tf.tuple([key_type, tf.any])))
|
94
|
+
)
|
95
|
+
}
|
96
|
+
).resolve(Types::TypeParser.singleton, loader)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Mainly for test purposes. Makes it possible to create a {Context} in Puppet code provided that a current {Invocation} exists.
|
100
|
+
def self.from_asserted_args(environment_name, module_name)
|
101
|
+
new(FunctionContext.new(environment_name, module_name, nil), Invocation.current)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Public methods delegated to the {FunctionContext}
|
105
|
+
def_delegators :@function_context, :cache, :cache_all, :cache_has_key, :cached_value, :cached_entries, :environment_name, :module_name
|
106
|
+
|
107
|
+
def initialize(function_context, lookup_invocation)
|
108
|
+
@lookup_invocation = lookup_invocation
|
109
|
+
@function_context = function_context
|
110
|
+
end
|
111
|
+
|
112
|
+
# Will call the given block to obtain a textual explanation if explanation support is active.
|
113
|
+
#
|
114
|
+
def explain(&block)
|
115
|
+
@lookup_invocation.report_text(&block)
|
116
|
+
nil
|
117
|
+
end
|
118
|
+
|
119
|
+
# Resolve interpolation expressions in the given value
|
120
|
+
# @param [Object] value
|
121
|
+
# @return [Object] the value with all interpolation expressions resolved
|
122
|
+
def interpolate(value)
|
123
|
+
@function_context.interpolate(value, @lookup_invocation, true)
|
124
|
+
end
|
125
|
+
|
126
|
+
def not_found
|
127
|
+
throw :no_such_key
|
85
128
|
end
|
129
|
+
|
130
|
+
# @api private
|
131
|
+
def invocation
|
132
|
+
@lookup_invocation
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
86
136
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Lookup
|
3
|
+
# A class that adapts a Hash
|
4
|
+
# @api private
|
5
|
+
class DataAdapter < Adaptable::Adapter
|
6
|
+
def self.create_adapter(o)
|
7
|
+
new
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@data = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def [](name)
|
15
|
+
@data[name]
|
16
|
+
end
|
17
|
+
|
18
|
+
def include?(name)
|
19
|
+
@data.include? name
|
20
|
+
end
|
21
|
+
|
22
|
+
def []=(name, value)
|
23
|
+
@data[name] = value
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative 'function_provider'
|
2
|
+
|
3
|
+
module Puppet::Pops
|
4
|
+
module Lookup
|
5
|
+
# @api private
|
6
|
+
class DataDigFunctionProvider < FunctionProvider
|
7
|
+
TAG = 'data_dig'.freeze
|
8
|
+
|
9
|
+
# Performs a lookup with the assumption that a recursive check has been made.
|
10
|
+
#
|
11
|
+
# @param key [LookupKey] The key to lookup
|
12
|
+
# @param lookup_invocation [Invocation] The current lookup invocation
|
13
|
+
# @param merge [MergeStrategy,String,Hash{String => Object},nil] Merge strategy, merge strategy name, strategy and options hash, or nil (implies "first found")
|
14
|
+
# @return [Object] the found object
|
15
|
+
# @throw :no_such_key when the object is not found
|
16
|
+
def unchecked_key_lookup(key, lookup_invocation, merge)
|
17
|
+
segments = key.to_a
|
18
|
+
lookup_invocation.with(:data_provider, self) do
|
19
|
+
MergeStrategy.strategy(merge).lookup(locations, lookup_invocation) do |location|
|
20
|
+
if location.nil?
|
21
|
+
value = data_dig(key, segments, lookup_invocation, nil)
|
22
|
+
lookup_invocation.report_found(key, validate_data_value(self, value))
|
23
|
+
key.undig(value)
|
24
|
+
else
|
25
|
+
lookup_invocation.with(:location, location) do
|
26
|
+
if location.exist?
|
27
|
+
value = data_dig(key, segments, lookup_invocation, location.location)
|
28
|
+
lookup_invocation.report_found(key, validate_data_value(self, value))
|
29
|
+
key.undig(value)
|
30
|
+
else
|
31
|
+
lookup_invocation.report_path_not_found
|
32
|
+
throw :no_such_key
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def data_dig(key, segments, lookup_invocation, location)
|
43
|
+
ctx = function_context(lookup_invocation, location)
|
44
|
+
ctx.data_hash ||= {}
|
45
|
+
catch(:no_such_key) do
|
46
|
+
hash = ctx.data_hash
|
47
|
+
hash[key] = ctx.function.call(lookup_invocation.scope, segments, options(location), Context.new(ctx, lookup_invocation)) unless hash.include?(key)
|
48
|
+
return hash[key]
|
49
|
+
end
|
50
|
+
lookup_invocation.report_not_found(key)
|
51
|
+
throw :no_such_key
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require_relative 'function_provider'
|
2
|
+
require_relative 'interpolation'
|
3
|
+
|
4
|
+
module Puppet::Pops
|
5
|
+
module Lookup
|
6
|
+
# @api private
|
7
|
+
class DataHashFunctionProvider < FunctionProvider
|
8
|
+
include SubLookup
|
9
|
+
include Interpolation
|
10
|
+
|
11
|
+
TAG = 'data_hash'.freeze
|
12
|
+
|
13
|
+
# Performs a lookup with the assumption that a recursive check has been made.
|
14
|
+
#
|
15
|
+
# @param key [LookupKey] The key to lookup
|
16
|
+
# @param lookup_invocation [Invocation] The current lookup invocation
|
17
|
+
# @param merge [MergeStrategy,String,Hash{String => Object},nil] Merge strategy, merge strategy name, strategy and options hash, or nil (implies "first found")
|
18
|
+
# @return [Object] the found object
|
19
|
+
# @throw :no_such_key when the object is not found
|
20
|
+
def unchecked_key_lookup(key, lookup_invocation, merge)
|
21
|
+
root_key = key.root_key
|
22
|
+
lookup_invocation.with(:data_provider, self) do
|
23
|
+
MergeStrategy.strategy(merge).lookup(locations, lookup_invocation) do |location|
|
24
|
+
invoke_with_location(lookup_invocation, location, root_key)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def invoke_with_location(lookup_invocation, location, root_key)
|
32
|
+
if location.nil?
|
33
|
+
lookup_key(lookup_invocation, nil, root_key)
|
34
|
+
else
|
35
|
+
lookup_invocation.with(:location, location) do
|
36
|
+
if location.exist?
|
37
|
+
lookup_key(lookup_invocation, location.location, root_key)
|
38
|
+
else
|
39
|
+
lookup_invocation.report_location_not_found
|
40
|
+
throw :no_such_key
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def lookup_key(lookup_invocation, location, root_key)
|
47
|
+
lookup_invocation.report_found(root_key, data_value(lookup_invocation, location, root_key))
|
48
|
+
end
|
49
|
+
|
50
|
+
def data_value(lookup_invocation, location, root_key)
|
51
|
+
hash = data_hash(lookup_invocation, location)
|
52
|
+
value = hash[root_key]
|
53
|
+
if value.nil? && !hash.include?(root_key)
|
54
|
+
lookup_invocation.report_not_found(root_key)
|
55
|
+
throw :no_such_key
|
56
|
+
end
|
57
|
+
interpolate(value, lookup_invocation, true)
|
58
|
+
end
|
59
|
+
|
60
|
+
def data_hash(lookup_invocation, location)
|
61
|
+
ctx = function_context(lookup_invocation, location)
|
62
|
+
ctx.data_hash ||= parent_data_provider.validate_data_hash(self, call_data_hash_function(ctx, lookup_invocation, location))
|
63
|
+
end
|
64
|
+
|
65
|
+
def call_data_hash_function(ctx, lookup_invocation, location)
|
66
|
+
ctx.function.call(lookup_invocation.scope, options(location), Context.new(ctx, lookup_invocation))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# @api private
|
71
|
+
class V3DataHashFunctionProvider < DataHashFunctionProvider
|
72
|
+
TAG = 'v3_data_hash'.freeze
|
73
|
+
|
74
|
+
def initialize(name, parent_data_provider, function_name, options, locations)
|
75
|
+
@datadir = options.delete(HieraConfig::KEY_DATADIR)
|
76
|
+
super
|
77
|
+
end
|
78
|
+
|
79
|
+
def unchecked_key_lookup(key, lookup_invocation, merge)
|
80
|
+
extra_paths = lookup_invocation.hiera_v3_location_overrides
|
81
|
+
if extra_paths.nil? || extra_paths.empty?
|
82
|
+
super
|
83
|
+
else
|
84
|
+
# Extra paths provided. Must be resolved and placed in front of known paths
|
85
|
+
paths = parent_data_provider.config(lookup_invocation).resolve_paths(@datadir, extra_paths, lookup_invocation, false, ".#{@name}")
|
86
|
+
all_locations = paths + locations
|
87
|
+
root_key = key.root_key
|
88
|
+
lookup_invocation.with(:data_provider, self) do
|
89
|
+
MergeStrategy.strategy(merge).lookup(all_locations, lookup_invocation) do |location|
|
90
|
+
invoke_with_location(lookup_invocation, location, root_key)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# TODO: API 5.0, remove this class
|
98
|
+
# @api private
|
99
|
+
class V4DataHashFunctionProvider < DataHashFunctionProvider
|
100
|
+
TAG = 'v4_data_hash'.freeze
|
101
|
+
|
102
|
+
def name
|
103
|
+
"deprecated API function \"#{function_name}\""
|
104
|
+
end
|
105
|
+
|
106
|
+
def call_data_hash_function(ctx, lookup_invocation, location)
|
107
|
+
ctx.function.call(lookup_invocation.scope)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|