puppet 4.10.12-x86-mingw32 → 5.0.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.
- data/CONTRIBUTING.md +32 -15
- data/Gemfile +31 -14
- data/MAINTAINERS +0 -5
- data/README.md +11 -11
- data/Rakefile +2 -1
- data/conf/auth.conf +21 -0
- data/conf/fileserver.conf +7 -12
- data/conf/hiera.yaml +11 -0
- data/ext/debian/puppet-common.install +0 -1
- data/ext/debian/puppet-common.manpages +0 -2
- data/ext/hiera/hiera.yaml +15 -0
- data/ext/logcheck/puppet +1 -1
- data/ext/project_data.yaml +4 -9
- data/ext/puppet-test +0 -24
- data/ext/rack/config.ru +2 -2
- data/ext/redhat/puppet.spec.erb +0 -3
- data/ext/windows/service/daemon.rb +8 -14
- data/install.rb +1 -1
- data/lib/hiera/puppet_function.rb +1 -1
- data/lib/puppet.rb +7 -5
- data/lib/puppet/agent.rb +29 -38
- data/lib/puppet/agent/disabler.rb +3 -3
- data/lib/puppet/agent/locker.rb +3 -3
- data/lib/puppet/application.rb +12 -29
- data/lib/puppet/application/agent.rb +20 -18
- data/lib/puppet/application/apply.rb +22 -18
- data/lib/puppet/application/cert.rb +2 -7
- data/lib/puppet/application/config.rb +0 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +94 -76
- data/lib/puppet/application/doc.rb +6 -6
- data/lib/puppet/application/face_base.rb +8 -13
- data/lib/puppet/application/filebucket.rb +12 -29
- data/lib/puppet/application/help.rb +0 -1
- data/lib/puppet/application/lookup.rb +106 -101
- data/lib/puppet/application/master.rb +14 -22
- data/lib/puppet/application/resource.rb +13 -10
- data/lib/puppet/application_support.rb +1 -6
- data/lib/puppet/configurer.rb +33 -45
- data/lib/puppet/configurer/downloader.rb +2 -2
- data/lib/puppet/configurer/fact_handler.rb +13 -4
- data/lib/puppet/context.rb +5 -5
- data/lib/puppet/context/trusted_information.rb +1 -1
- data/lib/puppet/defaults.rb +18 -131
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/external/pson/common.rb +4 -0
- data/lib/puppet/face/ca.rb +49 -42
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/catalog/select.rb +4 -4
- data/lib/puppet/face/certificate.rb +20 -20
- data/lib/puppet/face/config.rb +9 -22
- data/lib/puppet/face/epp.rb +59 -61
- data/lib/puppet/face/facts.rb +4 -4
- data/lib/puppet/face/generate.rb +8 -8
- data/lib/puppet/face/help.rb +7 -7
- data/lib/puppet/face/key.rb +2 -2
- data/lib/puppet/face/man.rb +5 -5
- data/lib/puppet/face/module.rb +2 -2
- data/lib/puppet/face/module/build.rb +7 -7
- data/lib/puppet/face/module/changes.rb +6 -6
- data/lib/puppet/face/module/generate.rb +24 -24
- data/lib/puppet/face/module/install.rb +13 -9
- data/lib/puppet/face/module/list.rb +16 -12
- data/lib/puppet/face/module/search.rb +4 -4
- data/lib/puppet/face/module/uninstall.rb +13 -10
- data/lib/puppet/face/module/upgrade.rb +11 -7
- data/lib/puppet/face/node.rb +5 -5
- data/lib/puppet/face/node/clean.rb +8 -8
- data/lib/puppet/face/parser.rb +16 -16
- data/lib/puppet/face/plugin.rb +6 -6
- data/lib/puppet/face/report.rb +9 -9
- data/lib/puppet/face/resource.rb +12 -12
- data/lib/puppet/face/status.rb +4 -4
- data/lib/puppet/feature/base.rb +3 -2
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +9 -9
- data/lib/puppet/file_bucket/file.rb +4 -17
- data/lib/puppet/file_serving/base.rb +3 -3
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/configuration/parser.rb +12 -12
- data/lib/puppet/file_serving/content.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +7 -5
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +7 -7
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/modules.rb +1 -1
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +6 -6
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/file_system/windows.rb +3 -3
- data/lib/puppet/forge.rb +8 -14
- data/lib/puppet/forge/errors.rb +12 -12
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/functions.rb +17 -45
- data/lib/puppet/functions/annotate.rb +108 -0
- data/lib/puppet/functions/binary_file.rb +1 -1
- data/lib/puppet/functions/call.rb +42 -0
- data/lib/puppet/functions/defined.rb +4 -4
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/each.rb +4 -10
- data/lib/puppet/functions/epp.rb +0 -3
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +2 -2
- data/lib/puppet/functions/json_data.rb +1 -1
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/map.rb +3 -13
- data/lib/puppet/functions/match.rb +2 -2
- data/lib/puppet/functions/reduce.rb +0 -31
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/slice.rb +3 -3
- data/lib/puppet/functions/strftime.rb +10 -2
- data/lib/puppet/functions/unique.rb +132 -0
- data/lib/puppet/generate/models/type/property.rb +1 -1
- data/lib/puppet/generate/type.rb +12 -12
- data/lib/puppet/graph/relationship_graph.rb +4 -7
- data/lib/puppet/graph/simple_graph.rb +45 -66
- data/lib/puppet/indirector.rb +2 -2
- data/lib/puppet/indirector/catalog/compiler.rb +58 -44
- data/lib/puppet/indirector/catalog/json.rb +18 -0
- data/lib/puppet/indirector/certificate/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_request/ca.rb +3 -3
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_status/file.rb +6 -6
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +18 -18
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -9
- data/lib/puppet/indirector/file_metadata/http.rb +1 -1
- data/lib/puppet/indirector/file_server.rb +10 -2
- data/lib/puppet/indirector/hiera.rb +5 -3
- data/lib/puppet/indirector/indirection.rb +16 -18
- data/lib/puppet/indirector/json.rb +11 -12
- data/lib/puppet/indirector/key/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/key/file.rb +2 -2
- data/lib/puppet/indirector/ldap.rb +6 -5
- data/lib/puppet/indirector/memory.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +8 -7
- data/lib/puppet/indirector/node/exec.rb +8 -6
- data/lib/puppet/indirector/node/ldap.rb +9 -7
- data/lib/puppet/indirector/node/plain.rb +2 -1
- data/lib/puppet/indirector/node/write_only_yaml.rb +6 -1
- data/lib/puppet/indirector/node/yaml.rb +0 -9
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +13 -0
- data/lib/puppet/indirector/request.rb +11 -23
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/indirector/rest.rb +28 -10
- data/lib/puppet/indirector/ssl_file.rb +9 -9
- data/lib/puppet/indirector/terminus.rb +3 -3
- data/lib/puppet/indirector/yaml.rb +5 -5
- data/lib/puppet/info_service/class_information_service.rb +4 -5
- data/lib/puppet/interface.rb +2 -7
- data/lib/puppet/interface/face_collection.rb +6 -1
- data/lib/puppet/module.rb +10 -35
- data/lib/puppet/module_tool.rb +7 -3
- data/lib/puppet/module_tool/applications/application.rb +8 -9
- data/lib/puppet/module_tool/applications/builder.rb +5 -6
- data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
- data/lib/puppet/module_tool/applications/installer.rb +11 -10
- data/lib/puppet/module_tool/applications/searcher.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +2 -1
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -3
- data/lib/puppet/module_tool/applications/upgrader.rb +10 -9
- data/lib/puppet/module_tool/contents_description.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +0 -1
- data/lib/puppet/module_tool/errors/installer.rb +22 -22
- data/lib/puppet/module_tool/errors/shared.rb +44 -42
- data/lib/puppet/module_tool/errors/uninstaller.rb +13 -9
- data/lib/puppet/module_tool/errors/upgrader.rb +11 -11
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/installed_modules.rb +3 -3
- data/lib/puppet/module_tool/local_tarball.rb +4 -4
- data/lib/puppet/module_tool/metadata.rb +16 -13
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +10 -4
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +2 -2
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool/tar/mini.rb +4 -57
- data/lib/puppet/network/auth_config_parser.rb +12 -11
- data/lib/puppet/network/authconfig.rb +2 -2
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/format.rb +7 -7
- data/lib/puppet/network/format_handler.rb +12 -9
- data/lib/puppet/network/format_support.rb +11 -5
- data/lib/puppet/network/formats.rb +38 -27
- data/lib/puppet/network/http/api/indirected_routes.rb +72 -33
- data/lib/puppet/network/http/api/master/v3/environment.rb +33 -14
- data/lib/puppet/network/http/compression.rb +10 -7
- data/lib/puppet/network/http/connection.rb +19 -23
- data/lib/puppet/network/http/error.rb +14 -10
- data/lib/puppet/network/http/factory.rb +0 -12
- data/lib/puppet/network/http/handler.rb +8 -4
- data/lib/puppet/network/http/issues.rb +1 -0
- data/lib/puppet/network/http/pool.rb +1 -1
- data/lib/puppet/network/http/rack.rb +2 -2
- data/lib/puppet/network/http/rack/rest.rb +1 -1
- data/lib/puppet/network/http/request.rb +34 -20
- data/lib/puppet/network/http/response.rb +13 -1
- data/lib/puppet/network/http/webrick.rb +8 -6
- data/lib/puppet/network/http/webrick/rest.rb +2 -2
- data/lib/puppet/network/rights.rb +6 -6
- data/lib/puppet/network/server.rb +2 -2
- data/lib/puppet/node.rb +25 -23
- data/lib/puppet/node/environment.rb +21 -4
- data/lib/puppet/node/facts.rb +0 -14
- data/lib/puppet/parameter.rb +3 -28
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +3 -3
- data/lib/puppet/parameter/value_collection.rb +4 -4
- data/lib/puppet/parser/ast/leaf.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -3
- data/lib/puppet/parser/ast/resource.rb +1 -1
- data/lib/puppet/parser/ast/resource_instance.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler.rb +44 -117
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -2
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +6 -9
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +1 -1
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -2
- data/lib/puppet/parser/environment_compiler.rb +13 -15
- data/lib/puppet/parser/functions.rb +6 -6
- data/lib/puppet/parser/functions/assert_type.rb +1 -1
- data/lib/puppet/parser/functions/binary_file.rb +1 -1
- data/lib/puppet/parser/functions/break.rb +1 -1
- data/lib/puppet/parser/functions/contain.rb +1 -1
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/defined.rb +1 -1
- data/lib/puppet/parser/functions/dig.rb +1 -1
- data/lib/puppet/parser/functions/each.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +1 -4
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/find_file.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +5 -4
- data/lib/puppet/parser/functions/hiera_include.rb +1 -1
- data/lib/puppet/parser/functions/include.rb +2 -1
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lest.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -1
- data/lib/puppet/parser/functions/new.rb +45 -30
- data/lib/puppet/parser/functions/next.rb +1 -1
- data/lib/puppet/parser/functions/reduce.rb +1 -1
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/return.rb +2 -23
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/functions/sprintf.rb +3 -17
- data/lib/puppet/parser/functions/step.rb +1 -1
- data/lib/puppet/parser/functions/strftime.rb +1 -1
- data/lib/puppet/parser/functions/then.rb +1 -1
- data/lib/puppet/parser/functions/type.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +0 -30
- data/lib/puppet/parser/relationship.rb +49 -20
- data/lib/puppet/parser/resource.rb +31 -30
- data/lib/puppet/parser/resource/param.rb +0 -3
- data/lib/puppet/parser/scope.rb +122 -168
- data/lib/puppet/parser/templatewrapper.rb +2 -2
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +15 -67
- data/lib/puppet/plugins/syntax_checkers.rb +6 -11
- data/lib/puppet/pops.rb +7 -37
- data/lib/puppet/pops/adaptable.rb +8 -3
- data/lib/puppet/pops/adapters.rb +23 -83
- data/lib/puppet/pops/evaluator/access_operator.rb +10 -39
- data/lib/puppet/pops/evaluator/collector_transformer.rb +7 -12
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +7 -7
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +46 -38
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -9
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -2
- data/lib/puppet/pops/evaluator/puppet_proc.rb +1 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +26 -9
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +17 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +13 -30
- data/lib/puppet/pops/functions/dispatch.rb +1 -6
- data/lib/puppet/pops/issues.rb +182 -162
- data/lib/puppet/pops/loader/base_loader.rb +2 -2
- data/lib/puppet/pops/loader/gem_support.rb +2 -2
- data/lib/puppet/pops/loader/module_loaders.rb +59 -8
- data/lib/puppet/pops/loader/predefined_loader.rb +1 -6
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +8 -8
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -10
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +3 -3
- data/lib/puppet/pops/loader/static_loader.rb +33 -64
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +7 -7
- data/lib/puppet/pops/loader/typed_name.rb +5 -0
- data/lib/puppet/pops/loaders.rb +15 -5
- data/lib/puppet/pops/lookup.rb +4 -2
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/data_provider.rb +3 -18
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +12 -35
- data/lib/puppet/pops/lookup/interpolation.rb +1 -0
- data/lib/puppet/pops/lookup/invocation.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +20 -64
- data/lib/puppet/pops/lookup/lookup_key.rb +1 -1
- data/lib/puppet/pops/lookup/module_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/sub_lookup.rb +2 -1
- data/lib/puppet/pops/merge_strategy.rb +1 -1
- data/lib/puppet/pops/model/ast.pp +692 -0
- data/lib/puppet/pops/model/ast.rb +4833 -0
- data/lib/puppet/pops/model/ast_transformer.rb +9 -10
- data/lib/puppet/pops/model/factory.rb +454 -527
- data/lib/puppet/pops/model/model_label_provider.rb +3 -2
- data/lib/puppet/pops/model/model_tree_dumper.rb +9 -8
- data/lib/puppet/pops/parser/egrammar.ra +66 -60
- data/lib/puppet/pops/parser/eparser.rb +1483 -1578
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -5
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/lexer2.rb +7 -33
- data/lib/puppet/pops/parser/locator.rb +39 -16
- data/lib/puppet/pops/parser/parser_support.rb +25 -29
- data/lib/puppet/pops/patterns.rb +1 -2
- data/lib/puppet/pops/pcore.rb +26 -19
- data/lib/puppet/pops/resource/param.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -2
- data/lib/puppet/pops/serialization.rb +25 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +9 -1
- data/lib/puppet/pops/serialization/deserializer.rb +1 -1
- data/lib/puppet/pops/serialization/from_data_converter.rb +181 -0
- data/lib/puppet/pops/serialization/json.rb +4 -4
- data/lib/puppet/pops/serialization/json_path.rb +126 -0
- data/lib/puppet/pops/serialization/object.rb +5 -5
- data/lib/puppet/pops/serialization/serializer.rb +23 -9
- data/lib/puppet/pops/serialization/to_data_converter.rb +292 -0
- data/lib/puppet/pops/time/timespan.rb +11 -11
- data/lib/puppet/pops/time/timestamp.rb +8 -8
- data/lib/puppet/pops/types/annotatable.rb +7 -7
- data/lib/puppet/pops/types/annotation.rb +71 -0
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/enumeration.rb +2 -2
- data/lib/puppet/pops/types/iterable.rb +2 -4
- data/lib/puppet/pops/types/p_binary_type.rb +7 -1
- data/lib/puppet/pops/types/p_meta_type.rb +16 -12
- data/lib/puppet/pops/types/p_object_type.rb +135 -96
- data/lib/puppet/pops/types/p_runtime_type.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +6 -2
- data/lib/puppet/pops/types/p_timespan_type.rb +55 -4
- data/lib/puppet/pops/types/p_type_set_type.rb +42 -34
- data/lib/puppet/pops/types/puppet_object.rb +13 -3
- data/lib/puppet/pops/types/ruby_generator.rb +291 -127
- data/lib/puppet/pops/types/ruby_method.rb +31 -0
- data/lib/puppet/pops/types/string_converter.rb +107 -30
- data/lib/puppet/pops/types/type_calculator.rb +56 -94
- data/lib/puppet/pops/types/type_factory.rb +34 -6
- data/lib/puppet/pops/types/type_formatter.rb +64 -16
- data/lib/puppet/pops/types/type_mismatch_describer.rb +13 -22
- data/lib/puppet/pops/types/type_parser.rb +28 -13
- data/lib/puppet/pops/types/type_set_reference.rb +6 -6
- data/lib/puppet/pops/types/types.rb +169 -245
- data/lib/puppet/pops/utils.rb +0 -24
- data/lib/puppet/pops/validation.rb +3 -9
- data/lib/puppet/pops/validation/checker4_0.rb +86 -76
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
- data/lib/puppet/pops/visitor.rb +21 -0
- data/lib/puppet/property.rb +17 -14
- data/lib/puppet/property/ensure.rb +3 -3
- data/lib/puppet/property/list.rb +1 -10
- data/lib/puppet/provider.rb +2 -0
- data/lib/puppet/provider/aixobject.rb +7 -7
- data/lib/puppet/provider/augeas/augeas.rb +37 -37
- data/lib/puppet/provider/command.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +2 -2
- data/lib/puppet/provider/exec.rb +4 -4
- data/lib/puppet/provider/exec/posix.rb +4 -4
- data/lib/puppet/provider/exec/windows.rb +3 -3
- data/lib/puppet/provider/file/posix.rb +5 -5
- data/lib/puppet/provider/file/windows.rb +4 -4
- data/lib/puppet/provider/group/aix.rb +2 -2
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +7 -4
- data/lib/puppet/provider/host/parsed.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +9 -9
- data/lib/puppet/provider/maillist/mailman.rb +2 -2
- data/lib/puppet/provider/mcx/mcxcontent.rb +3 -3
- data/lib/puppet/provider/mount.rb +2 -1
- data/lib/puppet/provider/mount/parsed.rb +10 -8
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +8 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
- data/lib/puppet/provider/network_device.rb +2 -1
- data/lib/puppet/provider/package/aix.rb +6 -6
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +4 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/aptrpm.rb +2 -2
- data/lib/puppet/provider/package/blastwave.rb +4 -4
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +3 -3
- data/lib/puppet/provider/package/fink.rb +3 -3
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +6 -6
- data/lib/puppet/provider/package/hpux.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +15 -12
- data/lib/puppet/provider/package/openbsd.rb +4 -4
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +9 -9
- data/lib/puppet/provider/package/pkg.rb +9 -9
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +3 -3
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +6 -6
- data/lib/puppet/provider/package/portage.rb +167 -59
- data/lib/puppet/provider/package/ports.rb +3 -3
- data/lib/puppet/provider/package/portupgrade.rb +4 -4
- data/lib/puppet/provider/package/rpm.rb +7 -4
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/sun.rb +3 -2
- data/lib/puppet/provider/package/up2date.rb +1 -1
- data/lib/puppet/provider/package/urpmi.rb +1 -1
- data/lib/puppet/provider/package/windows.rb +4 -4
- data/lib/puppet/provider/package/windows/package.rb +3 -3
- data/lib/puppet/provider/package/yum.rb +5 -6
- data/lib/puppet/provider/package/zypper.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/service/base.rb +8 -21
- data/lib/puppet/provider/service/smf.rb +2 -2
- data/lib/puppet/provider/service/systemd.rb +1 -2
- data/lib/puppet/provider/service/upstart.rb +1 -3
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +3 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -5
- data/lib/puppet/reference/configuration.rb +0 -2
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +6 -6
- data/lib/puppet/reference/type.rb +2 -2
- data/lib/puppet/relationship.rb +7 -9
- data/lib/puppet/reports/http.rb +8 -6
- data/lib/puppet/resource.rb +75 -134
- data/lib/puppet/resource/capability_finder.rb +1 -1
- data/lib/puppet/resource/catalog.rb +26 -34
- data/lib/puppet/resource/status.rb +13 -24
- data/lib/puppet/resource/type.rb +13 -61
- data/lib/puppet/resource/type_collection.rb +29 -23
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/array_setting.rb +1 -1
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/boolean_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -2
- data/lib/puppet/settings/duration_setting.rb +1 -1
- data/lib/puppet/settings/enum_setting.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +2 -10
- data/lib/puppet/settings/file_setting.rb +2 -2
- data/lib/puppet/settings/priority_setting.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +1 -1
- data/lib/puppet/settings/symbolic_enum_setting.rb +1 -1
- data/lib/puppet/settings/terminus_setting.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/ssl/base.rb +2 -2
- data/lib/puppet/ssl/certificate_authority.rb +21 -21
- data/lib/puppet/ssl/certificate_authority/interface.rb +13 -13
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +14 -14
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/certificate_revocation_list.rb +3 -3
- data/lib/puppet/ssl/host.rb +29 -29
- data/lib/puppet/ssl/inventory.rb +1 -1
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/oids.rb +5 -5
- data/lib/puppet/ssl/validator/default_validator.rb +3 -4
- data/lib/puppet/syntax_checkers/base64.rb +7 -7
- data/lib/puppet/syntax_checkers/json.rb +5 -5
- data/lib/puppet/test/test_helper.rb +0 -4
- data/lib/puppet/transaction.rb +38 -23
- data/lib/puppet/transaction/additional_resource_generator.rb +4 -3
- data/lib/puppet/transaction/event.rb +19 -8
- data/lib/puppet/transaction/event_manager.rb +6 -6
- data/lib/puppet/transaction/persistence.rb +6 -6
- data/lib/puppet/transaction/report.rb +34 -47
- data/lib/puppet/transaction/resource_harness.rb +14 -12
- data/lib/puppet/type.rb +9 -7
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +14 -31
- data/lib/puppet/type/exec.rb +16 -16
- data/lib/puppet/type/file.rb +21 -22
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/group.rb +3 -3
- data/lib/puppet/type/file/mode.rb +6 -6
- data/lib/puppet/type/file/owner.rb +3 -3
- data/lib/puppet/type/file/selcontext.rb +18 -1
- data/lib/puppet/type/file/source.rb +5 -1
- data/lib/puppet/type/filebucket.rb +3 -8
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/host.rb +6 -6
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/mailalias.rb +2 -18
- data/lib/puppet/type/maillist.rb +1 -1
- data/lib/puppet/type/mount.rb +8 -8
- data/lib/puppet/type/notify.rb +2 -0
- data/lib/puppet/type/package.rb +5 -5
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/scheduled_task.rb +9 -8
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +3 -19
- data/lib/puppet/type/sshkey.rb +4 -4
- data/lib/puppet/type/tidy.rb +16 -19
- data/lib/puppet/type/user.rb +35 -70
- data/lib/puppet/type/yumrepo.rb +8 -8
- data/lib/puppet/type/zone.rb +7 -7
- data/lib/puppet/type/zpool.rb +3 -3
- data/lib/puppet/util.rb +16 -12
- data/lib/puppet/util/at_fork.rb +35 -0
- data/lib/puppet/util/at_fork/noop.rb +18 -0
- data/lib/puppet/util/at_fork/solaris.rb +158 -0
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +6 -6
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/command_line.rb +4 -4
- data/lib/puppet/util/command_line/puppet_option_parser.rb +3 -3
- data/lib/puppet/util/command_line/trollop.rb +31 -31
- data/lib/puppet/util/diff.rb +1 -1
- data/lib/puppet/util/errors.rb +4 -4
- data/lib/puppet/util/execution.rb +9 -9
- data/lib/puppet/util/feature.rb +5 -5
- data/lib/puppet/util/fileparsing.rb +8 -8
- data/lib/puppet/util/filetype.rb +15 -15
- data/lib/puppet/util/http_proxy.rb +7 -15
- data/lib/puppet/util/inifile.rb +4 -4
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/json_lockfile.rb +4 -4
- data/lib/puppet/util/ldap/connection.rb +2 -2
- data/lib/puppet/util/ldap/manager.rb +2 -2
- data/lib/puppet/util/limits.rb +1 -1
- data/lib/puppet/util/log.rb +23 -16
- data/lib/puppet/util/log/destinations.rb +10 -16
- data/lib/puppet/util/logging.rb +11 -8
- data/lib/puppet/util/metric.rb +9 -6
- data/lib/puppet/util/monkey_patches.rb +27 -66
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/device.rb +7 -7
- data/lib/puppet/util/network_device/cisco/interface.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +6 -6
- data/lib/puppet/util/network_device/transport/ssh.rb +6 -6
- data/lib/puppet/util/plist.rb +4 -2
- data/lib/puppet/util/posix.rb +5 -5
- data/lib/puppet/util/profiler/wall_clock.rb +1 -1
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/psych_support.rb +3 -11
- data/lib/puppet/util/rdoc.rb +4 -4
- data/lib/puppet/util/reference.rb +14 -7
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/retry_action.rb +2 -2
- data/lib/puppet/util/selinux.rb +54 -12
- data/lib/puppet/util/splayer.rb +1 -1
- data/lib/puppet/util/storage.rb +5 -5
- data/lib/puppet/util/suidmanager.rb +4 -4
- data/lib/puppet/util/symbolic_file_mode.rb +9 -9
- data/lib/puppet/util/tag_set.rb +1 -4
- data/lib/puppet/util/tagging.rb +2 -2
- data/lib/puppet/util/windows.rb +2 -0
- data/lib/puppet/util/windows/adsi.rb +19 -16
- data/lib/puppet/util/windows/api_types.rb +7 -11
- data/lib/puppet/util/windows/com.rb +4 -4
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/eventlog.rb +192 -0
- data/lib/puppet/util/windows/file.rb +13 -96
- data/lib/puppet/util/windows/principal.rb +6 -7
- data/lib/puppet/util/windows/process.rb +6 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/root_certs.rb +1 -1
- data/lib/puppet/util/windows/security.rb +14 -14
- data/lib/puppet/util/windows/sid.rb +13 -66
- data/lib/puppet/util/windows/taskscheduler.rb +62 -62
- data/lib/puppet/util/windows/user.rb +6 -6
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +2 -10
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +1 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +122 -114
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +678 -342
- data/lib/puppet/vendor/semantic_puppet/{lib/semantic_puppet/locales → locales}/config.yaml +0 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/config.yaml +1 -1
- data/locales/puppet.pot +7847 -112
- data/man/man5/puppet.conf.5 +55 -296
- data/man/man8/puppet-agent.8 +10 -32
- data/man/man8/puppet-apply.8 +6 -21
- data/man/man8/puppet-ca.8 +34 -48
- data/man/man8/puppet-catalog.8 +4 -4
- data/man/man8/puppet-cert.8 +6 -23
- data/man/man8/puppet-certificate.8 +28 -44
- data/man/man8/puppet-certificate_request.8 +4 -4
- data/man/man8/puppet-certificate_revocation_list.8 +4 -4
- data/man/man8/puppet-config.8 +5 -5
- data/man/man8/puppet-describe.8 +3 -3
- data/man/man8/puppet-device.8 +13 -23
- data/man/man8/puppet-doc.8 +5 -5
- data/man/man8/puppet-epp.8 +10 -16
- data/man/man8/puppet-facts.8 +4 -4
- data/man/man8/puppet-filebucket.8 +6 -63
- data/man/man8/puppet-help.8 +4 -4
- data/man/man8/puppet-inspect.8 +5 -8
- data/man/man8/puppet-key.8 +4 -4
- data/man/man8/puppet-man.8 +5 -5
- data/man/man8/puppet-master.8 +5 -5
- data/man/man8/puppet-module.8 +13 -22
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +4 -4
- data/man/man8/puppet-plugin.8 +4 -4
- data/man/man8/puppet-report.8 +4 -4
- data/man/man8/puppet-resource.8 +8 -4
- data/man/man8/puppet-status.8 +5 -5
- data/man/man8/puppet.8 +3 -12
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +9 -0
- data/spec/integration/agent/logging_spec.rb +0 -2
- data/spec/integration/application/apply_spec.rb +19 -23
- data/spec/integration/application/lookup_spec.rb +0 -21
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +2 -2
- data/spec/integration/file_bucket/file_spec.rb +5 -20
- data/spec/integration/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/class_spec.rb +6 -6
- data/spec/integration/parser/compiler_spec.rb +184 -142
- data/spec/integration/parser/dynamic_scoping_spec.rb +0 -1
- data/spec/integration/parser/pcore_resource_spec.rb +1 -1
- data/spec/integration/parser/scope_spec.rb +53 -4
- data/spec/integration/provider/cron/crontab_spec.rb +0 -1
- data/spec/integration/resource/catalog_spec.rb +0 -4
- data/spec/integration/transaction/report_spec.rb +2 -2
- data/spec/integration/transaction_spec.rb +4 -37
- data/spec/integration/type/package_spec.rb +7 -1
- data/spec/integration/util/execution_spec.rb +0 -8
- data/spec/integration/util/windows/adsi_spec.rb +1 -86
- data/spec/integration/util/windows/principal_spec.rb +1 -10
- data/spec/integration/util/windows/process_spec.rb +0 -45
- data/spec/lib/matchers/json.rb +3 -3
- data/spec/lib/puppet/indirector_testing.rb +4 -0
- data/spec/lib/puppet_spec/compiler.rb +1 -1
- data/spec/lib/puppet_spec/modules.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +10 -6
- data/spec/shared_contexts/types_setup.rb +28 -9
- data/spec/spec_helper.rb +0 -11
- data/spec/unit/agent_spec.rb +12 -34
- data/spec/unit/application/agent_spec.rb +16 -0
- data/spec/unit/application/apply_spec.rb +37 -13
- data/spec/unit/application/cert_spec.rb +1 -40
- data/spec/unit/application/config_spec.rb +0 -4
- data/spec/unit/application/describe_spec.rb +19 -0
- data/spec/unit/application/device_spec.rb +41 -2
- data/spec/unit/application/face_base_spec.rb +6 -6
- data/spec/unit/application/lookup_spec.rb +1 -31
- data/spec/unit/application/master_spec.rb +22 -6
- data/spec/unit/application/resource_spec.rb +17 -0
- data/spec/unit/application_spec.rb +0 -24
- data/spec/unit/capability_spec.rb +2 -6
- data/spec/unit/configurer/fact_handler_spec.rb +74 -41
- data/spec/unit/configurer/plugin_handler_spec.rb +13 -19
- data/spec/unit/configurer_spec.rb +36 -33
- data/spec/unit/defaults_spec.rb +0 -44
- data/spec/unit/environments_spec.rb +0 -15
- data/spec/unit/face/config_spec.rb +2 -1
- data/spec/unit/face/epp_face_spec.rb +0 -9
- data/spec/unit/face/module/list_spec.rb +60 -0
- data/spec/unit/file_bucket/file_spec.rb +3 -3
- data/spec/unit/file_serving/http_metadata_spec.rb +1 -1
- data/spec/unit/file_serving/metadata_spec.rb +14 -9
- data/spec/unit/forge/forge_spec.rb +2 -2
- data/spec/unit/forge_spec.rb +0 -105
- data/spec/unit/functions/annotate_spec.rb +175 -0
- data/spec/unit/functions/break_spec.rb +52 -83
- data/spec/unit/functions/call_spec.rb +77 -0
- data/spec/unit/functions/contain_spec.rb +1 -1
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +0 -10
- data/spec/unit/functions/hiera_spec.rb +0 -5
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -6
- data/spec/unit/functions/lookup_spec.rb +4 -97
- data/spec/unit/functions/new_spec.rb +1 -1
- data/spec/unit/functions/unique_spec.rb +111 -0
- data/spec/unit/functions4_spec.rb +2 -43
- data/spec/unit/graph/relationship_graph_spec.rb +0 -15
- data/spec/unit/graph/simple_graph_spec.rb +58 -55
- data/spec/unit/indirector/catalog/compiler_spec.rb +206 -174
- data/spec/unit/indirector/catalog/json_spec.rb +50 -1
- data/spec/unit/indirector/facts/facter_spec.rb +1 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
- data/spec/unit/indirector/file_server_spec.rb +17 -2
- data/spec/unit/indirector/indirection_spec.rb +3 -60
- data/spec/unit/indirector/json_spec.rb +27 -6
- data/spec/unit/indirector/node/exec_spec.rb +12 -12
- data/spec/unit/indirector/node/ldap_spec.rb +29 -8
- data/spec/unit/indirector/node/plain_spec.rb +16 -6
- data/spec/unit/indirector/node/write_only_yaml_spec.rb +12 -0
- data/spec/unit/indirector/report/processor_spec.rb +2 -2
- data/spec/unit/indirector/report/rest_spec.rb +29 -3
- data/spec/unit/indirector/request_spec.rb +0 -45
- data/spec/unit/indirector/rest_spec.rb +57 -15
- data/spec/unit/interface/face_collection_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +0 -12
- data/spec/unit/module_spec.rb +10 -31
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -1
- data/spec/unit/module_tool/tar/mini_spec.rb +5 -34
- data/spec/unit/network/format_handler_spec.rb +11 -11
- data/spec/unit/network/format_spec.rb +9 -0
- data/spec/unit/network/formats_spec.rb +322 -138
- data/spec/unit/network/http/api/indirected_routes_spec.rb +62 -52
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +128 -2
- data/spec/unit/network/http/api/master/v3_spec.rb +1 -1
- data/spec/unit/network/http/api_spec.rb +1 -1
- data/spec/unit/network/http/compression_spec.rb +105 -88
- data/spec/unit/network/http/error_spec.rb +1 -2
- data/spec/unit/network/http/factory_spec.rb +9 -38
- data/spec/unit/network/http/handler_spec.rb +8 -12
- data/spec/unit/network/http/request_spec.rb +110 -0
- data/spec/unit/network/http/response_spec.rb +108 -0
- data/spec/unit/network/http/webrick_spec.rb +29 -30
- data/spec/unit/node/facts_spec.rb +13 -13
- data/spec/unit/node_spec.rb +33 -10
- data/spec/unit/parameter_spec.rb +73 -5
- data/spec/unit/parser/ast/leaf_spec.rb +4 -3
- data/spec/unit/parser/compiler_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +0 -2
- data/spec/unit/parser/functions/sprintf_spec.rb +0 -26
- data/spec/unit/parser/resource_spec.rb +86 -24
- data/spec/unit/parser/scope_spec.rb +4 -81
- data/spec/unit/pops/benchmark_spec.rb +8 -26
- data/spec/unit/pops/containment_spec.rb +0 -26
- data/spec/unit/pops/evaluator/access_ops_spec.rb +103 -103
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +59 -6
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +5 -5
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +26 -26
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -7
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +7 -7
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +36 -1
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +10 -10
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
- data/spec/unit/pops/factory_rspec_helper.rb +0 -4
- data/spec/unit/pops/factory_spec.rb +83 -83
- data/spec/unit/pops/loaders/loaders_spec.rb +69 -1
- data/spec/unit/pops/loaders/static_loader_spec.rb +3 -7
- data/spec/unit/pops/model/model_spec.rb +10 -10
- data/spec/unit/pops/parser/epp_parser_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +4 -59
- data/spec/unit/pops/parser/{source_pos_adapter_spec.rb → locator_spec.rb} +9 -11
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -4
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -3
- data/spec/unit/pops/parser/parse_containers_spec.rb +17 -19
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -3
- data/spec/unit/pops/parser/parser_spec.rb +8 -10
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -3
- data/spec/unit/pops/serialization/serialization_spec.rb +87 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +494 -0
- data/spec/unit/pops/time/timestamp_spec.rb +13 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +99 -13
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +8 -8
- data/spec/unit/pops/types/p_type_set_type_spec.rb +1 -9
- data/spec/unit/pops/types/ruby_generator_spec.rb +57 -20
- data/spec/unit/pops/types/string_converter_spec.rb +78 -30
- data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +207 -123
- data/spec/unit/pops/types/type_factory_spec.rb +9 -9
- data/spec/unit/pops/types/type_formatter_spec.rb +32 -19
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +6 -6
- data/spec/unit/pops/types/types_spec.rb +42 -2
- data/spec/unit/pops/validator/validator_spec.rb +25 -86
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property/list_spec.rb +2 -2
- data/spec/unit/provider/augeas/augeas_spec.rb +1 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +22 -79
- data/spec/unit/provider/package/aix_spec.rb +0 -8
- data/spec/unit/provider/package/portage_spec.rb +103 -17
- data/spec/unit/provider/package/rpm_spec.rb +14 -1
- data/spec/unit/provider/package/yum_spec.rb +0 -10
- data/spec/unit/provider/service/base_spec.rb +0 -20
- data/spec/unit/provider/service/smf_spec.rb +4 -2
- data/spec/unit/provider/service/systemd_spec.rb +1 -15
- data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/zfs/zfs_spec.rb +1 -7
- data/spec/unit/puppet_spec.rb +2 -3
- data/spec/unit/relationship_spec.rb +15 -36
- data/spec/unit/reports/http_spec.rb +11 -8
- data/spec/unit/resource/catalog_spec.rb +47 -49
- data/spec/unit/resource/status_spec.rb +114 -103
- data/spec/unit/resource/type_collection_spec.rb +5 -5
- data/spec/unit/resource/type_spec.rb +4 -71
- data/spec/unit/resource_spec.rb +30 -34
- data/spec/unit/settings_spec.rb +4 -2
- data/spec/unit/ssl/host_spec.rb +34 -34
- data/spec/unit/status_spec.rb +7 -7
- data/spec/unit/transaction/event_spec.rb +18 -15
- data/spec/unit/transaction/report_spec.rb +100 -81
- data/spec/unit/transaction/resource_harness_spec.rb +3 -3
- data/spec/unit/transaction_spec.rb +53 -8
- data/spec/unit/type/file/group_spec.rb +2 -2
- data/spec/unit/type/file/mode_spec.rb +9 -9
- data/spec/unit/type/file/owner_spec.rb +2 -2
- data/spec/unit/type/file/selinux_spec.rb +2 -0
- data/spec/unit/type/file/source_spec.rb +13 -0
- data/spec/unit/type/nagios_spec.rb +1 -21
- data/spec/unit/type/ssh_authorized_key_spec.rb +2 -2
- data/spec/unit/type/tidy_spec.rb +0 -14
- data/spec/unit/type/user_spec.rb +2 -4
- data/spec/unit/util/at_fork_spec.rb +150 -0
- data/spec/unit/util/execution_spec.rb +31 -2
- data/spec/unit/util/http_proxy_spec.rb +0 -37
- data/spec/unit/util/log/destinations_spec.rb +5 -6
- data/spec/unit/util/log_spec.rb +62 -17
- data/spec/unit/util/metric_spec.rb +9 -2
- data/spec/unit/util/monkey_patches_spec.rb +6 -188
- data/spec/unit/util/run_mode_spec.rb +17 -10
- data/spec/unit/util/tag_set_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +55 -0
- data/spec/unit/util/windows/adsi_spec.rb +27 -31
- data/spec/unit/util/windows/api_types_spec.rb +0 -51
- data/spec/unit/util/windows/eventlog_spec.rb +123 -0
- data/spec/unit/util/windows/sid_spec.rb +15 -86
- data/spec/unit/util_spec.rb +7 -1
- data/tasks/benchmark.rake +3 -3
- data/tasks/cfpropertylist.rake +1 -1
- data/tasks/generate_ast_model.rake +78 -0
- data/tasks/manpages.rake +1 -1
- data/tasks/parallel.rake +7 -12
- metadata +3456 -3717
- checksums.yaml +0 -7
- data/bin/extlookup2hiera +0 -56
- data/ext/emacs/puppet-mode-init.el +0 -6
- data/ext/emacs/puppet-mode.el +0 -433
- data/ext/vim/README +0 -3
- data/ext/vim/ftdetect/puppet.vim +0 -2
- data/ext/vim/ftplugin/puppet.vim +0 -94
- data/ext/vim/indent/puppet.vim +0 -76
- data/ext/vim/syntax/puppet.vim +0 -115
- data/lib/puppet/application/file.rb +0 -4
- data/lib/puppet/application/inspect.rb +0 -184
- data/lib/puppet/application/resource_type.rb +0 -7
- data/lib/puppet/data_providers.rb +0 -34
- data/lib/puppet/data_providers/data_adapter.rb +0 -37
- data/lib/puppet/data_providers/data_function_support.rb +0 -32
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -26
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -24
- data/lib/puppet/data_providers/hiera_config.rb +0 -151
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +0 -25
- data/lib/puppet/data_providers/hiera_interpolate.rb +0 -21
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +0 -30
- data/lib/puppet/data_providers/hiera_support.rb +0 -42
- data/lib/puppet/data_providers/json_data_provider_factory.rb +0 -38
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +0 -40
- data/lib/puppet/face/file.rb +0 -50
- data/lib/puppet/face/file/download.rb +0 -56
- data/lib/puppet/face/file/store.rb +0 -21
- data/lib/puppet/face/resource_type.rb +0 -84
- data/lib/puppet/feature/cfacter.rb +0 -15
- data/lib/puppet/feature/external_facts.rb +0 -5
- data/lib/puppet/indirector/catalog/static_compiler.rb +0 -232
- data/lib/puppet/indirector/resource_type.rb +0 -5
- data/lib/puppet/indirector/resource_type/parser.rb +0 -108
- data/lib/puppet/indirector/resource_type/rest.rb +0 -7
- data/lib/puppet/parser/yaml_trimmer.rb +0 -7
- data/lib/puppet/plugins/binding_schemes.rb +0 -140
- data/lib/puppet/plugins/data_providers.rb +0 -45
- data/lib/puppet/plugins/data_providers/data_provider.rb +0 -406
- data/lib/puppet/plugins/data_providers/registry.rb +0 -51
- data/lib/puppet/pops/binder/binder.rb +0 -398
- data/lib/puppet/pops/binder/binder_issues.rb +0 -124
- data/lib/puppet/pops/binder/bindings_checker.rb +0 -201
- data/lib/puppet/pops/binder/bindings_composer.rb +0 -181
- data/lib/puppet/pops/binder/bindings_factory.rb +0 -813
- data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -45
- data/lib/puppet/pops/binder/bindings_loader.rb +0 -87
- data/lib/puppet/pops/binder/bindings_model.rb +0 -70
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +0 -215
- data/lib/puppet/pops/binder/bindings_model_meta.rb +0 -215
- data/lib/puppet/pops/binder/bindings_validator_factory.rb +0 -28
- data/lib/puppet/pops/binder/config/binder_config.rb +0 -107
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +0 -142
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +0 -36
- data/lib/puppet/pops/binder/config/issues.rb +0 -90
- data/lib/puppet/pops/binder/injector.rb +0 -771
- data/lib/puppet/pops/binder/injector_entry.rb +0 -57
- data/lib/puppet/pops/binder/key_factory.rb +0 -65
- data/lib/puppet/pops/binder/producers.rb +0 -831
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +0 -34
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +0 -143
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +0 -53
- data/lib/puppet/pops/binder/system_bindings.rb +0 -60
- data/lib/puppet/pops/containment.rb +0 -104
- data/lib/puppet/pops/model/model.rb +0 -131
- data/lib/puppet/pops/model/model_meta.rb +0 -629
- data/lib/puppet/pops/serialization/rgen.rb +0 -152
- data/lib/puppet/vendor/load_rgen.rb +0 -2
- data/lib/puppet/vendor/rgen/CHANGELOG +0 -197
- data/lib/puppet/vendor/rgen/MIT-LICENSE +0 -20
- data/lib/puppet/vendor/rgen/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/rgen/README.rdoc +0 -78
- data/lib/puppet/vendor/rgen/Rakefile +0 -41
- data/lib/puppet/vendor/rgen/TODO +0 -41
- data/lib/puppet/vendor/rgen/anounce.txt +0 -61
- data/lib/puppet/vendor/rgen/design_rationale.txt +0 -71
- data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +0 -54
- data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +0 -32
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +0 -562
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +0 -45
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +0 -43
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +0 -103
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +0 -89
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +0 -559
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +0 -26
- data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +0 -20
- data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +0 -91
- data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +0 -28
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +0 -37
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +0 -172
- data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +0 -45
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +0 -218
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +0 -81
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +0 -69
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +0 -167
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +0 -91
- data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +0 -129
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +0 -63
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +0 -140
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +0 -289
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +0 -66
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +0 -66
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +0 -117
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +0 -169
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +0 -126
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +0 -331
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +0 -94
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +0 -137
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +0 -97
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +0 -128
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +0 -168
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +0 -224
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +0 -556
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +0 -174
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +0 -89
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +0 -77
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +0 -30
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +0 -168
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +0 -23
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +0 -42
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +0 -32
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +0 -334
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +0 -225
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +0 -156
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +0 -121
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +0 -18
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +0 -116
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +0 -71
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +0 -98
- data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +0 -297
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +0 -83
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +0 -87
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +0 -234
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +0 -26
- data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +0 -475
- data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +0 -61
- data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +0 -67
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +0 -124
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +0 -84
- data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +0 -114
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +0 -68
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +0 -142
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +0 -29
- data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +0 -42
- data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +0 -329
- data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +0 -79
- data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +0 -127
- data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +0 -64
- data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +0 -35
- data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +0 -23
- data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +0 -54
- data/lib/puppet/vendor/rgen/test/environment_test.rb +0 -90
- data/lib/puppet/vendor/rgen/test/json_test.rb +0 -171
- data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +0 -1482
- data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +0 -57
- data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +0 -131
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +0 -98
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +0 -70
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +0 -42
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +0 -44
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +0 -9
- data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +0 -178
- data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +0 -59
- data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +0 -242
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +0 -163
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +0 -163
- data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +0 -156
- data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +0 -94
- data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +0 -42
- data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +0 -23
- data/lib/puppet/vendor/rgen/test/model_builder_test.rb +0 -6
- data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +0 -30
- data/lib/puppet/vendor/rgen/test/output_handler_test.rb +0 -58
- data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +0 -48
- data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +0 -102
- data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +0 -117
- data/lib/puppet/vendor/rgen/test/rgen_test.rb +0 -26
- data/lib/puppet/vendor/rgen/test/template_language_test.rb +0 -163
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +0 -29
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +0 -9
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +0 -4
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +0 -12
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +0 -11
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +0 -7
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +0 -8
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +0 -8
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +0 -7
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +0 -12
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +0 -24
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +0 -13
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +0 -10
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +0 -17
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +0 -31
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +0 -9
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +0 -4
- data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +0 -29
- data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +0 -119
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +0 -1029
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +0 -317
- data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +0 -101
- data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +0 -22
- data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +0 -67
- data/lib/puppet/vendor/rgen/test/transformer_test.rb +0 -254
- data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +0 -99
- data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +0 -97
- data/lib/puppet/vendor/rgen/test/util_test.rb +0 -5
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +0 -160
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +0 -94
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +0 -53
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +0 -49
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +0 -75
- data/lib/puppet/vendor/rgen_patch.rb +0 -132
- data/lib/semver.rb +0 -146
- data/man/man8/extlookup2hiera.8 +0 -10
- data/man/man8/puppet-file.8 +0 -189
- data/man/man8/puppet-generate.8 +0 -84
- data/man/man8/puppet-lookup.8 +0 -87
- data/man/man8/puppet-resource_type.8 +0 -188
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +0 -23
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet/bindings/dataprovider/default.rb +0 -54
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +0 -33
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +0 -33
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -10
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -23
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +0 -3
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +0 -9
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
- data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
- data/spec/unit/application/inspect_spec.rb +0 -316
- data/spec/unit/data_providers/custom_data_provider_spec.rb +0 -50
- data/spec/unit/face/file_spec.rb +0 -14
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -255
- data/spec/unit/indirector/resource_type/parser_spec.rb +0 -259
- data/spec/unit/indirector/resource_type/rest_spec.rb +0 -14
- data/spec/unit/pops/binder/binder_spec.rb +0 -43
- data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -155
- data/spec/unit/pops/binder/bindings_composer_spec.rb +0 -64
- data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +0 -18
- data/spec/unit/pops/binder/config/binder_config_spec.rb +0 -42
- data/spec/unit/pops/binder/injector_spec.rb +0 -768
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +0 -23
- data/spec/unit/pops/serialization/rgen_spec.rb +0 -88
- data/spec/unit/semver_spec.rb +0 -546
@@ -1,57 +0,0 @@
|
|
1
|
-
# Represents an entry in the injectors internal data.
|
2
|
-
#
|
3
|
-
# @api public
|
4
|
-
#
|
5
|
-
class Puppet::Pops::Binder::InjectorEntry
|
6
|
-
# @return [Object] An opaque (comparable) object representing the precedence
|
7
|
-
# @api public
|
8
|
-
attr_reader :precedence
|
9
|
-
|
10
|
-
# @return [Puppet::Pops::Binder::Bindings::Binding] The binding for this entry
|
11
|
-
# @api public
|
12
|
-
attr_reader :binding
|
13
|
-
|
14
|
-
# @api private
|
15
|
-
attr_accessor :resolved
|
16
|
-
|
17
|
-
# @api private
|
18
|
-
attr_accessor :cached_producer
|
19
|
-
|
20
|
-
# @api private
|
21
|
-
def initialize(binding, precedence = 0)
|
22
|
-
@precedence = precedence.freeze
|
23
|
-
@binding = binding
|
24
|
-
@cached_producer = nil
|
25
|
-
end
|
26
|
-
|
27
|
-
# Marks an overriding entry as resolved (if not an overriding entry, the marking has no effect).
|
28
|
-
# @api private
|
29
|
-
#
|
30
|
-
def mark_override_resolved()
|
31
|
-
@resolved = true
|
32
|
-
end
|
33
|
-
|
34
|
-
# The binding is resolved if it is non-override, or if the override has been resolved
|
35
|
-
# @api private
|
36
|
-
#
|
37
|
-
def is_resolved?()
|
38
|
-
!binding.override || resolved
|
39
|
-
end
|
40
|
-
|
41
|
-
def is_abstract?
|
42
|
-
binding.abstract
|
43
|
-
end
|
44
|
-
|
45
|
-
def is_final?
|
46
|
-
binding.final
|
47
|
-
end
|
48
|
-
|
49
|
-
# Compares against another InjectorEntry by comparing precedence.
|
50
|
-
# @param injector_entry [InjectorEntry] entry to compare against.
|
51
|
-
# @return [Integer] 1, if this entry has higher precedence, 0 if equal, and -1 if given entry has higher precedence.
|
52
|
-
# @api public
|
53
|
-
#
|
54
|
-
def <=> (injector_entry)
|
55
|
-
precedence <=> injector_entry.precedence
|
56
|
-
end
|
57
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Puppet::Pops
|
2
|
-
module Binder
|
3
|
-
# The KeyFactory is responsible for creating keys used for lookup of bindings.
|
4
|
-
# @api public
|
5
|
-
#
|
6
|
-
class KeyFactory
|
7
|
-
|
8
|
-
# @api public
|
9
|
-
def binding_key(binding)
|
10
|
-
named_key(binding.type, binding.name)
|
11
|
-
end
|
12
|
-
|
13
|
-
# @api public
|
14
|
-
def named_key(type, name)
|
15
|
-
[(Types::PDataType::DEFAULT.assignable?(type) ? Types::PDataType::DEFAULT : type), name]
|
16
|
-
end
|
17
|
-
|
18
|
-
# @api public
|
19
|
-
def data_key(name)
|
20
|
-
[Types::PDataType::DEFAULT, name]
|
21
|
-
end
|
22
|
-
|
23
|
-
# @api public
|
24
|
-
def is_contributions_key?(s)
|
25
|
-
return false unless s.is_a?(String)
|
26
|
-
s.start_with?('mc_')
|
27
|
-
end
|
28
|
-
|
29
|
-
# @api public
|
30
|
-
def multibind_contributions(multibind_id)
|
31
|
-
"mc_#{multibind_id}"
|
32
|
-
end
|
33
|
-
|
34
|
-
# @api public
|
35
|
-
def multibind_contribution_key_to_id(contributions_key)
|
36
|
-
# removes the leading "mc_" from the key to get the multibind_id
|
37
|
-
contributions_key[3..-1]
|
38
|
-
end
|
39
|
-
|
40
|
-
# @api public
|
41
|
-
def is_named?(key)
|
42
|
-
key.is_a?(Array) && key[1] && !key[1].empty?
|
43
|
-
end
|
44
|
-
|
45
|
-
# @api public
|
46
|
-
def is_data?(key)
|
47
|
-
return false unless key.is_a?(Array) && key[0].is_a?(Types::PAnyType)
|
48
|
-
Types::PDataType::DEFAULT.assignable?(key[0])
|
49
|
-
end
|
50
|
-
|
51
|
-
# @api public
|
52
|
-
def is_ruby?(key)
|
53
|
-
key.is_a?(Array) && key[0].is_a?(Types::PRuntimeType) && key[0].runtime == :ruby
|
54
|
-
end
|
55
|
-
|
56
|
-
# Returns the type of the key
|
57
|
-
# @api public
|
58
|
-
#
|
59
|
-
def get_type(key)
|
60
|
-
return nil unless key.is_a?(Array)
|
61
|
-
key[0]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,831 +0,0 @@
|
|
1
|
-
module Puppet::Pops
|
2
|
-
module Binder
|
3
|
-
# This module contains the various producers used by Puppet Bindings.
|
4
|
-
|
5
|
-
# The main (abstract) class is {Producers::Producer} which documents the
|
6
|
-
# Producer API and serves as a base class for all other producers.
|
7
|
-
# It is required that custom producers inherit from this producer (directly or indirectly).
|
8
|
-
#
|
9
|
-
# The selection of a Producer is typically performed by the Innjector when it configures itself
|
10
|
-
# from a Bindings model where a {Bindings::ProducerDescriptor} describes
|
11
|
-
# which producer to use. The configuration uses this to create the concrete producer.
|
12
|
-
# It is possible to describe that a particular producer class is to be used, and also to describe that
|
13
|
-
# a custom producer (derived from Producer) should be used. This is available for both regular
|
14
|
-
# bindings as well as multi-bindings.
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# @api public
|
18
|
-
#
|
19
|
-
module Producers
|
20
|
-
# Producer is an abstract base class representing the base contract for a bound producer.
|
21
|
-
# Typically, when a lookup is performed it is the value that is returned (via a producer), but
|
22
|
-
# it is also possible to lookup the producer, and ask it to produce the value (the producer may
|
23
|
-
# return a series of values, which makes this especially useful).
|
24
|
-
#
|
25
|
-
# When looking up a producer, it is of importance to only use the API of the Producer class
|
26
|
-
# unless it is known that a particular custom producer class has been bound.
|
27
|
-
#
|
28
|
-
# Custom Producers
|
29
|
-
# ----------------
|
30
|
-
# The intent is that this class is derived for custom producers that require additional
|
31
|
-
# options/arguments when producing an instance. Such a custom producer may raise an error if called
|
32
|
-
# with too few arguments, or may implement specific `produce` methods and always raise an
|
33
|
-
# error on #produce indicating that this producer requires custom calls and that it can not
|
34
|
-
# be used as an implicit producer.
|
35
|
-
#
|
36
|
-
# Features of Producer
|
37
|
-
# --------------------
|
38
|
-
# The Producer class is abstract, but offers the ability to transform the produced result
|
39
|
-
# by passing the option `:transformer` which should be a Puppet Lambda Expression taking one argument
|
40
|
-
# and producing the transformed (wanted) result.
|
41
|
-
#
|
42
|
-
# @abstract
|
43
|
-
# @api public
|
44
|
-
#
|
45
|
-
class Producer
|
46
|
-
# A Puppet 3 AST Lambda Expression
|
47
|
-
# @api public
|
48
|
-
#
|
49
|
-
attr_reader :transformer
|
50
|
-
|
51
|
-
# Creates a Producer.
|
52
|
-
# Derived classes should call this constructor to get support for transformer lambda.
|
53
|
-
#
|
54
|
-
# @param injector [Injector] The injector where the lookup originates
|
55
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
56
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
57
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
58
|
-
# @api public
|
59
|
-
#
|
60
|
-
def initialize(injector, binding, scope, options)
|
61
|
-
if transformer_lambda = options[:transformer]
|
62
|
-
if transformer_lambda.is_a?(Proc)
|
63
|
-
raise ArgumentError, "Transformer Proc must take one argument; value." unless transformer_lambda.arity == 1
|
64
|
-
@transformer = transformer_lambda
|
65
|
-
else
|
66
|
-
raise ArgumentError, "Transformer must be a LambdaExpression" unless transformer_lambda.is_a?(Model::LambdaExpression)
|
67
|
-
raise ArgumentError, "Transformer lambda must take one argument; value." unless transformer_lambda.parameters.size() == 1
|
68
|
-
@transformer = Parser::EvaluatingParser.new.closure(transformer_lambda, scope)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# Produces an instance.
|
74
|
-
# @param scope [Puppet::Parser:Scope] the scope to use for evaluation
|
75
|
-
# @param args [Object] arguments to custom producers, always empty for implicit productions
|
76
|
-
# @return [Object] the produced instance (should never be nil).
|
77
|
-
# @api public
|
78
|
-
#
|
79
|
-
def produce(scope, *args)
|
80
|
-
do_transformation(scope, internal_produce(scope))
|
81
|
-
end
|
82
|
-
|
83
|
-
# Returns the producer after possibly having recreated an internal/wrapped producer.
|
84
|
-
# This implementation returns `self`. A derived class may want to override this method
|
85
|
-
# to perform initialization/refresh of its internal state. This method is called when
|
86
|
-
# a producer is requested.
|
87
|
-
# @see ProducerProducer for an example of implementation.
|
88
|
-
# @param scope [Puppet::Parser:Scope] the scope to use for evaluation
|
89
|
-
# @return [Producer] the producer to use
|
90
|
-
# @api public
|
91
|
-
#
|
92
|
-
def producer(scope)
|
93
|
-
self
|
94
|
-
end
|
95
|
-
|
96
|
-
protected
|
97
|
-
|
98
|
-
# Derived classes should implement this method to do the production of a value
|
99
|
-
# @param scope [Puppet::Parser::Scope] the scope to use when performing lookup and evaluation
|
100
|
-
# @raise [NotImplementedError] this implementation always raises an error
|
101
|
-
# @abstract
|
102
|
-
# @api private
|
103
|
-
#
|
104
|
-
def internal_produce(scope)
|
105
|
-
raise NotImplementedError, "Producer-class '#{self.class.name}' should implement #internal_produce(scope)"
|
106
|
-
end
|
107
|
-
|
108
|
-
# Transforms the produced value if a transformer has been defined.
|
109
|
-
# @param scope [Puppet::Parser::Scope] the scope used for evaluation
|
110
|
-
# @param produced_value [Object, nil] the produced value (possibly nil)
|
111
|
-
# @return [Object] the transformed value if a transformer is defined, else the given `produced_value`
|
112
|
-
# @api private
|
113
|
-
#
|
114
|
-
def do_transformation(scope, produced_value)
|
115
|
-
return produced_value unless transformer
|
116
|
-
transformer.call(produced_value)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# Abstract Producer holding a value
|
121
|
-
# @abstract
|
122
|
-
# @api public
|
123
|
-
#
|
124
|
-
class AbstractValueProducer < Producer
|
125
|
-
|
126
|
-
# @api public
|
127
|
-
attr_reader :value
|
128
|
-
|
129
|
-
# @param injector [Injector] The injector where the lookup originates
|
130
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
131
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
132
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
133
|
-
# @option options [Model::LambdaExpression, nil] :value (nil) the value to produce
|
134
|
-
# @api public
|
135
|
-
#
|
136
|
-
def initialize(injector, binding, scope, options)
|
137
|
-
super
|
138
|
-
# nil is ok here, as an abstract value producer may be used to signal "not found"
|
139
|
-
@value = options[:value]
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
# Produces the same/singleton value on each production
|
144
|
-
# @api public
|
145
|
-
#
|
146
|
-
class SingletonProducer < AbstractValueProducer
|
147
|
-
protected
|
148
|
-
|
149
|
-
# @api private
|
150
|
-
def internal_produce(scope)
|
151
|
-
value()
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
# Produces a deep clone of its value on each production.
|
156
|
-
# @api public
|
157
|
-
#
|
158
|
-
class DeepCloningProducer < AbstractValueProducer
|
159
|
-
protected
|
160
|
-
|
161
|
-
# @api private
|
162
|
-
def internal_produce(scope)
|
163
|
-
case value
|
164
|
-
when Integer, Float, TrueClass, FalseClass, Symbol
|
165
|
-
# These are immutable
|
166
|
-
return value
|
167
|
-
when String
|
168
|
-
# ok if frozen, else fall through to default
|
169
|
-
return value() if value.frozen?
|
170
|
-
end
|
171
|
-
# The default: serialize/deserialize to get a deep copy
|
172
|
-
Marshal.load(Marshal.dump(value()))
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# This abstract producer class remembers the injector and binding.
|
177
|
-
# @abstract
|
178
|
-
# @api public
|
179
|
-
#
|
180
|
-
class AbstractArgumentedProducer < Producer
|
181
|
-
|
182
|
-
# @api public
|
183
|
-
attr_reader :injector
|
184
|
-
|
185
|
-
# @api public
|
186
|
-
attr_reader :binding
|
187
|
-
|
188
|
-
# @param injector [Injector] The injector where the lookup originates
|
189
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
190
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
191
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
192
|
-
# @api public
|
193
|
-
#
|
194
|
-
def initialize(injector, binding, scope, options)
|
195
|
-
super
|
196
|
-
@injector = injector
|
197
|
-
@binding = binding
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
# @api public
|
202
|
-
class InstantiatingProducer < AbstractArgumentedProducer
|
203
|
-
|
204
|
-
# @api public
|
205
|
-
attr_reader :the_class
|
206
|
-
|
207
|
-
# @api public
|
208
|
-
attr_reader :init_args
|
209
|
-
|
210
|
-
# @param injector [Injector] The injector where the lookup originates
|
211
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
212
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
213
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
214
|
-
# @option options [String] :class_name The name of the class to create instance of
|
215
|
-
# @option options [Array<Object>] :init_args ([]) Optional arguments to class constructor
|
216
|
-
# @api public
|
217
|
-
#
|
218
|
-
def initialize(injector, binding, scope, options)
|
219
|
-
# Better do this, even if a transformation of a created instance is kind of an odd thing to do, one can imagine
|
220
|
-
# sending it to a function for further detailing.
|
221
|
-
#
|
222
|
-
super
|
223
|
-
class_name = options[:class_name]
|
224
|
-
raise ArgumentError, "Option 'class_name' must be given for an InstantiatingProducer" unless class_name
|
225
|
-
# get class by name
|
226
|
-
@the_class = Types::ClassLoader.provide(class_name)
|
227
|
-
@init_args = options[:init_args] || []
|
228
|
-
raise ArgumentError, "Can not load the class #{class_name} specified in binding named: '#{binding.name}'" unless @the_class
|
229
|
-
end
|
230
|
-
|
231
|
-
protected
|
232
|
-
|
233
|
-
# Performs initialization the same way as Assisted Inject does (but handle arguments to
|
234
|
-
# constructor)
|
235
|
-
# @api private
|
236
|
-
#
|
237
|
-
def internal_produce(scope)
|
238
|
-
result = nil
|
239
|
-
# A class :inject method wins over an instance :initialize if it is present, unless a more specific
|
240
|
-
# constructor exists. (i.e do not pick :inject from superclass if class has a constructor).
|
241
|
-
#
|
242
|
-
if the_class.respond_to?(:inject)
|
243
|
-
inject_method = the_class.method(:inject)
|
244
|
-
initialize_method = the_class.instance_method(:initialize)
|
245
|
-
if inject_method.owner <= initialize_method.owner
|
246
|
-
result = the_class.inject(injector, scope, binding, *init_args)
|
247
|
-
end
|
248
|
-
end
|
249
|
-
if result.nil?
|
250
|
-
result = the_class.new(*init_args)
|
251
|
-
end
|
252
|
-
result
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
# @api public
|
257
|
-
class FirstFoundProducer < Producer
|
258
|
-
# @api public
|
259
|
-
attr_reader :producers
|
260
|
-
|
261
|
-
# @param injector [Injector] The injector where the lookup originates
|
262
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
263
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
264
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
265
|
-
# @option options [Array<Producers::Producer>] :producers list of producers to consult. Required.
|
266
|
-
# @api public
|
267
|
-
#
|
268
|
-
def initialize(injector, binding, scope, options)
|
269
|
-
super
|
270
|
-
@producers = options[:producers]
|
271
|
-
raise ArgumentError, "Option :producers' must be set to a list of producers." if @producers.nil?
|
272
|
-
raise ArgumentError, "Given 'producers' option is not an Array" unless @producers.is_a?(Array)
|
273
|
-
end
|
274
|
-
|
275
|
-
protected
|
276
|
-
|
277
|
-
# @api private
|
278
|
-
def internal_produce(scope)
|
279
|
-
# return the first produced value that is non-nil (unfortunately there is no such enumerable method)
|
280
|
-
producers.reduce(nil) {|memo, p| break memo unless memo.nil?; p.produce(scope)}
|
281
|
-
end
|
282
|
-
end
|
283
|
-
|
284
|
-
# Evaluates a Puppet Expression and returns the result.
|
285
|
-
# This is typically used for strings with interpolated expressions.
|
286
|
-
# @api public
|
287
|
-
#
|
288
|
-
class EvaluatingProducer < Producer
|
289
|
-
# A Puppet 3 AST Expression
|
290
|
-
# @api public
|
291
|
-
#
|
292
|
-
attr_reader :expression
|
293
|
-
|
294
|
-
# @param injector [Injector] The injector where the lookup originates
|
295
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
296
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
297
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
298
|
-
# @option options [Array<Model::Expression>] :expression The expression to evaluate
|
299
|
-
# @api public
|
300
|
-
#
|
301
|
-
def initialize(injector, binding, scope, options)
|
302
|
-
super
|
303
|
-
@expression = options[:expression]
|
304
|
-
raise ArgumentError, "Option 'expression' must be given to an EvaluatingProducer." unless @expression
|
305
|
-
end
|
306
|
-
|
307
|
-
# @api private
|
308
|
-
def internal_produce(scope)
|
309
|
-
Parser::EvaluatingParser.new.evaluate(scope, expression)
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
# @api public
|
314
|
-
class LookupProducer < AbstractArgumentedProducer
|
315
|
-
|
316
|
-
# @api public
|
317
|
-
attr_reader :type
|
318
|
-
|
319
|
-
# @api public
|
320
|
-
attr_reader :name
|
321
|
-
|
322
|
-
# @param injector [Injector] The injector where the lookup originates
|
323
|
-
# @param binder [Bindings::Binding, nil] The binding using this producer
|
324
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
325
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
326
|
-
# @option options [Types::PAnyType] :type The type to lookup
|
327
|
-
# @option options [String] :name ('') The name to lookup
|
328
|
-
# @api public
|
329
|
-
#
|
330
|
-
def initialize(injector, binder, scope, options)
|
331
|
-
super
|
332
|
-
@type = options[:type]
|
333
|
-
@name = options[:name] || ''
|
334
|
-
raise ArgumentError, "Option 'type' must be given in a LookupProducer." unless @type
|
335
|
-
end
|
336
|
-
|
337
|
-
protected
|
338
|
-
|
339
|
-
# @api private
|
340
|
-
def internal_produce(scope)
|
341
|
-
injector.lookup_type(scope, type, name)
|
342
|
-
end
|
343
|
-
end
|
344
|
-
|
345
|
-
# @api public
|
346
|
-
class LookupKeyProducer < LookupProducer
|
347
|
-
|
348
|
-
# @api public
|
349
|
-
attr_reader :key
|
350
|
-
|
351
|
-
# @param injector [Injector] The injector where the lookup originates
|
352
|
-
# @param binder [Bindings::Binding, nil] The binding using this producer
|
353
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
354
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
355
|
-
# @option options [Types::PAnyType] :type The type to lookup
|
356
|
-
# @option options [String] :name ('') The name to lookup
|
357
|
-
# @option options [Types::PAnyType] :key The key to lookup in the hash
|
358
|
-
# @api public
|
359
|
-
#
|
360
|
-
def initialize(injector, binder, scope, options)
|
361
|
-
super
|
362
|
-
@key = options[:key]
|
363
|
-
raise ArgumentError, "Option 'key' must be given in a LookupKeyProducer." if key.nil?
|
364
|
-
end
|
365
|
-
|
366
|
-
protected
|
367
|
-
|
368
|
-
# @api private
|
369
|
-
def internal_produce(scope)
|
370
|
-
|
371
|
-
result = super
|
372
|
-
result.is_a?(Hash) ? result[key] : nil
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
# Produces the given producer, then uses that producer.
|
377
|
-
# @see ProducerProducer for the non singleton version
|
378
|
-
# @api public
|
379
|
-
#
|
380
|
-
class SingletonProducerProducer < Producer
|
381
|
-
|
382
|
-
# @api public
|
383
|
-
attr_reader :value_producer
|
384
|
-
|
385
|
-
# @param injector [Injector] The injector where the lookup originates
|
386
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
387
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
388
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
389
|
-
# @option options [Model::LambdaExpression] :producer_producer a producer of a value producer (required)
|
390
|
-
# @api public
|
391
|
-
#
|
392
|
-
def initialize(injector, binding, scope, options)
|
393
|
-
super
|
394
|
-
p = options[:producer_producer]
|
395
|
-
raise ArgumentError, "Option :producer_producer must be given in a SingletonProducerProducer" unless p
|
396
|
-
@value_producer = p.produce(scope)
|
397
|
-
end
|
398
|
-
|
399
|
-
protected
|
400
|
-
|
401
|
-
# @api private
|
402
|
-
def internal_produce(scope)
|
403
|
-
value_producer.produce(scope)
|
404
|
-
end
|
405
|
-
end
|
406
|
-
|
407
|
-
# A ProducerProducer creates a producer via another producer, and then uses this created producer
|
408
|
-
# to produce values. This is useful for custom production of series of values.
|
409
|
-
# On each request for a producer, this producer will reset its internal producer (i.e. restarting
|
410
|
-
# the series).
|
411
|
-
#
|
412
|
-
# @param producer_producer [#produce(scope)] the producer of the producer
|
413
|
-
#
|
414
|
-
# @api public
|
415
|
-
#
|
416
|
-
class ProducerProducer < Producer
|
417
|
-
|
418
|
-
# @api public
|
419
|
-
attr_reader :producer_producer
|
420
|
-
|
421
|
-
# @api public
|
422
|
-
attr_reader :value_producer
|
423
|
-
|
424
|
-
# Creates new ProducerProducer given a producer.
|
425
|
-
#
|
426
|
-
# @param injector [Injector] The injector where the lookup originates
|
427
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
428
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
429
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
430
|
-
# @option options [Producer] :producer_producer a producer of a value producer (required)
|
431
|
-
#
|
432
|
-
# @api public
|
433
|
-
#
|
434
|
-
def initialize(injector, binding, scope, options)
|
435
|
-
super
|
436
|
-
unless producer_producer = options[:producer_producer]
|
437
|
-
raise ArgumentError, "The option :producer_producer must be set in a ProducerProducer"
|
438
|
-
end
|
439
|
-
raise ArgumentError, "Argument must be a Producer" unless producer_producer.is_a?(Producer)
|
440
|
-
|
441
|
-
@producer_producer = producer_producer
|
442
|
-
@value_producer = nil
|
443
|
-
end
|
444
|
-
|
445
|
-
# Updates the internal state to use a new instance of the wrapped producer.
|
446
|
-
# @api public
|
447
|
-
#
|
448
|
-
def producer(scope)
|
449
|
-
@value_producer = @producer_producer.produce(scope)
|
450
|
-
self
|
451
|
-
end
|
452
|
-
|
453
|
-
protected
|
454
|
-
|
455
|
-
# Produces a value after having created an instance of the wrapped producer (if not already created).
|
456
|
-
# @api private
|
457
|
-
#
|
458
|
-
def internal_produce(scope, *args)
|
459
|
-
producer() unless value_producer
|
460
|
-
value_producer.produce(scope)
|
461
|
-
end
|
462
|
-
end
|
463
|
-
|
464
|
-
# This type of producer should only be created by the Injector.
|
465
|
-
#
|
466
|
-
# @api private
|
467
|
-
#
|
468
|
-
class AssistedInjectProducer < Producer
|
469
|
-
# An Assisted Inject Producer is created when a lookup is made of a type that is
|
470
|
-
# not bound. It does not support a transformer lambda.
|
471
|
-
# @note This initializer has a different signature than all others. Do not use in regular logic.
|
472
|
-
# @api private
|
473
|
-
#
|
474
|
-
def initialize(injector, clazz)
|
475
|
-
raise ArgumentError, "class must be given" unless clazz.is_a?(Class)
|
476
|
-
|
477
|
-
@injector = injector
|
478
|
-
@clazz = clazz
|
479
|
-
@inst = nil
|
480
|
-
end
|
481
|
-
|
482
|
-
def produce(scope, *args)
|
483
|
-
producer(scope, *args) unless @inst
|
484
|
-
@inst
|
485
|
-
end
|
486
|
-
|
487
|
-
# @api private
|
488
|
-
def producer(scope, *args)
|
489
|
-
@inst = nil
|
490
|
-
# A class :inject method wins over an instance :initialize if it is present, unless a more specific zero args
|
491
|
-
# constructor exists. (i.e do not pick :inject from superclass if class has a zero args constructor).
|
492
|
-
#
|
493
|
-
if @clazz.respond_to?(:inject)
|
494
|
-
inject_method = @clazz.method(:inject)
|
495
|
-
initialize_method = @clazz.instance_method(:initialize)
|
496
|
-
if inject_method.owner <= initialize_method.owner || initialize_method.arity != 0
|
497
|
-
@inst = @clazz.inject(@injector, scope, nil, *args)
|
498
|
-
end
|
499
|
-
end
|
500
|
-
if @inst.nil?
|
501
|
-
unless args.empty?
|
502
|
-
raise ArgumentError, "Assisted Inject can not pass arguments to no-args constructor when there is no class inject method."
|
503
|
-
end
|
504
|
-
@inst = @clazz.new()
|
505
|
-
end
|
506
|
-
self
|
507
|
-
end
|
508
|
-
end
|
509
|
-
|
510
|
-
# Abstract base class for multibind producers.
|
511
|
-
# Is suitable as base class for custom implementations of multibind producers.
|
512
|
-
# @abstract
|
513
|
-
# @api public
|
514
|
-
#
|
515
|
-
class MultibindProducer < AbstractArgumentedProducer
|
516
|
-
attr_reader :contributions_key
|
517
|
-
|
518
|
-
# @param injector [Injector] The injector where the lookup originates
|
519
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
520
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
521
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
522
|
-
#
|
523
|
-
# @api public
|
524
|
-
#
|
525
|
-
def initialize(injector, binding, scope, options)
|
526
|
-
super
|
527
|
-
@contributions_key = injector.key_factory.multibind_contributions(binding.id)
|
528
|
-
end
|
529
|
-
|
530
|
-
# @param expected [Array<Types::PAnyType>, Types::PAnyType] expected type or types
|
531
|
-
# @param actual [Object, Types::PAnyType> the actual value (or its type)
|
532
|
-
# @return [String] a formatted string for inclusion as detail in an error message
|
533
|
-
# @api private
|
534
|
-
#
|
535
|
-
def type_error_detail(expected, actual)
|
536
|
-
tc = injector.type_calculator
|
537
|
-
expected = [expected] unless expected.is_a?(Array)
|
538
|
-
actual_t = tc.is_ptype?(actual) ? actual : tc.infer(actual)
|
539
|
-
expstrs = expected.collect {|t| t.to_s }
|
540
|
-
"expected: #{expstrs.join(', or ')}, got: #{actual_t}"
|
541
|
-
end
|
542
|
-
end
|
543
|
-
|
544
|
-
# A configurable multibind producer for Array type multibindings.
|
545
|
-
#
|
546
|
-
# This implementation collects all contributions to the multibind and then combines them using the following rules:
|
547
|
-
#
|
548
|
-
# - all *unnamed* entries are added unless the option `:priority_on_unnamed` is set to true, in which case the unnamed
|
549
|
-
# contribution with the highest priority is added, and the rest are ignored (unless they have the same priority in which
|
550
|
-
# case an error is raised).
|
551
|
-
# - all *named* entries are handled the same way as *unnamed* but the option `:priority_on_named` controls their handling.
|
552
|
-
# - the option `:uniq` post processes the result to only contain unique entries
|
553
|
-
# - the option `:flatten` post processes the result by flattening all nested arrays.
|
554
|
-
# - If both `:flatten` and `:uniq` are true, flattening is done first.
|
555
|
-
#
|
556
|
-
# @note
|
557
|
-
# Collection accepts elements that comply with the array's element type, or the entire type (i.e. Array[element_type]).
|
558
|
-
# If the type is restrictive - e.g. Array[String] and an Array[String] is contributed, the result will not be type
|
559
|
-
# compliant without also using the `:flatten` option, and a type error will be raised. For an array with relaxed typing
|
560
|
-
# i.e. Array[Data], it is valid to produce a result such as `['a', ['b', 'c'], 'd']` and no flattening is required
|
561
|
-
# and no error is raised (but using the array needs to be aware of potential array, non-array entries.
|
562
|
-
# The use of the option `:flatten` controls how the result is flattened.
|
563
|
-
#
|
564
|
-
# @api public
|
565
|
-
#
|
566
|
-
class ArrayMultibindProducer < MultibindProducer
|
567
|
-
|
568
|
-
# @return [Boolean] whether the result should be made contain unique (non-equal) entries or not
|
569
|
-
# @api public
|
570
|
-
attr_reader :uniq
|
571
|
-
|
572
|
-
# @return [Boolean, Integer] If result should be flattened (true), or not (false), or flattened to given level (0 = none, -1 = all)
|
573
|
-
# @api public
|
574
|
-
attr_reader :flatten
|
575
|
-
|
576
|
-
# @return [Boolean] whether priority should be considered for named contributions
|
577
|
-
# @api public
|
578
|
-
attr_reader :priority_on_named
|
579
|
-
|
580
|
-
# @return [Boolean] whether priority should be considered for unnamed contributions
|
581
|
-
# @api public
|
582
|
-
attr_reader :priority_on_unnamed
|
583
|
-
|
584
|
-
# @param injector [Injector] The injector where the lookup originates
|
585
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
586
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
587
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
588
|
-
# @option options [Boolean] :uniq (false) if collected result should be post-processed to contain only unique entries
|
589
|
-
# @option options [Boolean, Integer] :flatten (false) if collected result should be post-processed so all contained arrays
|
590
|
-
# are flattened. May be set to an Integer value to indicate the level of recursion (-1 is endless, 0 is none).
|
591
|
-
# @option options [Boolean] :priority_on_named (true) if highest precedented named element should win or if all should be included
|
592
|
-
# @option options [Boolean] :priority_on_unnamed (false) if highest precedented unnamed element should win or if all should be included
|
593
|
-
# @api public
|
594
|
-
#
|
595
|
-
def initialize(injector, binding, scope, options)
|
596
|
-
super
|
597
|
-
@uniq = !!options[:uniq]
|
598
|
-
@flatten = options[:flatten]
|
599
|
-
@priority_on_named = options[:priority_on_named].nil? ? true : options[:priority_on_name]
|
600
|
-
@priority_on_unnamed = !!options[:priority_on_unnamed]
|
601
|
-
|
602
|
-
case @flatten
|
603
|
-
when Integer
|
604
|
-
when true
|
605
|
-
@flatten = -1
|
606
|
-
when false
|
607
|
-
@flatten = nil
|
608
|
-
when NilClass
|
609
|
-
@flatten = nil
|
610
|
-
else
|
611
|
-
raise ArgumentError, "Option :flatten must be nil, Boolean, or an integer value" unless @flatten.is_a?(Integer)
|
612
|
-
end
|
613
|
-
end
|
614
|
-
|
615
|
-
protected
|
616
|
-
|
617
|
-
# @api private
|
618
|
-
def internal_produce(scope)
|
619
|
-
seen = {}
|
620
|
-
included_keys = []
|
621
|
-
|
622
|
-
injector.get_contributions(scope, contributions_key).each do |element|
|
623
|
-
key = element[0]
|
624
|
-
entry = element[1]
|
625
|
-
|
626
|
-
name = entry.binding.name
|
627
|
-
existing = seen[name]
|
628
|
-
empty_name = name.nil? || name.empty?
|
629
|
-
if existing
|
630
|
-
if empty_name && priority_on_unnamed
|
631
|
-
if (seen[name] <=> entry) >= 0
|
632
|
-
raise ArgumentError, "Duplicate key (same priority) contributed to Array Multibinding '#{binding.name}' with unnamed entry."
|
633
|
-
end
|
634
|
-
next
|
635
|
-
elsif !empty_name && priority_on_named
|
636
|
-
if (seen[name] <=> entry) >= 0
|
637
|
-
raise ArgumentError, "Duplicate key (same priority) contributed to Array Multibinding '#{binding.name}', key: '#{name}'."
|
638
|
-
end
|
639
|
-
next
|
640
|
-
end
|
641
|
-
else
|
642
|
-
seen[name] = entry
|
643
|
-
end
|
644
|
-
included_keys << key
|
645
|
-
end
|
646
|
-
result = included_keys.collect do |k|
|
647
|
-
x = injector.lookup_key(scope, k)
|
648
|
-
assert_type(binding(), injector.type_calculator(), x)
|
649
|
-
x
|
650
|
-
end
|
651
|
-
|
652
|
-
result.flatten!(flatten) if flatten
|
653
|
-
result.uniq! if uniq
|
654
|
-
result
|
655
|
-
end
|
656
|
-
|
657
|
-
# @api private
|
658
|
-
def assert_type(binding, tc, value)
|
659
|
-
infered = tc.infer(value)
|
660
|
-
unless tc.assignable?(binding.type.element_type, infered) || tc.assignable?(binding.type, infered)
|
661
|
-
raise ArgumentError, ["Type Error: contribution to '#{binding.name}' does not match type of multibind, ",
|
662
|
-
"#{type_error_detail([binding.type.element_type, binding.type], value)}"].join()
|
663
|
-
end
|
664
|
-
end
|
665
|
-
end
|
666
|
-
|
667
|
-
# @api public
|
668
|
-
class HashMultibindProducer < MultibindProducer
|
669
|
-
|
670
|
-
# @return [Symbol] One of `:error`, `:merge`, `:append`, `:priority`, `:ignore`
|
671
|
-
# @api public
|
672
|
-
attr_reader :conflict_resolution
|
673
|
-
|
674
|
-
# @return [Boolean]
|
675
|
-
# @api public
|
676
|
-
attr_reader :uniq
|
677
|
-
|
678
|
-
# @return [Boolean, Integer] Flatten all if true, or none if false, or to given level (0 = none, -1 = all)
|
679
|
-
# @api public
|
680
|
-
attr_reader :flatten
|
681
|
-
|
682
|
-
# The hash multibind producer provides options to control conflict resolution.
|
683
|
-
# By default, the hash is produced using `:priority` resolution - the highest entry is selected, the rest are
|
684
|
-
# ignored unless they have the same priority which is an error.
|
685
|
-
#
|
686
|
-
# @param injector [Injector] The injector where the lookup originates
|
687
|
-
# @param binding [Bindings::Binding, nil] The binding using this producer
|
688
|
-
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
689
|
-
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
690
|
-
# @option options [Symbol, String] :conflict_resolution (:priority) One of `:error`, `:merge`, `:append`, `:priority`, `:ignore`
|
691
|
-
# <ul><li> `ignore` the first found highest priority contribution is used, the rest are ignored</li>
|
692
|
-
# <li>`error` any duplicate key is an error</li>
|
693
|
-
# <li>`append` element type must be compatible with Array, makes elements be arrays and appends all found</li>
|
694
|
-
# <li>`merge` element type must be compatible with hash, merges hashes with retention of highest priority hash content</li>
|
695
|
-
# <li>`priority` the first found highest priority contribution is used, duplicates with same priority raises and error, the rest are
|
696
|
-
# ignored.</li></ul>
|
697
|
-
# @option options [Boolean, Integer] :flatten (false) If appended should be flattened. Also see {#flatten}.
|
698
|
-
# @option options [Boolean] :uniq (false) If appended result should be made unique.
|
699
|
-
#
|
700
|
-
# @api public
|
701
|
-
#
|
702
|
-
def initialize(injector, binding, scope, options)
|
703
|
-
super
|
704
|
-
@conflict_resolution = options[:conflict_resolution].nil? ? :priority : options[:conflict_resolution]
|
705
|
-
@uniq = !!options[:uniq]
|
706
|
-
@flatten = options[:flatten]
|
707
|
-
|
708
|
-
unless [:error, :merge, :append, :priority, :ignore].include?(@conflict_resolution)
|
709
|
-
raise ArgumentError, "Unknown conflict_resolution for Multibind Hash: '#{@conflict_resolution}."
|
710
|
-
end
|
711
|
-
|
712
|
-
case @flatten
|
713
|
-
when Integer
|
714
|
-
when true
|
715
|
-
@flatten = -1
|
716
|
-
when false
|
717
|
-
@flatten = nil
|
718
|
-
when NilClass
|
719
|
-
@flatten = nil
|
720
|
-
else
|
721
|
-
raise ArgumentError, "Option :flatten must be nil, Boolean, or an integer value" unless @flatten.is_a?(Integer)
|
722
|
-
end
|
723
|
-
|
724
|
-
if uniq || flatten || conflict_resolution.to_s == 'append'
|
725
|
-
etype = binding.type.value_type
|
726
|
-
unless etype.class == Types::PDataType || etype.is_a?(Types::PArrayType)
|
727
|
-
detail = []
|
728
|
-
detail << ":uniq" if uniq
|
729
|
-
detail << ":flatten" if flatten
|
730
|
-
detail << ":conflict_resolution => :append" if conflict_resolution.to_s == 'append'
|
731
|
-
raise ArgumentError, ["Options #{detail.join(', and ')} cannot be used with a Multibind ",
|
732
|
-
"of type #{binding.type}"].join()
|
733
|
-
end
|
734
|
-
end
|
735
|
-
end
|
736
|
-
|
737
|
-
protected
|
738
|
-
|
739
|
-
# @api private
|
740
|
-
def internal_produce(scope)
|
741
|
-
seen = {}
|
742
|
-
included_entries = []
|
743
|
-
|
744
|
-
injector.get_contributions(scope, contributions_key).each do |element|
|
745
|
-
key = element[0]
|
746
|
-
entry = element[1]
|
747
|
-
|
748
|
-
name = entry.binding.name
|
749
|
-
raise ArgumentError, "A Hash Multibind contribution to '#{binding.name}' must have a name." if name.nil? || name.empty?
|
750
|
-
|
751
|
-
existing = seen[name]
|
752
|
-
if existing
|
753
|
-
case conflict_resolution.to_s
|
754
|
-
when 'priority'
|
755
|
-
# skip if duplicate has lower prio
|
756
|
-
if (comparison = (seen[name] <=> entry)) <= 0
|
757
|
-
raise ArgumentError, "Internal Error: contributions not given in decreasing precedence order" unless comparison == 0
|
758
|
-
raise ArgumentError, "Duplicate key (same priority) contributed to Hash Multibinding '#{binding.name}', key: '#{name}'."
|
759
|
-
end
|
760
|
-
next
|
761
|
-
|
762
|
-
when 'ignore'
|
763
|
-
# skip, ignore conflict if prio is the same
|
764
|
-
next
|
765
|
-
|
766
|
-
when 'error'
|
767
|
-
raise ArgumentError, "Duplicate key contributed to Hash Multibinding '#{binding.name}', key: '#{name}'."
|
768
|
-
|
769
|
-
end
|
770
|
-
else
|
771
|
-
seen[name] = entry
|
772
|
-
end
|
773
|
-
included_entries << [key, entry]
|
774
|
-
end
|
775
|
-
result = {}
|
776
|
-
included_entries.each do |element|
|
777
|
-
k = element[ 0 ]
|
778
|
-
entry = element[ 1 ]
|
779
|
-
x = injector.lookup_key(scope, k)
|
780
|
-
name = entry.binding.name
|
781
|
-
assert_type(binding(), injector.type_calculator(), name, x)
|
782
|
-
if result[ name ]
|
783
|
-
merge(result, name, result[ name ], x)
|
784
|
-
else
|
785
|
-
result[ name ] = conflict_resolution().to_s == 'append' ? [x] : x
|
786
|
-
end
|
787
|
-
end
|
788
|
-
result
|
789
|
-
end
|
790
|
-
|
791
|
-
# @api private
|
792
|
-
def merge(result, name, higher, lower)
|
793
|
-
case conflict_resolution.to_s
|
794
|
-
when 'append'
|
795
|
-
unless higher.is_a?(Array)
|
796
|
-
higher = [higher]
|
797
|
-
end
|
798
|
-
tmp = higher + [lower]
|
799
|
-
tmp.flatten!(flatten) if flatten
|
800
|
-
tmp.uniq! if uniq
|
801
|
-
result[name] = tmp
|
802
|
-
|
803
|
-
when 'merge'
|
804
|
-
result[name] = lower.merge(higher)
|
805
|
-
|
806
|
-
end
|
807
|
-
end
|
808
|
-
|
809
|
-
# @api private
|
810
|
-
def assert_type(binding, tc, key, value)
|
811
|
-
unless tc.instance?(binding.type.key_type, key)
|
812
|
-
raise ArgumentError, ["Type Error: key contribution to #{binding.name}['#{key}'] ",
|
813
|
-
"is incompatible with key type: #{tc.label(binding.type)}, ",
|
814
|
-
type_error_detail(binding.type.key_type, key)].join()
|
815
|
-
end
|
816
|
-
|
817
|
-
if key.nil? || !key.is_a?(String) || key.empty?
|
818
|
-
raise ArgumentError, "Entry contributing to multibind hash with id '#{binding.id}' must have a name."
|
819
|
-
end
|
820
|
-
|
821
|
-
unless tc.instance?(binding.type.value_type, value)
|
822
|
-
raise ArgumentError, ["Type Error: value contribution to #{binding.name}['#{key}'] ",
|
823
|
-
"is incompatible, ",
|
824
|
-
type_error_detail(binding.type.value_type, value)].join()
|
825
|
-
end
|
826
|
-
end
|
827
|
-
end
|
828
|
-
|
829
|
-
end
|
830
|
-
end
|
831
|
-
end
|