puppet 4.8.2-x64-mingw32 → 4.9.0-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
|