puppet 8.3.1-x86-mingw32 → 8.4.0-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +51 -43
- data/README.md +4 -4
- data/Rakefile +0 -27
- data/examples/enc/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/windows/service/daemon.rb +4 -5
- data/lib/hiera/puppet_function.rb +3 -2
- data/lib/hiera/scope.rb +2 -2
- data/lib/hiera_puppet.rb +1 -3
- data/lib/puppet/agent/disabler.rb +2 -1
- data/lib/puppet/agent/locker.rb +1 -2
- data/lib/puppet/agent.rb +2 -1
- data/lib/puppet/application/agent.rb +292 -291
- data/lib/puppet/application/apply.rb +143 -139
- data/lib/puppet/application/catalog.rb +1 -0
- data/lib/puppet/application/config.rb +1 -0
- data/lib/puppet/application/describe.rb +53 -55
- data/lib/puppet/application/device.rb +150 -150
- data/lib/puppet/application/doc.rb +60 -59
- data/lib/puppet/application/epp.rb +1 -0
- data/lib/puppet/application/face_base.rb +8 -7
- data/lib/puppet/application/facts.rb +1 -0
- data/lib/puppet/application/filebucket.rb +186 -184
- data/lib/puppet/application/generate.rb +1 -0
- data/lib/puppet/application/help.rb +1 -0
- data/lib/puppet/application/indirection_base.rb +1 -0
- data/lib/puppet/application/lookup.rb +168 -171
- data/lib/puppet/application/module.rb +1 -0
- data/lib/puppet/application/node.rb +1 -0
- data/lib/puppet/application/parser.rb +1 -0
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/report.rb +1 -0
- data/lib/puppet/application/resource.rb +111 -108
- data/lib/puppet/application/script.rb +92 -93
- data/lib/puppet/application/ssl.rb +89 -88
- data/lib/puppet/application.rb +9 -8
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/coercion.rb +3 -2
- data/lib/puppet/compilable_resource_type.rb +1 -0
- data/lib/puppet/concurrent/lock.rb +1 -2
- data/lib/puppet/concurrent/synchronized.rb +1 -2
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/concurrent.rb +1 -0
- data/lib/puppet/configurer/downloader.rb +1 -1
- data/lib/puppet/configurer/fact_handler.rb +2 -1
- data/lib/puppet/configurer/plugin_handler.rb +1 -0
- data/lib/puppet/configurer.rb +17 -13
- data/lib/puppet/confine/any.rb +1 -0
- data/lib/puppet/confine/boolean.rb +1 -0
- data/lib/puppet/confine/exists.rb +1 -0
- data/lib/puppet/confine/false.rb +1 -0
- data/lib/puppet/confine/feature.rb +1 -0
- data/lib/puppet/confine/true.rb +1 -0
- data/lib/puppet/confine/variable.rb +1 -0
- data/lib/puppet/confine.rb +2 -0
- data/lib/puppet/confine_collection.rb +3 -1
- data/lib/puppet/confiner.rb +1 -0
- data/lib/puppet/context/trusted_information.rb +1 -0
- data/lib/puppet/context.rb +1 -0
- data/lib/puppet/daemon.rb +4 -1
- data/lib/puppet/data_binding.rb +2 -1
- data/lib/puppet/datatypes/error.rb +2 -1
- data/lib/puppet/datatypes/impl/error.rb +1 -0
- data/lib/puppet/datatypes.rb +5 -1
- data/lib/puppet/defaults.rb +19 -18
- data/lib/puppet/environments.rb +3 -2
- data/lib/puppet/error.rb +9 -7
- data/lib/puppet/etc.rb +6 -3
- data/lib/puppet/external/dot.rb +12 -31
- data/lib/puppet/face/catalog/select.rb +2 -1
- data/lib/puppet/face/catalog.rb +3 -2
- data/lib/puppet/face/config.rb +18 -20
- data/lib/puppet/face/epp.rb +6 -6
- data/lib/puppet/face/facts.rb +4 -3
- data/lib/puppet/face/generate.rb +2 -0
- data/lib/puppet/face/help.rb +8 -7
- data/lib/puppet/face/module/changes.rb +2 -0
- data/lib/puppet/face/module/install.rb +2 -1
- data/lib/puppet/face/module/list.rb +7 -8
- data/lib/puppet/face/module/uninstall.rb +1 -0
- data/lib/puppet/face/module.rb +1 -0
- data/lib/puppet/face/node/clean.rb +2 -1
- data/lib/puppet/face/node.rb +2 -1
- data/lib/puppet/face/parser.rb +2 -2
- data/lib/puppet/face/plugin.rb +2 -1
- data/lib/puppet/face/report.rb +2 -1
- data/lib/puppet/face/resource.rb +1 -0
- data/lib/puppet/face.rb +1 -0
- data/lib/puppet/feature/base.rb +2 -1
- data/lib/puppet/feature/bolt.rb +1 -0
- data/lib/puppet/feature/cfpropertylist.rb +1 -0
- data/lib/puppet/feature/eventlog.rb +1 -0
- data/lib/puppet/feature/hiera_eyaml.rb +1 -0
- data/lib/puppet/feature/hocon.rb +1 -0
- data/lib/puppet/feature/libuser.rb +4 -3
- data/lib/puppet/feature/msgpack.rb +1 -0
- data/lib/puppet/feature/pe_license.rb +2 -1
- data/lib/puppet/feature/pson.rb +1 -0
- data/lib/puppet/feature/selinux.rb +1 -0
- data/lib/puppet/feature/ssh.rb +1 -0
- data/lib/puppet/feature/telnet.rb +1 -0
- data/lib/puppet/feature/zlib.rb +1 -0
- data/lib/puppet/ffi/posix/constants.rb +1 -0
- data/lib/puppet/ffi/posix/functions.rb +1 -1
- data/lib/puppet/ffi/posix.rb +1 -0
- data/lib/puppet/ffi/windows/api_types.rb +1 -0
- data/lib/puppet/ffi/windows/constants.rb +78 -77
- data/lib/puppet/ffi/windows/functions.rb +73 -73
- data/lib/puppet/ffi/windows/structs.rb +3 -3
- data/lib/puppet/ffi/windows.rb +1 -0
- data/lib/puppet/file_bucket/dipper.rb +7 -1
- data/lib/puppet/file_bucket/file.rb +1 -0
- data/lib/puppet/file_bucket.rb +1 -0
- data/lib/puppet/file_serving/base.rb +13 -6
- data/lib/puppet/file_serving/configuration/parser.rb +3 -1
- data/lib/puppet/file_serving/configuration.rb +5 -3
- data/lib/puppet/file_serving/content.rb +1 -0
- data/lib/puppet/file_serving/fileset.rb +9 -6
- data/lib/puppet/file_serving/http_metadata.rb +1 -3
- data/lib/puppet/file_serving/metadata.rb +9 -10
- data/lib/puppet/file_serving/mount/file.rb +6 -3
- data/lib/puppet/file_serving/mount/locales.rb +2 -1
- data/lib/puppet/file_serving/mount/modules.rb +2 -0
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
- data/lib/puppet/file_serving/mount/plugins.rb +2 -1
- data/lib/puppet/file_serving/mount/scripts.rb +2 -0
- data/lib/puppet/file_serving/mount/tasks.rb +2 -0
- data/lib/puppet/file_serving/mount.rb +2 -0
- data/lib/puppet/file_serving/terminus_helper.rb +1 -0
- data/lib/puppet/file_serving/terminus_selector.rb +1 -0
- data/lib/puppet/file_serving.rb +1 -0
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/jruby.rb +1 -0
- data/lib/puppet/file_system/memory_file.rb +2 -0
- data/lib/puppet/file_system/memory_impl.rb +3 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/posix.rb +5 -1
- data/lib/puppet/file_system/uniquefile.rb +11 -11
- data/lib/puppet/file_system/windows.rb +4 -2
- data/lib/puppet/file_system.rb +3 -2
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/errors.rb +1 -3
- data/lib/puppet/forge/repository.rb +2 -0
- data/lib/puppet/forge.rb +3 -0
- data/lib/puppet/functions/abs.rb +2 -1
- data/lib/puppet/functions/alert.rb +1 -0
- data/lib/puppet/functions/all.rb +1 -0
- data/lib/puppet/functions/annotate.rb +1 -0
- data/lib/puppet/functions/any.rb +1 -0
- data/lib/puppet/functions/assert_type.rb +1 -0
- data/lib/puppet/functions/binary_file.rb +3 -1
- data/lib/puppet/functions/break.rb +2 -1
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +1 -1
- data/lib/puppet/functions/ceiling.rb +2 -2
- data/lib/puppet/functions/chomp.rb +1 -1
- data/lib/puppet/functions/chop.rb +1 -1
- data/lib/puppet/functions/compare.rb +1 -0
- data/lib/puppet/functions/contain.rb +1 -0
- data/lib/puppet/functions/convert_to.rb +1 -0
- data/lib/puppet/functions/crit.rb +1 -0
- data/lib/puppet/functions/debug.rb +1 -0
- data/lib/puppet/functions/defined.rb +7 -4
- data/lib/puppet/functions/dig.rb +10 -8
- data/lib/puppet/functions/downcase.rb +1 -0
- data/lib/puppet/functions/each.rb +1 -0
- data/lib/puppet/functions/emerg.rb +1 -0
- data/lib/puppet/functions/empty.rb +1 -0
- data/lib/puppet/functions/epp.rb +1 -1
- data/lib/puppet/functions/err.rb +1 -0
- data/lib/puppet/functions/eyaml_lookup_key.rb +6 -4
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/find_file.rb +1 -0
- data/lib/puppet/functions/find_template.rb +1 -0
- data/lib/puppet/functions/flatten.rb +1 -0
- data/lib/puppet/functions/floor.rb +2 -2
- data/lib/puppet/functions/get.rb +2 -1
- data/lib/puppet/functions/getvar.rb +2 -1
- data/lib/puppet/functions/hiera.rb +1 -0
- data/lib/puppet/functions/hiera_array.rb +1 -0
- data/lib/puppet/functions/hiera_hash.rb +1 -0
- data/lib/puppet/functions/hiera_include.rb +2 -0
- data/lib/puppet/functions/hocon_data.rb +1 -0
- data/lib/puppet/functions/import.rb +1 -0
- data/lib/puppet/functions/include.rb +1 -0
- data/lib/puppet/functions/index.rb +2 -2
- data/lib/puppet/functions/info.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -1
- data/lib/puppet/functions/join.rb +2 -1
- data/lib/puppet/functions/json_data.rb +1 -0
- data/lib/puppet/functions/keys.rb +1 -0
- data/lib/puppet/functions/length.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -0
- data/lib/puppet/functions/lookup.rb +8 -9
- data/lib/puppet/functions/lstrip.rb +1 -1
- data/lib/puppet/functions/map.rb +1 -0
- data/lib/puppet/functions/match.rb +3 -1
- data/lib/puppet/functions/max.rb +4 -4
- data/lib/puppet/functions/min.rb +4 -4
- data/lib/puppet/functions/module_directory.rb +1 -0
- data/lib/puppet/functions/new.rb +2 -1
- data/lib/puppet/functions/next.rb +1 -0
- data/lib/puppet/functions/notice.rb +1 -0
- data/lib/puppet/functions/reduce.rb +1 -1
- data/lib/puppet/functions/regsubst.rb +1 -0
- data/lib/puppet/functions/require.rb +2 -0
- data/lib/puppet/functions/return.rb +1 -0
- data/lib/puppet/functions/reverse_each.rb +1 -0
- data/lib/puppet/functions/round.rb +1 -0
- data/lib/puppet/functions/rstrip.rb +1 -1
- data/lib/puppet/functions/scanf.rb +1 -0
- data/lib/puppet/functions/size.rb +1 -2
- data/lib/puppet/functions/slice.rb +2 -0
- data/lib/puppet/functions/sort.rb +1 -0
- data/lib/puppet/functions/split.rb +1 -0
- data/lib/puppet/functions/step.rb +1 -0
- data/lib/puppet/functions/strftime.rb +3 -2
- data/lib/puppet/functions/strip.rb +1 -1
- data/lib/puppet/functions/then.rb +2 -0
- data/lib/puppet/functions/tree_each.rb +1 -1
- data/lib/puppet/functions/type.rb +1 -0
- data/lib/puppet/functions/unique.rb +2 -1
- data/lib/puppet/functions/unwrap.rb +1 -0
- data/lib/puppet/functions/upcase.rb +1 -0
- data/lib/puppet/functions/values.rb +1 -0
- data/lib/puppet/functions/versioncmp.rb +2 -2
- data/lib/puppet/functions/warning.rb +1 -0
- data/lib/puppet/functions/with.rb +1 -0
- data/lib/puppet/functions/yaml_data.rb +1 -0
- data/lib/puppet/functions.rb +9 -9
- data/lib/puppet/generate/models/type/property.rb +2 -0
- data/lib/puppet/generate/models/type/type.rb +2 -0
- data/lib/puppet/generate/type.rb +6 -1
- data/lib/puppet/gettext/config.rb +6 -0
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/gettext/stubs.rb +1 -0
- data/lib/puppet/graph/key.rb +1 -0
- data/lib/puppet/graph/prioritizer.rb +1 -0
- data/lib/puppet/graph/rb_tree_map.rb +12 -2
- data/lib/puppet/graph/relationship_graph.rb +3 -2
- data/lib/puppet/graph/sequential_prioritizer.rb +1 -0
- data/lib/puppet/graph/simple_graph.rb +38 -31
- data/lib/puppet/graph.rb +1 -0
- data/lib/puppet/http/client.rb +4 -1
- data/lib/puppet/http/dns.rb +5 -5
- data/lib/puppet/http/errors.rb +1 -0
- data/lib/puppet/http/external_client.rb +2 -2
- data/lib/puppet/http/factory.rb +1 -0
- data/lib/puppet/http/pool.rb +2 -1
- data/lib/puppet/http/pool_entry.rb +1 -0
- data/lib/puppet/http/proxy.rb +3 -2
- data/lib/puppet/http/redirector.rb +1 -0
- data/lib/puppet/http/resolver/server_list.rb +1 -1
- data/lib/puppet/http/resolver/settings.rb +1 -1
- data/lib/puppet/http/resolver/srv.rb +1 -1
- data/lib/puppet/http/resolver.rb +1 -0
- data/lib/puppet/http/response.rb +1 -0
- data/lib/puppet/http/response_converter.rb +1 -0
- data/lib/puppet/http/response_net_http.rb +1 -1
- data/lib/puppet/http/retry_after_handler.rb +1 -1
- data/lib/puppet/http/service/ca.rb +1 -0
- data/lib/puppet/http/service/compiler.rb +9 -3
- data/lib/puppet/http/service/file_server.rb +2 -1
- data/lib/puppet/http/service/puppetserver.rb +1 -1
- data/lib/puppet/http/service/report.rb +1 -1
- data/lib/puppet/http/service.rb +1 -0
- data/lib/puppet/http/session.rb +2 -1
- data/lib/puppet/http/site.rb +1 -0
- data/lib/puppet/http.rb +1 -0
- data/lib/puppet/indirector/catalog/compiler.rb +50 -40
- data/lib/puppet/indirector/catalog/json.rb +1 -0
- data/lib/puppet/indirector/catalog/msgpack.rb +1 -0
- data/lib/puppet/indirector/catalog/rest.rb +9 -0
- data/lib/puppet/indirector/catalog/store_configs.rb +1 -2
- data/lib/puppet/indirector/catalog/yaml.rb +1 -0
- data/lib/puppet/indirector/code.rb +1 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +1 -0
- data/lib/puppet/indirector/data_binding/none.rb +1 -0
- data/lib/puppet/indirector/direct_file_server.rb +3 -1
- data/lib/puppet/indirector/envelope.rb +1 -0
- data/lib/puppet/indirector/errors.rb +1 -0
- data/lib/puppet/indirector/exec.rb +1 -0
- data/lib/puppet/indirector/face.rb +7 -6
- data/lib/puppet/indirector/fact_search.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +2 -0
- data/lib/puppet/indirector/facts/json.rb +1 -0
- data/lib/puppet/indirector/facts/memory.rb +1 -0
- data/lib/puppet/indirector/facts/network_device.rb +1 -0
- data/lib/puppet/indirector/facts/rest.rb +1 -0
- data/lib/puppet/indirector/facts/store_configs.rb +1 -1
- data/lib/puppet/indirector/facts/yaml.rb +1 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -5
- data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -0
- data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -0
- data/lib/puppet/indirector/file_content/file.rb +1 -0
- data/lib/puppet/indirector/file_content/file_server.rb +1 -0
- data/lib/puppet/indirector/file_content/rest.rb +1 -0
- data/lib/puppet/indirector/file_content/selector.rb +1 -0
- data/lib/puppet/indirector/file_content.rb +1 -0
- data/lib/puppet/indirector/file_metadata/file.rb +1 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +1 -0
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
- data/lib/puppet/indirector/file_metadata/selector.rb +1 -0
- data/lib/puppet/indirector/file_metadata.rb +1 -0
- data/lib/puppet/indirector/file_server.rb +2 -0
- data/lib/puppet/indirector/generic_http.rb +1 -0
- data/lib/puppet/indirector/hiera.rb +5 -4
- data/lib/puppet/indirector/indirection.rb +11 -1
- data/lib/puppet/indirector/json.rb +3 -1
- data/lib/puppet/indirector/memory.rb +2 -0
- data/lib/puppet/indirector/msgpack.rb +5 -2
- data/lib/puppet/indirector/node/exec.rb +3 -2
- data/lib/puppet/indirector/node/json.rb +1 -1
- data/lib/puppet/indirector/node/memory.rb +1 -0
- data/lib/puppet/indirector/node/msgpack.rb +1 -0
- data/lib/puppet/indirector/node/plain.rb +1 -0
- data/lib/puppet/indirector/node/rest.rb +1 -0
- data/lib/puppet/indirector/node/store_configs.rb +1 -2
- data/lib/puppet/indirector/node/yaml.rb +1 -0
- data/lib/puppet/indirector/none.rb +1 -0
- data/lib/puppet/indirector/plain.rb +1 -0
- data/lib/puppet/indirector/report/json.rb +1 -0
- data/lib/puppet/indirector/report/msgpack.rb +1 -0
- data/lib/puppet/indirector/report/processor.rb +2 -0
- data/lib/puppet/indirector/report/rest.rb +1 -0
- data/lib/puppet/indirector/report/yaml.rb +1 -0
- data/lib/puppet/indirector/request.rb +7 -5
- data/lib/puppet/indirector/resource/ral.rb +1 -0
- data/lib/puppet/indirector/resource/store_configs.rb +1 -0
- data/lib/puppet/indirector/resource/validator.rb +1 -0
- data/lib/puppet/indirector/rest.rb +1 -0
- data/lib/puppet/indirector/store_configs.rb +1 -0
- data/lib/puppet/indirector/terminus.rb +4 -1
- data/lib/puppet/indirector/yaml.rb +1 -0
- data/lib/puppet/indirector.rb +2 -0
- data/lib/puppet/info_service/class_information_service.rb +5 -3
- data/lib/puppet/info_service/plan_information_service.rb +1 -0
- data/lib/puppet/info_service/task_information_service.rb +1 -0
- data/lib/puppet/interface/action.rb +32 -27
- data/lib/puppet/interface/action_builder.rb +14 -14
- data/lib/puppet/interface/action_manager.rb +2 -0
- data/lib/puppet/interface/documentation.rb +21 -15
- data/lib/puppet/interface/face_collection.rb +5 -2
- data/lib/puppet/interface/option.rb +15 -4
- data/lib/puppet/interface/option_builder.rb +13 -9
- data/lib/puppet/interface/option_manager.rb +3 -2
- data/lib/puppet/interface.rb +3 -3
- data/lib/puppet/loaders.rb +1 -1
- data/lib/puppet/metatype/manager.rb +9 -8
- data/lib/puppet/module/plan.rb +10 -4
- data/lib/puppet/module/task.rb +8 -2
- data/lib/puppet/module.rb +13 -3
- data/lib/puppet/module_tool/applications/application.rb +6 -4
- data/lib/puppet/module_tool/applications/checksummer.rb +1 -2
- data/lib/puppet/module_tool/applications/installer.rb +32 -45
- data/lib/puppet/module_tool/applications/uninstaller.rb +22 -21
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +28 -26
- data/lib/puppet/module_tool/applications.rb +1 -0
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/contents_description.rb +1 -2
- data/lib/puppet/module_tool/dependency.rb +1 -1
- data/lib/puppet/module_tool/errors/base.rb +1 -0
- data/lib/puppet/module_tool/errors/installer.rb +4 -4
- data/lib/puppet/module_tool/errors/shared.rb +12 -12
- data/lib/puppet/module_tool/errors/uninstaller.rb +2 -2
- data/lib/puppet/module_tool/errors/upgrader.rb +3 -3
- data/lib/puppet/module_tool/errors.rb +1 -0
- data/lib/puppet/module_tool/install_directory.rb +6 -4
- data/lib/puppet/module_tool/installed_modules.rb +2 -0
- data/lib/puppet/module_tool/local_tarball.rb +3 -0
- data/lib/puppet/module_tool/metadata.rb +21 -20
- data/lib/puppet/module_tool/shared_behaviors.rb +23 -21
- data/lib/puppet/module_tool/tar/gnu.rb +1 -0
- data/lib/puppet/module_tool/tar/mini.rb +1 -0
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool.rb +1 -1
- data/lib/puppet/network/authconfig.rb +1 -0
- data/lib/puppet/network/authorization.rb +1 -0
- data/lib/puppet/network/client_request.rb +1 -0
- data/lib/puppet/network/format.rb +5 -0
- data/lib/puppet/network/format_handler.rb +2 -1
- data/lib/puppet/network/format_support.rb +6 -5
- data/lib/puppet/network/formats.rb +15 -11
- data/lib/puppet/network/http/api/indirected_routes.rb +8 -8
- data/lib/puppet/network/http/api/indirection_type.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environments.rb +1 -0
- data/lib/puppet/network/http/api/master/v3.rb +1 -0
- data/lib/puppet/network/http/api/master.rb +1 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +20 -14
- data/lib/puppet/network/http/api/server/v3.rb +13 -13
- data/lib/puppet/network/http/api/server.rb +1 -0
- data/lib/puppet/network/http/api.rb +11 -10
- data/lib/puppet/network/http/connection.rb +1 -0
- data/lib/puppet/network/http/error.rb +2 -1
- data/lib/puppet/network/http/handler.rb +3 -2
- data/lib/puppet/network/http/issues.rb +1 -0
- data/lib/puppet/network/http/memory_response.rb +1 -0
- data/lib/puppet/network/http/request.rb +13 -6
- data/lib/puppet/network/http/response.rb +1 -0
- data/lib/puppet/network/http/route.rb +4 -2
- data/lib/puppet/network/http.rb +1 -0
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/network/uri.rb +1 -0
- data/lib/puppet/network.rb +1 -0
- data/lib/puppet/node/environment.rb +12 -9
- data/lib/puppet/node/facts.rb +2 -1
- data/lib/puppet/node.rb +3 -2
- data/lib/puppet/pal/catalog_compiler.rb +1 -3
- data/lib/puppet/pal/compiler.rb +6 -2
- data/lib/puppet/pal/function_signature.rb +2 -1
- data/lib/puppet/pal/json_catalog_encoder.rb +5 -1
- data/lib/puppet/pal/pal_api.rb +1 -0
- data/lib/puppet/pal/pal_impl.rb +20 -19
- data/lib/puppet/pal/plan_signature.rb +2 -1
- data/lib/puppet/pal/script_compiler.rb +3 -2
- data/lib/puppet/pal/task_signature.rb +14 -9
- data/lib/puppet/parameter/boolean.rb +1 -0
- data/lib/puppet/parameter/package_options.rb +1 -0
- data/lib/puppet/parameter/path.rb +3 -0
- data/lib/puppet/parameter/value.rb +1 -0
- data/lib/puppet/parameter/value_collection.rb +5 -5
- data/lib/puppet/parameter.rb +4 -3
- data/lib/puppet/parser/abstract_compiler.rb +0 -2
- data/lib/puppet/parser/ast/block_expression.rb +1 -0
- data/lib/puppet/parser/ast/branch.rb +1 -0
- data/lib/puppet/parser/ast/hostclass.rb +1 -0
- data/lib/puppet/parser/ast/leaf.rb +2 -0
- data/lib/puppet/parser/ast/node.rb +1 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -6
- data/lib/puppet/parser/ast/resource.rb +2 -3
- data/lib/puppet/parser/ast/resource_instance.rb +2 -0
- data/lib/puppet/parser/ast/resourceparam.rb +6 -5
- data/lib/puppet/parser/ast/top_level_construct.rb +1 -0
- data/lib/puppet/parser/ast.rb +4 -3
- data/lib/puppet/parser/catalog_compiler.rb +1 -2
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +3 -0
- data/lib/puppet/parser/compiler/catalog_validator.rb +1 -0
- data/lib/puppet/parser/compiler.rb +10 -8
- data/lib/puppet/parser/e4_parser_adapter.rb +15 -15
- data/lib/puppet/parser/files.rb +1 -1
- data/lib/puppet/parser/functions/assert_type.rb +55 -54
- data/lib/puppet/parser/functions/binary_file.rb +19 -18
- data/lib/puppet/parser/functions/break.rb +35 -34
- data/lib/puppet/parser/functions/contain.rb +1 -0
- data/lib/puppet/parser/functions/create_resources.rb +8 -6
- data/lib/puppet/parser/functions/defined.rb +102 -101
- data/lib/puppet/parser/functions/dig.rb +33 -32
- data/lib/puppet/parser/functions/digest.rb +1 -0
- data/lib/puppet/parser/functions/each.rb +99 -98
- data/lib/puppet/parser/functions/epp.rb +2 -2
- data/lib/puppet/parser/functions/fail.rb +9 -8
- data/lib/puppet/parser/functions/file.rb +14 -13
- data/lib/puppet/parser/functions/filter.rb +74 -73
- data/lib/puppet/parser/functions/find_file.rb +22 -21
- data/lib/puppet/parser/functions/fqdn_rand.rb +23 -22
- data/lib/puppet/parser/functions/generate.rb +20 -20
- data/lib/puppet/parser/functions/hiera.rb +94 -93
- data/lib/puppet/parser/functions/hiera_array.rb +82 -81
- data/lib/puppet/parser/functions/hiera_hash.rb +92 -91
- data/lib/puppet/parser/functions/hiera_include.rb +92 -91
- data/lib/puppet/parser/functions/include.rb +2 -1
- data/lib/puppet/parser/functions/inline_epp.rb +2 -2
- data/lib/puppet/parser/functions/inline_template.rb +11 -11
- data/lib/puppet/parser/functions/lest.rb +44 -43
- data/lib/puppet/parser/functions/lookup.rb +131 -130
- data/lib/puppet/parser/functions/map.rb +71 -70
- data/lib/puppet/parser/functions/match.rb +39 -38
- data/lib/puppet/parser/functions/md5.rb +2 -1
- data/lib/puppet/parser/functions/new.rb +985 -984
- data/lib/puppet/parser/functions/next.rb +34 -33
- data/lib/puppet/parser/functions/realize.rb +9 -9
- data/lib/puppet/parser/functions/reduce.rb +132 -131
- data/lib/puppet/parser/functions/regsubst.rb +6 -5
- data/lib/puppet/parser/functions/require.rb +5 -4
- data/lib/puppet/parser/functions/return.rb +88 -87
- data/lib/puppet/parser/functions/reverse_each.rb +78 -77
- data/lib/puppet/parser/functions/scanf.rb +28 -27
- data/lib/puppet/parser/functions/sha1.rb +2 -1
- data/lib/puppet/parser/functions/sha256.rb +1 -0
- data/lib/puppet/parser/functions/shellquote.rb +1 -0
- data/lib/puppet/parser/functions/slice.rb +34 -33
- data/lib/puppet/parser/functions/split.rb +5 -6
- data/lib/puppet/parser/functions/sprintf.rb +3 -3
- data/lib/puppet/parser/functions/step.rb +79 -78
- data/lib/puppet/parser/functions/strftime.rb +180 -179
- data/lib/puppet/parser/functions/tag.rb +7 -6
- data/lib/puppet/parser/functions/tagged.rb +13 -12
- data/lib/puppet/parser/functions/template.rb +24 -23
- data/lib/puppet/parser/functions/then.rb +68 -67
- data/lib/puppet/parser/functions/type.rb +48 -47
- data/lib/puppet/parser/functions/versioncmp.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +23 -22
- data/lib/puppet/parser/functions.rb +2 -0
- data/lib/puppet/parser/parser_factory.rb +1 -0
- data/lib/puppet/parser/relationship.rb +3 -0
- data/lib/puppet/parser/resource/param.rb +1 -0
- data/lib/puppet/parser/resource.rb +10 -4
- data/lib/puppet/parser/scope.rb +40 -32
- data/lib/puppet/parser/script_compiler.rb +5 -6
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/parser/type_loader.rb +19 -17
- data/lib/puppet/parser.rb +1 -0
- data/lib/puppet/plugins/configuration.rb +1 -0
- data/lib/puppet/plugins/syntax_checkers.rb +1 -1
- data/lib/puppet/plugins.rb +1 -0
- data/lib/puppet/pops/adaptable.rb +3 -1
- data/lib/puppet/pops/adapters.rb +3 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +79 -65
- data/lib/puppet/pops/evaluator/callable_signature.rb +1 -1
- data/lib/puppet/pops/evaluator/closure.rb +273 -277
- data/lib/puppet/pops/evaluator/collector_transformer.rb +11 -9
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -0
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +15 -3
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +2 -2
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +10 -10
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +140 -138
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +2 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/puppet_proc.rb +2 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +5 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +21 -19
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +31 -33
- data/lib/puppet/pops/evaluator/runtime3_support.rb +16 -19
- data/lib/puppet/pops/functions/dispatch.rb +1 -0
- data/lib/puppet/pops/functions/dispatcher.rb +1 -1
- data/lib/puppet/pops/functions/function.rb +1 -2
- data/lib/puppet/pops/issue_reporter.rb +19 -17
- data/lib/puppet/pops/issues.rb +8 -4
- data/lib/puppet/pops/label_provider.rb +1 -0
- data/lib/puppet/pops/loader/base_loader.rb +2 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +3 -0
- data/lib/puppet/pops/loader/gem_support.rb +3 -1
- data/lib/puppet/pops/loader/generic_plan_instantiator.rb +1 -0
- data/lib/puppet/pops/loader/loader.rb +1 -2
- data/lib/puppet/pops/loader/loader_paths.rb +20 -19
- data/lib/puppet/pops/loader/module_loaders.rb +28 -28
- data/lib/puppet/pops/loader/predefined_loader.rb +1 -2
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +4 -2
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +4 -2
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +4 -1
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +4 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -2
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +2 -2
- data/lib/puppet/pops/loader/simple_environment_loader.rb +1 -2
- data/lib/puppet/pops/loader/static_loader.rb +22 -21
- data/lib/puppet/pops/loader/task_instantiator.rb +1 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +6 -4
- data/lib/puppet/pops/loader/typed_name.rb +1 -0
- data/lib/puppet/pops/loader/uri_helper.rb +1 -0
- data/lib/puppet/pops/loaders.rb +21 -18
- data/lib/puppet/pops/lookup/configured_data_provider.rb +1 -0
- data/lib/puppet/pops/lookup/context.rb +24 -23
- data/lib/puppet/pops/lookup/data_adapter.rb +1 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +2 -2
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +1 -0
- data/lib/puppet/pops/lookup/data_provider.rb +1 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +1 -0
- data/lib/puppet/pops/lookup/explainer.rb +34 -33
- data/lib/puppet/pops/lookup/function_provider.rb +7 -6
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +136 -100
- data/lib/puppet/pops/lookup/interpolation.rb +5 -1
- data/lib/puppet/pops/lookup/invocation.rb +3 -0
- data/lib/puppet/pops/lookup/key_recorder.rb +3 -1
- data/lib/puppet/pops/lookup/location_resolver.rb +2 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +22 -20
- data/lib/puppet/pops/lookup/lookup_key.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +1 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +3 -1
- data/lib/puppet/pops/lookup/sub_lookup.rb +5 -2
- data/lib/puppet/pops/lookup.rb +13 -8
- data/lib/puppet/pops/merge_strategy.rb +5 -2
- data/lib/puppet/pops/migration/migration_checker.rb +3 -1
- data/lib/puppet/pops/model/ast.rb +786 -685
- data/lib/puppet/pops/model/ast_transformer.rb +4 -3
- data/lib/puppet/pops/model/factory.rb +17 -13
- data/lib/puppet/pops/model/model_label_provider.rb +1 -1
- data/lib/puppet/pops/model/model_tree_dumper.rb +10 -9
- data/lib/puppet/pops/model/pn_transformer.rb +4 -6
- data/lib/puppet/pops/model/tree_dumper.rb +2 -0
- data/lib/puppet/pops/parser/code_merger.rb +0 -1
- data/lib/puppet/pops/parser/epp_parser.rb +1 -1
- data/lib/puppet/pops/parser/epp_support.rb +2 -2
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +6 -7
- data/lib/puppet/pops/parser/interpolation_support.rb +2 -3
- data/lib/puppet/pops/parser/lexer2.rb +32 -29
- data/lib/puppet/pops/parser/lexer_support.rb +38 -41
- data/lib/puppet/pops/parser/locatable.rb +1 -2
- data/lib/puppet/pops/parser/locator.rb +31 -28
- data/lib/puppet/pops/parser/parser_support.rb +2 -0
- data/lib/puppet/pops/parser/pn_parser.rb +1 -1
- data/lib/puppet/pops/parser/slurp_support.rb +33 -32
- data/lib/puppet/pops/patterns.rb +2 -3
- data/lib/puppet/pops/pcore.rb +2 -2
- data/lib/puppet/pops/pn.rb +3 -0
- data/lib/puppet/pops/puppet_stack.rb +1 -0
- data/lib/puppet/pops/resource/param.rb +11 -10
- data/lib/puppet/pops/resource/resource_type_impl.rb +37 -36
- data/lib/puppet/pops/semantic_error.rb +1 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +3 -2
- data/lib/puppet/pops/serialization/abstract_writer.rb +5 -4
- data/lib/puppet/pops/serialization/deserializer.rb +2 -0
- data/lib/puppet/pops/serialization/extension.rb +7 -0
- data/lib/puppet/pops/serialization/from_data_converter.rb +3 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +1 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +1 -0
- data/lib/puppet/pops/serialization/json.rb +6 -3
- data/lib/puppet/pops/serialization/json_path.rb +1 -0
- data/lib/puppet/pops/serialization/object.rb +4 -1
- data/lib/puppet/pops/serialization/serializer.rb +6 -2
- data/lib/puppet/pops/serialization/time_factory.rb +1 -1
- data/lib/puppet/pops/serialization/to_data_converter.rb +4 -2
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +2 -2
- data/lib/puppet/pops/serialization.rb +1 -0
- data/lib/puppet/pops/time/timespan.rb +12 -2
- data/lib/puppet/pops/time/timestamp.rb +4 -0
- data/lib/puppet/pops/types/annotatable.rb +1 -1
- data/lib/puppet/pops/types/annotation.rb +1 -0
- data/lib/puppet/pops/types/class_loader.rb +8 -6
- data/lib/puppet/pops/types/implementation_registry.rb +1 -0
- data/lib/puppet/pops/types/iterable.rb +18 -9
- data/lib/puppet/pops/types/p_binary_type.rb +2 -3
- data/lib/puppet/pops/types/p_init_type.rb +12 -9
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +65 -42
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -7
- data/lib/puppet/pops/types/p_runtime_type.rb +11 -9
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +5 -5
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -4
- data/lib/puppet/pops/types/p_timespan_type.rb +4 -2
- data/lib/puppet/pops/types/p_timestamp_type.rb +3 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +36 -28
- data/lib/puppet/pops/types/p_uri_type.rb +25 -18
- data/lib/puppet/pops/types/puppet_object.rb +1 -1
- data/lib/puppet/pops/types/recursion_guard.rb +7 -2
- data/lib/puppet/pops/types/ruby_generator.rb +7 -4
- data/lib/puppet/pops/types/ruby_method.rb +6 -5
- data/lib/puppet/pops/types/string_converter.rb +65 -57
- data/lib/puppet/pops/types/tree_iterators.rb +6 -7
- data/lib/puppet/pops/types/type_acceptor.rb +1 -0
- data/lib/puppet/pops/types/type_asserter.rb +1 -0
- data/lib/puppet/pops/types/type_assertion_error.rb +0 -1
- data/lib/puppet/pops/types/type_calculator.rb +10 -4
- data/lib/puppet/pops/types/type_conversion_error.rb +1 -10
- data/lib/puppet/pops/types/type_factory.rb +7 -4
- data/lib/puppet/pops/types/type_formatter.rb +12 -11
- data/lib/puppet/pops/types/type_mismatch_describer.rb +13 -8
- data/lib/puppet/pops/types/type_parser.rb +111 -107
- data/lib/puppet/pops/types/type_set_reference.rb +2 -0
- data/lib/puppet/pops/types/type_with_members.rb +1 -1
- data/lib/puppet/pops/types/types.rb +177 -152
- data/lib/puppet/pops/utils.rb +1 -0
- data/lib/puppet/pops/validation/checker4_0.rb +17 -11
- data/lib/puppet/pops/validation/tasks_checker.rb +2 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/pops/validation.rb +8 -6
- data/lib/puppet/pops/visitable.rb +1 -0
- data/lib/puppet/pops/visitor.rb +14 -1
- data/lib/puppet/pops.rb +2 -0
- data/lib/puppet/property/boolean.rb +1 -0
- data/lib/puppet/property/ensure.rb +4 -1
- data/lib/puppet/property/keyvalue.rb +5 -4
- data/lib/puppet/property/list.rb +5 -5
- data/lib/puppet/property/ordered_list.rb +4 -4
- data/lib/puppet/property.rb +13 -11
- data/lib/puppet/provider/aix_object.rb +5 -0
- data/lib/puppet/provider/command.rb +1 -0
- data/lib/puppet/provider/confine.rb +1 -0
- data/lib/puppet/provider/exec/posix.rb +2 -0
- data/lib/puppet/provider/exec/shell.rb +1 -0
- data/lib/puppet/provider/exec/windows.rb +2 -1
- data/lib/puppet/provider/exec.rb +1 -0
- data/lib/puppet/provider/file/posix.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +10 -6
- data/lib/puppet/provider/group/aix.rb +1 -0
- data/lib/puppet/provider/group/directoryservice.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +9 -4
- data/lib/puppet/provider/group/ldap.rb +2 -0
- data/lib/puppet/provider/group/pw.rb +1 -0
- data/lib/puppet/provider/group/windows_adsi.rb +2 -0
- data/lib/puppet/provider/ldap.rb +2 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +28 -19
- data/lib/puppet/provider/nameservice/objectadd.rb +1 -0
- data/lib/puppet/provider/nameservice/pw.rb +6 -5
- data/lib/puppet/provider/nameservice.rb +8 -4
- data/lib/puppet/provider/network_device.rb +1 -2
- data/lib/puppet/provider/package/aix.rb +5 -4
- data/lib/puppet/provider/package/appdmg.rb +20 -19
- data/lib/puppet/provider/package/apple.rb +3 -2
- data/lib/puppet/provider/package/apt.rb +4 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -0
- data/lib/puppet/provider/package/aptrpm.rb +2 -1
- data/lib/puppet/provider/package/blastwave.rb +6 -6
- data/lib/puppet/provider/package/dnf.rb +2 -0
- data/lib/puppet/provider/package/dnfmodule.rb +8 -7
- data/lib/puppet/provider/package/dpkg.rb +4 -4
- data/lib/puppet/provider/package/fink.rb +2 -1
- data/lib/puppet/provider/package/freebsd.rb +3 -2
- data/lib/puppet/provider/package/gem.rb +9 -5
- data/lib/puppet/provider/package/hpux.rb +4 -3
- data/lib/puppet/provider/package/macports.rb +2 -1
- data/lib/puppet/provider/package/nim.rb +13 -15
- data/lib/puppet/provider/package/openbsd.rb +6 -4
- data/lib/puppet/provider/package/opkg.rb +2 -0
- data/lib/puppet/provider/package/pacman.rb +12 -12
- data/lib/puppet/provider/package/pip.rb +3 -1
- data/lib/puppet/provider/package/pip2.rb +2 -2
- data/lib/puppet/provider/package/pip3.rb +2 -2
- data/lib/puppet/provider/package/pkg.rb +17 -13
- data/lib/puppet/provider/package/pkgdmg.rb +7 -2
- data/lib/puppet/provider/package/pkgin.rb +5 -5
- data/lib/puppet/provider/package/pkgng.rb +11 -7
- data/lib/puppet/provider/package/pkgutil.rb +7 -6
- data/lib/puppet/provider/package/portage.rb +11 -6
- data/lib/puppet/provider/package/ports.rb +6 -5
- data/lib/puppet/provider/package/portupgrade.rb +6 -12
- data/lib/puppet/provider/package/puppet_gem.rb +1 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -0
- data/lib/puppet/provider/package/rpm.rb +10 -6
- data/lib/puppet/provider/package/rug.rb +2 -1
- data/lib/puppet/provider/package/sun.rb +20 -17
- data/lib/puppet/provider/package/sunfreeware.rb +1 -0
- data/lib/puppet/provider/package/tdnf.rb +1 -0
- data/lib/puppet/provider/package/up2date.rb +2 -1
- data/lib/puppet/provider/package/urpmi.rb +1 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -0
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -0
- data/lib/puppet/provider/package/windows/package.rb +5 -3
- data/lib/puppet/provider/package/windows.rb +4 -2
- data/lib/puppet/provider/package/yum.rb +16 -13
- data/lib/puppet/provider/package/zypper.rb +15 -14
- data/lib/puppet/provider/package.rb +7 -6
- data/lib/puppet/provider/package_targetable.rb +1 -0
- data/lib/puppet/provider/parsedfile.rb +7 -2
- data/lib/puppet/provider/service/base.rb +2 -1
- data/lib/puppet/provider/service/bsd.rb +1 -0
- data/lib/puppet/provider/service/daemontools.rb +9 -7
- data/lib/puppet/provider/service/debian.rb +4 -3
- data/lib/puppet/provider/service/freebsd.rb +5 -6
- data/lib/puppet/provider/service/gentoo.rb +5 -4
- data/lib/puppet/provider/service/init.rb +10 -11
- data/lib/puppet/provider/service/launchd.rb +10 -4
- data/lib/puppet/provider/service/openbsd.rb +4 -4
- data/lib/puppet/provider/service/openrc.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +1 -0
- data/lib/puppet/provider/service/redhat.rb +3 -2
- data/lib/puppet/provider/service/runit.rb +8 -7
- data/lib/puppet/provider/service/service.rb +1 -0
- data/lib/puppet/provider/service/smf.rb +5 -2
- data/lib/puppet/provider/service/src.rb +16 -16
- data/lib/puppet/provider/service/systemd.rb +8 -4
- data/lib/puppet/provider/service/upstart.rb +8 -7
- data/lib/puppet/provider/service/windows.rb +22 -26
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/directoryservice.rb +52 -44
- data/lib/puppet/provider/user/hpux.rb +15 -14
- data/lib/puppet/provider/user/ldap.rb +8 -6
- data/lib/puppet/provider/user/openbsd.rb +21 -20
- data/lib/puppet/provider/user/pw.rb +3 -2
- data/lib/puppet/provider/user/user_role_add.rb +19 -14
- data/lib/puppet/provider/user/useradd.rb +51 -41
- data/lib/puppet/provider/user/windows_adsi.rb +4 -1
- data/lib/puppet/provider.rb +9 -9
- data/lib/puppet/reference/configuration.rb +43 -42
- data/lib/puppet/reference/function.rb +1 -0
- data/lib/puppet/reference/indirection.rb +42 -41
- data/lib/puppet/reference/metaparameter.rb +1 -0
- data/lib/puppet/reference/providers.rb +2 -0
- data/lib/puppet/reference/report.rb +1 -0
- data/lib/puppet/reference/type.rb +4 -3
- data/lib/puppet/relationship.rb +3 -2
- data/lib/puppet/reports/http.rb +1 -1
- data/lib/puppet/reports/log.rb +1 -0
- data/lib/puppet/reports/store.rb +3 -1
- data/lib/puppet/reports.rb +4 -3
- data/lib/puppet/resource/catalog.rb +14 -10
- data/lib/puppet/resource/status.rb +1 -1
- data/lib/puppet/resource/type.rb +28 -18
- data/lib/puppet/resource/type_collection.rb +4 -0
- data/lib/puppet/resource.rb +24 -16
- data/lib/puppet/runtime.rb +1 -0
- data/lib/puppet/scheduler/job.rb +1 -0
- data/lib/puppet/scheduler/scheduler.rb +1 -0
- data/lib/puppet/scheduler/splay_job.rb +1 -0
- data/lib/puppet/scheduler/timer.rb +1 -0
- data/lib/puppet/scheduler.rb +1 -0
- data/lib/puppet/settings/alias_setting.rb +1 -0
- data/lib/puppet/settings/array_setting.rb +1 -1
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +9 -5
- data/lib/puppet/settings/boolean_setting.rb +1 -0
- data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +3 -3
- data/lib/puppet/settings/directory_setting.rb +1 -0
- data/lib/puppet/settings/duration_setting.rb +1 -0
- data/lib/puppet/settings/enum_setting.rb +2 -1
- data/lib/puppet/settings/environment_conf.rb +9 -8
- data/lib/puppet/settings/errors.rb +2 -0
- data/lib/puppet/settings/file_or_directory_setting.rb +1 -5
- data/lib/puppet/settings/file_setting.rb +3 -13
- data/lib/puppet/settings/http_extra_headers_setting.rb +1 -1
- data/lib/puppet/settings/ini_file.rb +1 -0
- data/lib/puppet/settings/integer_setting.rb +1 -0
- data/lib/puppet/settings/path_setting.rb +1 -0
- data/lib/puppet/settings/port_setting.rb +2 -1
- data/lib/puppet/settings/priority_setting.rb +9 -8
- data/lib/puppet/settings/server_list_setting.rb +2 -2
- data/lib/puppet/settings/string_setting.rb +1 -0
- data/lib/puppet/settings/symbolic_enum_setting.rb +2 -1
- data/lib/puppet/settings/terminus_setting.rb +1 -0
- data/lib/puppet/settings/ttl_setting.rb +2 -0
- data/lib/puppet/settings/value_translator.rb +8 -7
- data/lib/puppet/settings.rb +89 -66
- data/lib/puppet/ssl/base.rb +4 -0
- data/lib/puppet/ssl/certificate.rb +3 -2
- data/lib/puppet/ssl/certificate_request.rb +9 -7
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -1
- data/lib/puppet/ssl/certificate_signer.rb +2 -3
- data/lib/puppet/ssl/digest.rb +1 -0
- data/lib/puppet/ssl/error.rb +2 -0
- data/lib/puppet/ssl/oids.rb +3 -3
- data/lib/puppet/ssl/openssl_loader.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +11 -15
- data/lib/puppet/ssl/ssl_provider.rb +2 -1
- data/lib/puppet/ssl/state_machine.rb +1 -0
- data/lib/puppet/ssl/verifier.rb +2 -2
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/syntax_checkers/base64.rb +2 -1
- data/lib/puppet/syntax_checkers/epp.rb +1 -1
- data/lib/puppet/syntax_checkers/json.rb +1 -2
- data/lib/puppet/syntax_checkers/pp.rb +1 -1
- data/lib/puppet/syntax_checkers.rb +1 -0
- data/lib/puppet/test/test_helper.rb +16 -14
- data/lib/puppet/thread_local.rb +1 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +5 -1
- data/lib/puppet/transaction/event.rb +5 -3
- data/lib/puppet/transaction/event_manager.rb +4 -3
- data/lib/puppet/transaction/persistence.rb +2 -1
- data/lib/puppet/transaction/report.rb +23 -15
- data/lib/puppet/transaction/resource_harness.rb +6 -3
- data/lib/puppet/transaction.rb +11 -6
- data/lib/puppet/trusted_external.rb +8 -4
- data/lib/puppet/type/component.rb +11 -5
- data/lib/puppet/type/exec.rb +26 -10
- data/lib/puppet/type/file/checksum.rb +1 -0
- data/lib/puppet/type/file/checksum_value.rb +3 -2
- data/lib/puppet/type/file/content.rb +16 -13
- data/lib/puppet/type/file/ctime.rb +2 -1
- data/lib/puppet/type/file/data_sync.rb +4 -2
- data/lib/puppet/type/file/ensure.rb +5 -5
- data/lib/puppet/type/file/group.rb +2 -1
- data/lib/puppet/type/file/mode.rb +4 -2
- data/lib/puppet/type/file/mtime.rb +2 -1
- data/lib/puppet/type/file/owner.rb +2 -1
- data/lib/puppet/type/file/selcontext.rb +2 -2
- data/lib/puppet/type/file/source.rb +12 -10
- data/lib/puppet/type/file/target.rb +2 -2
- data/lib/puppet/type/file/type.rb +2 -1
- data/lib/puppet/type/file.rb +22 -13
- data/lib/puppet/type/filebucket.rb +1 -0
- data/lib/puppet/type/group.rb +8 -8
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +21 -21
- data/lib/puppet/type/resources.rb +30 -25
- data/lib/puppet/type/schedule.rb +9 -10
- data/lib/puppet/type/service.rb +9 -7
- data/lib/puppet/type/stage.rb +1 -0
- data/lib/puppet/type/tidy.rb +9 -4
- data/lib/puppet/type/user.rb +28 -24
- data/lib/puppet/type/whit.rb +1 -1
- data/lib/puppet/type.rb +71 -61
- data/lib/puppet/util/at_fork/noop.rb +1 -0
- data/lib/puppet/util/at_fork/solaris.rb +2 -1
- data/lib/puppet/util/at_fork.rb +2 -1
- data/lib/puppet/util/autoload.rb +5 -0
- data/lib/puppet/util/backups.rb +3 -2
- data/lib/puppet/util/character_encoding.rb +1 -0
- data/lib/puppet/util/checksums.rb +11 -9
- data/lib/puppet/util/classgen.rb +8 -13
- data/lib/puppet/util/colors.rb +32 -31
- data/lib/puppet/util/command_line/puppet_option_parser.rb +12 -12
- data/lib/puppet/util/command_line/trollop.rb +693 -690
- data/lib/puppet/util/command_line.rb +1 -0
- data/lib/puppet/util/constant_inflector.rb +3 -3
- data/lib/puppet/util/diff.rb +13 -13
- data/lib/puppet/util/docs.rb +3 -0
- data/lib/puppet/util/errors.rb +1 -0
- data/lib/puppet/util/execution.rb +16 -18
- data/lib/puppet/util/execution_stub.rb +1 -0
- data/lib/puppet/util/feature.rb +1 -0
- data/lib/puppet/util/file_watcher.rb +2 -0
- data/lib/puppet/util/fileparsing.rb +2 -0
- data/lib/puppet/util/filetype.rb +3 -0
- data/lib/puppet/util/http_proxy.rb +1 -0
- data/lib/puppet/util/inifile.rb +3 -3
- data/lib/puppet/util/instance_loader.rb +2 -0
- data/lib/puppet/util/json.rb +1 -0
- data/lib/puppet/util/json_lockfile.rb +3 -1
- data/lib/puppet/util/ldap/connection.rb +19 -18
- data/lib/puppet/util/ldap/generator.rb +1 -0
- data/lib/puppet/util/ldap/manager.rb +3 -2
- data/lib/puppet/util/ldap.rb +1 -0
- data/lib/puppet/util/libuser.rb +1 -1
- data/lib/puppet/util/limits.rb +1 -0
- data/lib/puppet/util/lockfile.rb +1 -0
- data/lib/puppet/util/log/destination.rb +1 -0
- data/lib/puppet/util/log/destinations.rb +14 -13
- data/lib/puppet/util/log.rb +21 -17
- data/lib/puppet/util/logging.rb +18 -14
- data/lib/puppet/util/metaid.rb +1 -0
- data/lib/puppet/util/metric.rb +2 -0
- data/lib/puppet/util/monkey_patches.rb +1 -0
- data/lib/puppet/util/multi_match.rb +4 -1
- data/lib/puppet/util/network_device/base.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +3 -4
- data/lib/puppet/util/network_device/transport/base.rb +0 -1
- data/lib/puppet/util/network_device/transport.rb +1 -0
- data/lib/puppet/util/network_device.rb +1 -0
- data/lib/puppet/util/package/version/debian.rb +5 -3
- data/lib/puppet/util/package/version/gem.rb +2 -0
- data/lib/puppet/util/package/version/pip.rb +7 -2
- data/lib/puppet/util/package/version/range/eq.rb +2 -0
- data/lib/puppet/util/package/version/range/gt.rb +2 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +2 -0
- data/lib/puppet/util/package/version/range/lt.rb +2 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +2 -0
- data/lib/puppet/util/package/version/range/min_max.rb +4 -0
- data/lib/puppet/util/package/version/range/simple.rb +1 -0
- data/lib/puppet/util/package/version/range.rb +3 -0
- data/lib/puppet/util/package/version/rpm.rb +6 -4
- data/lib/puppet/util/package.rb +3 -0
- data/lib/puppet/util/pidlock.rb +7 -7
- data/lib/puppet/util/platform.rb +1 -0
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/posix.rb +8 -5
- data/lib/puppet/util/profiler/aggregate.rb +2 -5
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/profiler/logging.rb +1 -0
- data/lib/puppet/util/profiler/object_counts.rb +1 -0
- data/lib/puppet/util/profiler/wall_clock.rb +1 -0
- data/lib/puppet/util/profiler.rb +1 -0
- data/lib/puppet/util/provider_features.rb +4 -0
- data/lib/puppet/util/psych_support.rb +1 -0
- data/lib/puppet/util/rdoc/code_objects.rb +3 -7
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +37 -50
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -68
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +5 -5
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -0
- data/lib/puppet/util/rdoc/parser.rb +1 -0
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +2 -0
- data/lib/puppet/util/retry_action.rb +3 -3
- data/lib/puppet/util/rpm_compare.rb +6 -3
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -1
- data/lib/puppet/util/selinux.rb +22 -11
- data/lib/puppet/util/skip_tags.rb +1 -0
- data/lib/puppet/util/splayer.rb +1 -0
- data/lib/puppet/util/storage.rb +2 -1
- data/lib/puppet/util/suidmanager.rb +8 -5
- data/lib/puppet/util/symbolic_file_mode.rb +3 -1
- data/lib/puppet/util/tag_set.rb +1 -0
- data/lib/puppet/util/tagging.rb +2 -1
- data/lib/puppet/util/terminal.rb +1 -0
- data/lib/puppet/util/user_attr.rb +1 -0
- data/lib/puppet/util/warnings.rb +3 -0
- data/lib/puppet/util/watched_file.rb +1 -0
- data/lib/puppet/util/watcher/change_watcher.rb +1 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +1 -0
- data/lib/puppet/util/watcher/timer.rb +1 -0
- data/lib/puppet/util/watcher.rb +1 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -0
- data/lib/puppet/util/windows/access_control_list.rb +3 -2
- data/lib/puppet/util/windows/adsi.rb +32 -25
- data/lib/puppet/util/windows/com.rb +5 -3
- data/lib/puppet/util/windows/daemon.rb +33 -33
- data/lib/puppet/util/windows/error.rb +3 -2
- data/lib/puppet/util/windows/eventlog.rb +8 -5
- data/lib/puppet/util/windows/file.rb +30 -24
- data/lib/puppet/util/windows/monkey_patches/process.rb +0 -1
- data/lib/puppet/util/windows/principal.rb +27 -27
- data/lib/puppet/util/windows/process.rb +7 -6
- data/lib/puppet/util/windows/registry.rb +43 -41
- data/lib/puppet/util/windows/root_certs.rb +1 -0
- data/lib/puppet/util/windows/security.rb +43 -44
- data/lib/puppet/util/windows/security_descriptor.rb +1 -0
- data/lib/puppet/util/windows/service.rb +12 -1
- data/lib/puppet/util/windows/sid.rb +6 -6
- data/lib/puppet/util/windows/string.rb +1 -0
- data/lib/puppet/util/windows/user.rb +33 -33
- data/lib/puppet/util/windows.rb +6 -0
- data/lib/puppet/util/yaml.rb +1 -0
- data/lib/puppet/util.rb +18 -20
- data/lib/puppet/vendor.rb +2 -1
- data/lib/puppet/version.rb +3 -1
- data/lib/puppet/x509/cert_provider.rb +7 -1
- data/lib/puppet/x509/pem_store.rb +1 -0
- data/lib/puppet/x509.rb +1 -0
- data/lib/puppet.rb +1 -0
- data/lib/puppet_pal.rb +1 -0
- data/lib/puppet_x.rb +1 -0
- data/locales/puppet.pot +195 -199
- data/man/man5/puppet.conf.5 +2 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/application/agent_spec.rb +13 -0
- data/spec/lib/puppet_spec/puppetserver.rb +1 -0
- data/spec/lib/puppet_spec/verbose.rb +5 -3
- data/spec/unit/agent_spec.rb +2 -7
- data/spec/unit/daemon_spec.rb +3 -20
- data/spec/unit/indirector/catalog/compiler_spec.rb +17 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +17 -0
- data/spec/unit/provider/package/appdmg_spec.rb +1 -1
- data/spec/unit/provider/package/dnf_spec.rb +7 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +22 -2
- data/spec/unit/provider/service/systemd_spec.rb +8 -6
- data/spec/unit/type/exec_spec.rb +14 -9
- data/spec/unit/util/rpm_compare_spec.rb +8 -8
- metadata +2 -3
- data/CONTRIBUTING.md +0 -161
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative 'iterable'
|
3
4
|
require_relative 'recursion_guard'
|
4
5
|
require_relative 'type_acceptor'
|
@@ -15,7 +16,6 @@ require_relative 'puppet_object'
|
|
15
16
|
|
16
17
|
module Puppet::Pops
|
17
18
|
module Types
|
18
|
-
|
19
19
|
# The EMPTY_xxx declarations is for backward compatibility. They should not be explicitly referenced
|
20
20
|
|
21
21
|
# @api private
|
@@ -61,8 +61,10 @@ class TypedModelObject < Object
|
|
61
61
|
]
|
62
62
|
Types.constants.each do |c|
|
63
63
|
next if c == :PType || c == :PHostClassType
|
64
|
+
|
64
65
|
cls = Types.const_get(c)
|
65
66
|
next unless cls.is_a?(Class) && cls < self
|
67
|
+
|
66
68
|
type = cls.register_ptype(loader, ir)
|
67
69
|
types << type unless type.nil?
|
68
70
|
end
|
@@ -74,7 +76,6 @@ end
|
|
74
76
|
# @api public
|
75
77
|
#
|
76
78
|
class PAnyType < TypedModelObject
|
77
|
-
|
78
79
|
def self.register_ptype(loader, ir)
|
79
80
|
@type = Pcore::create_object_type(loader, ir, self, 'Pcore::AnyType', 'Any', EMPTY_HASH)
|
80
81
|
end
|
@@ -133,6 +134,7 @@ class PAnyType < TypedModelObject
|
|
133
134
|
return true if self.class == PAnyType
|
134
135
|
# An empty variant may be assignable to NotUndef[T] if T is assignable to empty variant
|
135
136
|
return _assignable?(o, guard) if is_a?(PNotUndefType) && o.types.empty?
|
137
|
+
|
136
138
|
!o.types.empty? && o.types.all? { |vt| assignable?(vt, guard) }
|
137
139
|
when POptionalType
|
138
140
|
# Assignable if undef and contained type is assignable
|
@@ -162,7 +164,7 @@ class PAnyType < TypedModelObject
|
|
162
164
|
# @param args [Array] the arguments to test
|
163
165
|
# @param block [Proc] block, or nil if not called with a block
|
164
166
|
# @return [Boolean] `true` if this instance is a callable that accepts the given _args_
|
165
|
-
def callable_with?(args,
|
167
|
+
def callable_with?(args, block = nil)
|
166
168
|
false
|
167
169
|
end
|
168
170
|
|
@@ -464,13 +466,12 @@ end
|
|
464
466
|
# @api public
|
465
467
|
#
|
466
468
|
class PTypeType < PTypeWithContainedType
|
467
|
-
|
468
469
|
def self.register_ptype(loader, ir)
|
469
470
|
create_ptype(loader, ir, 'AnyType',
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
471
|
+
'type' => {
|
472
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
473
|
+
KEY_VALUE => nil
|
474
|
+
}
|
474
475
|
)
|
475
476
|
end
|
476
477
|
|
@@ -538,6 +539,7 @@ class PTypeType < PTypeWithContainedType
|
|
538
539
|
return false unless o.is_a?(PTypeType)
|
539
540
|
return true if @type.nil? # wide enough to handle all types
|
540
541
|
return false if o.type.nil? # wider than t
|
542
|
+
|
541
543
|
@type.assignable?(o.type, guard)
|
542
544
|
end
|
543
545
|
end
|
@@ -548,10 +550,10 @@ PType = PTypeType
|
|
548
550
|
class PNotUndefType < PTypeWithContainedType
|
549
551
|
def self.register_ptype(loader, ir)
|
550
552
|
create_ptype(loader, ir, 'AnyType',
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
553
|
+
'type' => {
|
554
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
555
|
+
KEY_VALUE => nil
|
556
|
+
}
|
555
557
|
)
|
556
558
|
end
|
557
559
|
|
@@ -619,6 +621,7 @@ class PUndefType < PAnyType
|
|
619
621
|
DEFAULT = PUndefType.new
|
620
622
|
|
621
623
|
protected
|
624
|
+
|
622
625
|
# @api private
|
623
626
|
def _assignable?(o, guard)
|
624
627
|
o.is_a?(PUndefType)
|
@@ -641,7 +644,7 @@ class PUnitType < PAnyType
|
|
641
644
|
def self.new_function(type)
|
642
645
|
@new_function ||= Puppet::Functions.create_loaded_function(:new_unit, type.loader) do
|
643
646
|
dispatch :from_args do
|
644
|
-
param
|
647
|
+
param 'Any', :from
|
645
648
|
end
|
646
649
|
|
647
650
|
def from_args(from)
|
@@ -680,6 +683,7 @@ class PDefaultType < PAnyType
|
|
680
683
|
DEFAULT = PDefaultType.new
|
681
684
|
|
682
685
|
protected
|
686
|
+
|
683
687
|
# @api private
|
684
688
|
def _assignable?(o, guard)
|
685
689
|
o.is_a?(PDefaultType)
|
@@ -759,8 +763,8 @@ end
|
|
759
763
|
class PEnumType < PScalarDataType
|
760
764
|
def self.register_ptype(loader, ir)
|
761
765
|
create_ptype(loader, ir, 'ScalarDataType',
|
762
|
-
|
763
|
-
|
766
|
+
'values' => PArrayType.new(PStringType::NON_EMPTY),
|
767
|
+
'case_insensitive' => { 'type' => PBooleanType::DEFAULT, 'value' => false })
|
764
768
|
end
|
765
769
|
|
766
770
|
attr_reader :values, :case_insensitive
|
@@ -823,18 +827,19 @@ class PEnumType < PScalarDataType
|
|
823
827
|
# @api private
|
824
828
|
def _assignable?(o, guard)
|
825
829
|
return true if self == o
|
830
|
+
|
826
831
|
svalues = values
|
827
832
|
if svalues.empty?
|
828
833
|
return true if o.is_a?(PStringType) || o.is_a?(PEnumType) || o.is_a?(PPatternType)
|
829
834
|
end
|
830
835
|
case o
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
836
|
+
when PStringType
|
837
|
+
# if the contained string is found in the set of enums
|
838
|
+
instance?(o.value, guard)
|
839
|
+
when PEnumType
|
840
|
+
!o.values.empty? && (case_insensitive? || !o.case_insensitive?) && o.values.all? { |s| instance?(s, guard) }
|
841
|
+
else
|
842
|
+
false
|
838
843
|
end
|
839
844
|
end
|
840
845
|
end
|
@@ -850,17 +855,17 @@ OPTIONAL_FRACTION = '(?:\.\d+)?'
|
|
850
855
|
OPTIONAL_EXPONENT = '(?:[eE]-?\d+)?'
|
851
856
|
FLOAT_DEC = '(?:' + INTEGER_DEC + OPTIONAL_FRACTION + OPTIONAL_EXPONENT + ')'
|
852
857
|
|
853
|
-
INTEGER_PATTERN
|
858
|
+
INTEGER_PATTERN = '\A' + SIGN_PREFIX + '(?:' + INTEGER_DEC + '|' + INTEGER_HEX + '|' + INTEGER_OCT + '|' + INTEGER_BIN + ')\z'
|
854
859
|
INTEGER_PATTERN_LENIENT = '\A' + SIGN_PREFIX + '(?:' + INTEGER_DEC_OR_OCT + '|' + INTEGER_HEX + '|' + INTEGER_BIN + ')\z'
|
855
|
-
FLOAT_PATTERN
|
860
|
+
FLOAT_PATTERN = '\A' + SIGN_PREFIX + '(?:' + FLOAT_DEC + '|' + INTEGER_HEX + '|' + INTEGER_OCT + '|' + INTEGER_BIN + ')\z'
|
856
861
|
|
857
862
|
# @api public
|
858
863
|
#
|
859
864
|
class PNumericType < PScalarDataType
|
860
865
|
def self.register_ptype(loader, ir)
|
861
866
|
create_ptype(loader, ir, 'ScalarDataType',
|
862
|
-
|
863
|
-
|
867
|
+
'from' => { KEY_TYPE => POptionalType.new(PNumericType::DEFAULT), KEY_VALUE => nil },
|
868
|
+
'to' => { KEY_TYPE => POptionalType.new(PNumericType::DEFAULT), KEY_VALUE => nil }
|
864
869
|
)
|
865
870
|
end
|
866
871
|
|
@@ -877,7 +882,7 @@ class PNumericType < PScalarDataType
|
|
877
882
|
end
|
878
883
|
|
879
884
|
dispatch :from_hash do
|
880
|
-
param 'NamedArgs',
|
885
|
+
param 'NamedArgs', :hash_args
|
881
886
|
end
|
882
887
|
|
883
888
|
argument_mismatch :on_error do
|
@@ -940,6 +945,7 @@ class PNumericType < PScalarDataType
|
|
940
945
|
from = -Float::INFINITY if from.nil? || from == :default
|
941
946
|
to = Float::INFINITY if to.nil? || to == :default
|
942
947
|
raise ArgumentError, "'from' must be less or equal to 'to'. Got (#{from}, #{to}" if from > to
|
948
|
+
|
943
949
|
@from = from
|
944
950
|
@to = to
|
945
951
|
end
|
@@ -998,6 +1004,7 @@ class PNumericType < PScalarDataType
|
|
998
1004
|
# @api_private
|
999
1005
|
def _assignable?(o, guard)
|
1000
1006
|
return false unless o.is_a?(self.class)
|
1007
|
+
|
1001
1008
|
# If o min and max are within the range of t
|
1002
1009
|
@from <= o.numeric_from && @to >= o.numeric_to
|
1003
1010
|
end
|
@@ -1033,7 +1040,7 @@ class PIntegerType < PNumericType
|
|
1033
1040
|
# @return [Boolean] `true` if this range is adjacent to the other range
|
1034
1041
|
# @api public
|
1035
1042
|
def adjacent?(o)
|
1036
|
-
o.is_a?(PIntegerType) &&
|
1043
|
+
o.is_a?(PIntegerType) && (@to + 1 == o.from || o.to + 1 == @from)
|
1037
1044
|
end
|
1038
1045
|
|
1039
1046
|
# Concatenates this range with another range provided that the ranges intersect or
|
@@ -1064,6 +1071,7 @@ class PIntegerType < PNumericType
|
|
1064
1071
|
# Returns Float.Infinity if one end of the range is unbound
|
1065
1072
|
def size
|
1066
1073
|
return Float::INFINITY if @from == -Float::INFINITY || @to == Float::INFINITY
|
1074
|
+
|
1067
1075
|
1+(to-from).abs
|
1068
1076
|
end
|
1069
1077
|
|
@@ -1096,17 +1104,17 @@ class PIntegerType < PNumericType
|
|
1096
1104
|
end
|
1097
1105
|
|
1098
1106
|
dispatch :from_args do
|
1099
|
-
param 'Convertible',
|
1107
|
+
param 'Convertible', :from
|
1100
1108
|
optional_param 'Radix', :radix
|
1101
1109
|
optional_param 'Boolean', :abs
|
1102
1110
|
end
|
1103
1111
|
|
1104
1112
|
dispatch :from_hash do
|
1105
|
-
param 'NamedArgs',
|
1113
|
+
param 'NamedArgs', :hash_args
|
1106
1114
|
end
|
1107
1115
|
|
1108
1116
|
argument_mismatch :on_error_hash do
|
1109
|
-
param 'Hash',
|
1117
|
+
param 'Hash', :hash_args
|
1110
1118
|
end
|
1111
1119
|
|
1112
1120
|
argument_mismatch :on_error do
|
@@ -1178,12 +1186,12 @@ class PIntegerType < PNumericType
|
|
1178
1186
|
def assert_radix(radix)
|
1179
1187
|
case radix
|
1180
1188
|
when 2, 8, 10, 16
|
1189
|
+
# do nothing
|
1181
1190
|
else
|
1182
1191
|
raise ArgumentError.new(_("Illegal radix: %{radix}, expected 2, 8, 10, 16, or default") % { radix: radix })
|
1183
1192
|
end
|
1184
1193
|
radix
|
1185
1194
|
end
|
1186
|
-
|
1187
1195
|
end
|
1188
1196
|
end
|
1189
1197
|
|
@@ -1236,7 +1244,7 @@ class PFloatType < PNumericType
|
|
1236
1244
|
end
|
1237
1245
|
|
1238
1246
|
dispatch :from_hash do
|
1239
|
-
param 'NamedArgs',
|
1247
|
+
param 'NamedArgs', :hash_args
|
1240
1248
|
end
|
1241
1249
|
|
1242
1250
|
argument_mismatch :on_error do
|
@@ -1309,10 +1317,10 @@ end
|
|
1309
1317
|
class PCollectionType < PAnyType
|
1310
1318
|
def self.register_ptype(loader, ir)
|
1311
1319
|
create_ptype(loader, ir, 'AnyType',
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1320
|
+
'size_type' => {
|
1321
|
+
KEY_TYPE => POptionalType.new(PTypeType.new(PIntegerType::DEFAULT)),
|
1322
|
+
KEY_VALUE => nil
|
1323
|
+
}
|
1316
1324
|
)
|
1317
1325
|
end
|
1318
1326
|
|
@@ -1366,7 +1374,6 @@ class PCollectionType < PAnyType
|
|
1366
1374
|
self.class == o.class && @size_type == o.size_type
|
1367
1375
|
end
|
1368
1376
|
|
1369
|
-
|
1370
1377
|
DEFAULT_SIZE = PIntegerType.new(0)
|
1371
1378
|
ZERO_SIZE = PIntegerType.new(0, 0)
|
1372
1379
|
NOT_EMPTY_SIZE = PIntegerType.new(1)
|
@@ -1378,22 +1385,22 @@ class PCollectionType < PAnyType
|
|
1378
1385
|
#
|
1379
1386
|
def _assignable?(o, guard)
|
1380
1387
|
case o
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1388
|
+
when PCollectionType
|
1389
|
+
(@size_type || DEFAULT_SIZE).assignable?(o.size_type || DEFAULT_SIZE, guard)
|
1390
|
+
when PTupleType
|
1391
|
+
# compute the tuple's min/max size, and check if that size matches
|
1392
|
+
size_s = size_type || DEFAULT_SIZE
|
1393
|
+
size_o = o.size_type
|
1394
|
+
if size_o.nil?
|
1395
|
+
type_count = o.types.size
|
1396
|
+
size_o = PIntegerType.new(type_count, type_count)
|
1397
|
+
end
|
1398
|
+
size_s.assignable?(size_o)
|
1399
|
+
when PStructType
|
1400
|
+
from = to = o.elements.size
|
1401
|
+
(@size_type || DEFAULT_SIZE).assignable?(PIntegerType.new(from, to), guard)
|
1402
|
+
else
|
1403
|
+
false
|
1397
1404
|
end
|
1398
1405
|
end
|
1399
1406
|
end
|
@@ -1401,10 +1408,10 @@ end
|
|
1401
1408
|
class PIterableType < PTypeWithContainedType
|
1402
1409
|
def self.register_ptype(loader, ir)
|
1403
1410
|
create_ptype(loader, ir, 'AnyType',
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1411
|
+
'type' => {
|
1412
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
1413
|
+
KEY_VALUE => nil
|
1414
|
+
}
|
1408
1415
|
)
|
1409
1416
|
end
|
1410
1417
|
|
@@ -1461,10 +1468,10 @@ end
|
|
1461
1468
|
class PIteratorType < PTypeWithContainedType
|
1462
1469
|
def self.register_ptype(loader, ir)
|
1463
1470
|
create_ptype(loader, ir, 'AnyType',
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1471
|
+
'type' => {
|
1472
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
1473
|
+
KEY_VALUE => nil
|
1474
|
+
}
|
1468
1475
|
)
|
1469
1476
|
end
|
1470
1477
|
|
@@ -1499,10 +1506,10 @@ end
|
|
1499
1506
|
class PStringType < PScalarDataType
|
1500
1507
|
def self.register_ptype(loader, ir)
|
1501
1508
|
create_ptype(loader, ir, 'ScalarDataType',
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1509
|
+
'size_type_or_value' => {
|
1510
|
+
KEY_TYPE => POptionalType.new(PVariantType.new([PStringType::DEFAULT, PTypeType.new(PIntegerType::DEFAULT)])),
|
1511
|
+
KEY_VALUE => nil
|
1512
|
+
})
|
1506
1513
|
end
|
1507
1514
|
|
1508
1515
|
attr_reader :size_type_or_value
|
@@ -1510,7 +1517,7 @@ class PStringType < PScalarDataType
|
|
1510
1517
|
def initialize(size_type_or_value, deprecated_multi_args = EMPTY_ARRAY)
|
1511
1518
|
unless deprecated_multi_args.empty?
|
1512
1519
|
if Puppet[:strict] != :off
|
1513
|
-
#TRANSLATORS 'PStringType#initialize' is a class and method name and should not be translated
|
1520
|
+
# TRANSLATORS 'PStringType#initialize' is a class and method name and should not be translated
|
1514
1521
|
Puppet.warn_once('deprecations', "PStringType#initialize_multi_args",
|
1515
1522
|
_("Passing more than one argument to PStringType#initialize is deprecated"))
|
1516
1523
|
end
|
@@ -1565,7 +1572,7 @@ class PStringType < PScalarDataType
|
|
1565
1572
|
# @api private
|
1566
1573
|
def values
|
1567
1574
|
if Puppet[:strict] != :off
|
1568
|
-
#TRANSLATORS 'PStringType#values' and '#value' are classes and method names and should not be translated
|
1575
|
+
# TRANSLATORS 'PStringType#values' and '#value' are classes and method names and should not be translated
|
1569
1576
|
Puppet.warn_once('deprecations', "PStringType#values", _("Method PStringType#values is deprecated. Use #value instead"))
|
1570
1577
|
end
|
1571
1578
|
@value.is_a?(String) ? [@value] : EMPTY_ARRAY
|
@@ -1673,13 +1680,12 @@ end
|
|
1673
1680
|
class PRegexpType < PScalarType
|
1674
1681
|
def self.register_ptype(loader, ir)
|
1675
1682
|
create_ptype(loader, ir, 'ScalarType',
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1683
|
+
'pattern' => {
|
1684
|
+
KEY_TYPE => PVariantType.new([PUndefType::DEFAULT, PStringType::DEFAULT, PRegexpType::DEFAULT]),
|
1685
|
+
KEY_VALUE => nil
|
1686
|
+
})
|
1680
1687
|
end
|
1681
1688
|
|
1682
|
-
|
1683
1689
|
# Returns a new function that produces a Regexp instance
|
1684
1690
|
#
|
1685
1691
|
def self.new_function(type)
|
@@ -1805,6 +1811,7 @@ class PPatternType < PScalarDataType
|
|
1805
1811
|
#
|
1806
1812
|
def _assignable?(o, guard)
|
1807
1813
|
return true if self == o
|
1814
|
+
|
1808
1815
|
case o
|
1809
1816
|
when PStringType
|
1810
1817
|
v = o.value
|
@@ -1869,7 +1876,7 @@ class PBooleanType < PScalarDataType
|
|
1869
1876
|
def self.new_function(type)
|
1870
1877
|
@new_function ||= Puppet::Functions.create_loaded_function(:new_boolean, type.loader) do
|
1871
1878
|
dispatch :from_args do
|
1872
|
-
param "Variant[Integer, Float, Boolean, Enum['false','true','yes','no','y','n',true]]",
|
1879
|
+
param "Variant[Integer, Float, Boolean, Enum['false','true','yes','no','y','n',true]]", :from
|
1873
1880
|
end
|
1874
1881
|
|
1875
1882
|
argument_mismatch :on_error do
|
@@ -1879,10 +1886,8 @@ class PBooleanType < PScalarDataType
|
|
1879
1886
|
def from_args(from)
|
1880
1887
|
from = from.downcase if from.is_a?(String)
|
1881
1888
|
case from
|
1882
|
-
when Float
|
1883
|
-
from
|
1884
|
-
when Integer
|
1885
|
-
from != 0
|
1889
|
+
when Float, Integer
|
1890
|
+
!from.zero?
|
1886
1891
|
when false, 'false', 'no', 'n'
|
1887
1892
|
false
|
1888
1893
|
else
|
@@ -1921,8 +1926,8 @@ end
|
|
1921
1926
|
class PStructElement < TypedModelObject
|
1922
1927
|
def self.register_ptype(loader, ir)
|
1923
1928
|
@type = Pcore::create_object_type(loader, ir, self, 'Pcore::StructElement', nil,
|
1924
|
-
|
1925
|
-
|
1929
|
+
'key_type' => PTypeType::DEFAULT,
|
1930
|
+
'value_type' => PTypeType::DEFAULT)
|
1926
1931
|
end
|
1927
1932
|
|
1928
1933
|
attr_accessor :key_type, :value_type
|
@@ -2026,9 +2031,11 @@ class PStructType < PAnyType
|
|
2026
2031
|
end
|
2027
2032
|
end
|
2028
2033
|
|
2034
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
2029
2035
|
def hashed_elements
|
2030
2036
|
@hashed ||= @elements.reduce({}) {|memo, e| memo[e.name] = e; memo }
|
2031
2037
|
end
|
2038
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
2032
2039
|
|
2033
2040
|
def hash
|
2034
2041
|
@elements.hash
|
@@ -2044,9 +2051,9 @@ class PStructType < PAnyType
|
|
2044
2051
|
else
|
2045
2052
|
PIterableType.new(
|
2046
2053
|
PTupleType.new([
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
2054
|
+
PVariantType.maybe_create(@elements.map {|se| se.key_type }),
|
2055
|
+
PVariantType.maybe_create(@elements.map {|se| se.value_type })],
|
2056
|
+
PHashType::KEY_PAIR_TUPLE_SIZE))
|
2050
2057
|
end
|
2051
2058
|
end
|
2052
2059
|
|
@@ -2071,6 +2078,7 @@ class PStructType < PAnyType
|
|
2071
2078
|
def instance?(o, guard = nil)
|
2072
2079
|
# The inferred type of a class derived from Hash is either Runtime or Object. It's not assignable to the Struct type.
|
2073
2080
|
return false unless o.instance_of?(Hash)
|
2081
|
+
|
2074
2082
|
matched = 0
|
2075
2083
|
@elements.all? do |e|
|
2076
2084
|
key = e.name
|
@@ -2146,11 +2154,11 @@ class PTupleType < PAnyType
|
|
2146
2154
|
|
2147
2155
|
def self.register_ptype(loader, ir)
|
2148
2156
|
create_ptype(loader, ir, 'AnyType',
|
2149
|
-
|
2150
|
-
|
2151
|
-
|
2152
|
-
|
2153
|
-
|
2157
|
+
'types' => PArrayType.new(PTypeType::DEFAULT),
|
2158
|
+
'size_type' => {
|
2159
|
+
KEY_TYPE => POptionalType.new(PTypeType.new(PIntegerType::DEFAULT)),
|
2160
|
+
KEY_VALUE => nil
|
2161
|
+
}
|
2154
2162
|
)
|
2155
2163
|
end
|
2156
2164
|
|
@@ -2244,6 +2252,7 @@ class PTupleType < PAnyType
|
|
2244
2252
|
def instance?(o, guard = nil)
|
2245
2253
|
# The inferred type of a class derived from Array is either Runtime or Object. It's not assignable to the Tuple type.
|
2246
2254
|
return false unless o.instance_of?(Array)
|
2255
|
+
|
2247
2256
|
if @size_type
|
2248
2257
|
return false unless @size_type.instance?(o.size, guard)
|
2249
2258
|
else
|
@@ -2280,6 +2289,7 @@ class PTupleType < PAnyType
|
|
2280
2289
|
if @size_type.nil?
|
2281
2290
|
return [1, 1]
|
2282
2291
|
end
|
2292
|
+
|
2283
2293
|
types_size = @types.size
|
2284
2294
|
from, to = @size_type.range
|
2285
2295
|
min = from - (types_size-1)
|
@@ -2310,15 +2320,18 @@ class PTupleType < PAnyType
|
|
2310
2320
|
def _assignable?(o, guard)
|
2311
2321
|
return true if self == o
|
2312
2322
|
return false unless o.is_a?(PTupleType) || o.is_a?(PArrayType)
|
2323
|
+
|
2313
2324
|
s_types = types
|
2314
2325
|
size_s = size_type || PIntegerType.new(*size_range)
|
2315
2326
|
|
2316
2327
|
if o.is_a?(PTupleType)
|
2317
2328
|
size_o = o.size_type || PIntegerType.new(*o.size_range)
|
2318
2329
|
return false unless size_s.assignable?(size_o, guard)
|
2330
|
+
|
2319
2331
|
unless s_types.empty?
|
2320
2332
|
o_types = o.types
|
2321
2333
|
return size_s.numeric_from == 0 if o_types.empty?
|
2334
|
+
|
2322
2335
|
o_types.size.times do |index|
|
2323
2336
|
return false unless (s_types[index] || s_types[-1]).assignable?(o_types[index], guard)
|
2324
2337
|
end
|
@@ -2326,12 +2339,14 @@ class PTupleType < PAnyType
|
|
2326
2339
|
else
|
2327
2340
|
size_o = o.size_type || PCollectionType::DEFAULT_SIZE
|
2328
2341
|
return false unless size_s.assignable?(size_o, guard)
|
2342
|
+
|
2329
2343
|
unless s_types.empty?
|
2330
2344
|
o_entry = o.element_type
|
2331
2345
|
# Array of anything can not be assigned (unless tuple is tuple of anything) - this case
|
2332
2346
|
# was handled at the top of this method.
|
2333
2347
|
#
|
2334
2348
|
return false if o_entry.nil?
|
2349
|
+
|
2335
2350
|
[s_types.size, size_o.range[1]].min.times { |index| return false unless (s_types[index] || s_types[-1]).assignable?(o_entry, guard) }
|
2336
2351
|
end
|
2337
2352
|
end
|
@@ -2344,18 +2359,18 @@ end
|
|
2344
2359
|
class PCallableType < PAnyType
|
2345
2360
|
def self.register_ptype(loader, ir)
|
2346
2361
|
create_ptype(loader, ir, 'AnyType',
|
2347
|
-
|
2348
|
-
|
2349
|
-
|
2350
|
-
|
2351
|
-
|
2352
|
-
|
2353
|
-
|
2354
|
-
|
2355
|
-
|
2356
|
-
|
2357
|
-
|
2358
|
-
|
2362
|
+
'param_types' => {
|
2363
|
+
KEY_TYPE => POptionalType.new(PTypeType.new(PTupleType::DEFAULT)),
|
2364
|
+
KEY_VALUE => nil
|
2365
|
+
},
|
2366
|
+
'block_type' => {
|
2367
|
+
KEY_TYPE => POptionalType.new(PTypeType.new(PCallableType::DEFAULT)),
|
2368
|
+
KEY_VALUE => nil
|
2369
|
+
},
|
2370
|
+
'return_type' => {
|
2371
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
2372
|
+
KEY_VALUE => PAnyType::DEFAULT
|
2373
|
+
}
|
2359
2374
|
)
|
2360
2375
|
end
|
2361
2376
|
|
@@ -2422,6 +2437,7 @@ class PCallableType < PAnyType
|
|
2422
2437
|
# nil param_types and compatible return type means other Callable is assignable
|
2423
2438
|
return true if @param_types.nil?
|
2424
2439
|
return false unless @param_types.instance?(args)
|
2440
|
+
|
2425
2441
|
if @block_type.nil?
|
2426
2442
|
block == nil
|
2427
2443
|
else
|
@@ -2494,7 +2510,8 @@ class PCallableType < PAnyType
|
|
2494
2510
|
# (it's lower bound), not its upper bound
|
2495
2511
|
other_param_types = o.param_types
|
2496
2512
|
|
2497
|
-
return false if other_param_types.nil? ||
|
2513
|
+
return false if other_param_types.nil? || !other_param_types.assignable?(@param_types, guard)
|
2514
|
+
|
2498
2515
|
# names are ignored, they are just information
|
2499
2516
|
# Blocks must be compatible
|
2500
2517
|
this_block_t = @block_type || PUndefType::DEFAULT
|
@@ -2506,13 +2523,12 @@ end
|
|
2506
2523
|
# @api public
|
2507
2524
|
#
|
2508
2525
|
class PArrayType < PCollectionType
|
2509
|
-
|
2510
2526
|
def self.register_ptype(loader, ir)
|
2511
2527
|
create_ptype(loader, ir, 'CollectionType',
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2528
|
+
'element_type' => {
|
2529
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
2530
|
+
KEY_VALUE => PAnyType::DEFAULT
|
2531
|
+
}
|
2516
2532
|
)
|
2517
2533
|
end
|
2518
2534
|
|
@@ -2575,6 +2591,7 @@ class PArrayType < PCollectionType
|
|
2575
2591
|
# The inferred type of a class derived from Array is either Runtime or Object. It's not assignable to the Array type.
|
2576
2592
|
return false unless o.instance_of?(Array)
|
2577
2593
|
return false unless o.all? {|element| @element_type.instance?(element, guard) }
|
2594
|
+
|
2578
2595
|
size_t = size_type
|
2579
2596
|
size_t.nil? || size_t.instance?(o.size, guard)
|
2580
2597
|
end
|
@@ -2587,7 +2604,6 @@ class PArrayType < PCollectionType
|
|
2587
2604
|
#
|
2588
2605
|
def self.new_function(type)
|
2589
2606
|
@new_function ||= Puppet::Functions.create_loaded_function(:new_array, type.loader) do
|
2590
|
-
|
2591
2607
|
dispatch :to_array do
|
2592
2608
|
param 'Variant[Array,Hash,Binary,Iterable]', :from
|
2593
2609
|
optional_param 'Boolean[false]', :wrap
|
@@ -2656,17 +2672,16 @@ end
|
|
2656
2672
|
# @api public
|
2657
2673
|
#
|
2658
2674
|
class PHashType < PCollectionType
|
2659
|
-
|
2660
2675
|
def self.register_ptype(loader, ir)
|
2661
2676
|
create_ptype(loader, ir, 'CollectionType',
|
2662
|
-
|
2663
|
-
|
2664
|
-
|
2665
|
-
|
2666
|
-
|
2667
|
-
|
2668
|
-
|
2669
|
-
|
2677
|
+
'key_type' => {
|
2678
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
2679
|
+
KEY_VALUE => PAnyType::DEFAULT
|
2680
|
+
},
|
2681
|
+
'value_type' => {
|
2682
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
2683
|
+
KEY_VALUE => PAnyType::DEFAULT
|
2684
|
+
}
|
2670
2685
|
)
|
2671
2686
|
end
|
2672
2687
|
|
@@ -2691,9 +2706,9 @@ class PHashType < PCollectionType
|
|
2691
2706
|
|
2692
2707
|
def element_type
|
2693
2708
|
if Puppet[:strict] != :off
|
2694
|
-
#TRANSLATOR 'Puppet::Pops::Types::PHashType#element_type' and '#value_type' are class and method names and should not be translated
|
2709
|
+
# TRANSLATOR 'Puppet::Pops::Types::PHashType#element_type' and '#value_type' are class and method names and should not be translated
|
2695
2710
|
Puppet.warn_once('deprecations', 'Puppet::Pops::Types::PHashType#element_type',
|
2696
|
-
|
2711
|
+
_('Puppet::Pops::Types::PHashType#element_type is deprecated, use #value_type instead'))
|
2697
2712
|
end
|
2698
2713
|
@value_type
|
2699
2714
|
end
|
@@ -2727,6 +2742,7 @@ class PHashType < PCollectionType
|
|
2727
2742
|
def instance?(o, guard = nil)
|
2728
2743
|
# The inferred type of a class derived from Hash is either Runtime or Object. It's not assignable to the Hash type.
|
2729
2744
|
return false unless o.instance_of?(Hash)
|
2745
|
+
|
2730
2746
|
if o.keys.all? {|key| @key_type.instance?(key, guard) } && o.values.all? {|value| @value_type.instance?(value, guard) }
|
2731
2747
|
size_t = size_type
|
2732
2748
|
size_t.nil? || size_t.instance?(o.size, guard)
|
@@ -2763,6 +2779,7 @@ class PHashType < PCollectionType
|
|
2763
2779
|
|
2764
2780
|
def self.array_as_hash(value)
|
2765
2781
|
return value unless value.is_a?(Array)
|
2782
|
+
|
2766
2783
|
result = {}
|
2767
2784
|
value.each_with_index {|v, idx| result[idx] = array_as_hash(v) }
|
2768
2785
|
result
|
@@ -2784,11 +2801,11 @@ class PHashType < PCollectionType
|
|
2784
2801
|
end
|
2785
2802
|
|
2786
2803
|
dispatch :from_tuples do
|
2787
|
-
param 'KeyValueArray',
|
2804
|
+
param 'KeyValueArray', :from
|
2788
2805
|
end
|
2789
2806
|
|
2790
2807
|
dispatch :from_array do
|
2791
|
-
param 'Any',
|
2808
|
+
param 'Any', :from
|
2792
2809
|
end
|
2793
2810
|
|
2794
2811
|
def from_tuples(tuple_array)
|
@@ -2799,6 +2816,7 @@ class PHashType < PCollectionType
|
|
2799
2816
|
if build_option.nil?
|
2800
2817
|
return from_tuples(tuple_array)
|
2801
2818
|
end
|
2819
|
+
|
2802
2820
|
# only remaining possible options is 'tree' or 'hash_tree'
|
2803
2821
|
|
2804
2822
|
all_hashes = build_option == 'hash_tree'
|
@@ -2832,6 +2850,7 @@ class PHashType < PCollectionType
|
|
2832
2850
|
unless from.size % 2 == 0
|
2833
2851
|
raise TypeConversionError.new(_('odd number of arguments for Hash'))
|
2834
2852
|
end
|
2853
|
+
|
2835
2854
|
Hash[*from]
|
2836
2855
|
end
|
2837
2856
|
when Hash
|
@@ -2863,6 +2882,7 @@ class PHashType < PCollectionType
|
|
2863
2882
|
size_s = size_type
|
2864
2883
|
return true if (size_s.nil? || size_s.from == 0) && o.is_the_empty_hash?
|
2865
2884
|
return false unless @key_type.assignable?(o.key_type, guard) && @value_type.assignable?(o.value_type, guard)
|
2885
|
+
|
2866
2886
|
super
|
2867
2887
|
when PStructType
|
2868
2888
|
# hash must accept String as key type
|
@@ -2995,6 +3015,7 @@ class PVariantType < PAnyType
|
|
2995
3015
|
@types.reduce(-1) do |memo, type|
|
2996
3016
|
ri = type.really_instance?(o, guard)
|
2997
3017
|
break ri if ri > 0
|
3018
|
+
|
2998
3019
|
ri > memo ? ri : memo
|
2999
3020
|
end
|
3000
3021
|
end
|
@@ -3018,6 +3039,7 @@ class PVariantType < PAnyType
|
|
3018
3039
|
return super unless o.is_a?(PVariantType)
|
3019
3040
|
# If empty, all Variant types match irrespective of the types they hold (including being empty)
|
3020
3041
|
return true if types.empty?
|
3042
|
+
|
3021
3043
|
# Since this variant is not empty, an empty Variant cannot match, because it matches nothing
|
3022
3044
|
# otherwise all types in o must be assignable to this
|
3023
3045
|
!o.types.empty? && o.types.all? { |vt| super(vt, guard) }
|
@@ -3038,7 +3060,7 @@ class PVariantType < PAnyType
|
|
3038
3060
|
not_undefs = parts[0]
|
3039
3061
|
if not_undefs.size > 1
|
3040
3062
|
others = parts[1]
|
3041
|
-
others <<
|
3063
|
+
others << PNotUndefType.new(PVariantType.maybe_create(not_undefs.map { |not_undef| not_undef.type }).normalize)
|
3042
3064
|
array = others
|
3043
3065
|
end
|
3044
3066
|
end
|
@@ -3053,7 +3075,7 @@ class PVariantType < PAnyType
|
|
3053
3075
|
enums = parts[0]
|
3054
3076
|
if enums.size > 1
|
3055
3077
|
others = parts[1]
|
3056
|
-
others <<
|
3078
|
+
others << PEnumType.new(enums.map { |enum| enum.is_a?(PStringType) ? enum.value : enum.values }.flatten.uniq)
|
3057
3079
|
array = others
|
3058
3080
|
end
|
3059
3081
|
end
|
@@ -3067,7 +3089,7 @@ class PVariantType < PAnyType
|
|
3067
3089
|
values = []
|
3068
3090
|
enums.each { |enum| enum.values.each { |value| values << value.downcase }}
|
3069
3091
|
values.uniq!
|
3070
|
-
others <<
|
3092
|
+
others << PEnumType.new(values, true)
|
3071
3093
|
array = others
|
3072
3094
|
end
|
3073
3095
|
end
|
@@ -3081,7 +3103,7 @@ class PVariantType < PAnyType
|
|
3081
3103
|
patterns = parts[0]
|
3082
3104
|
if patterns.size > 1
|
3083
3105
|
others = parts[1]
|
3084
|
-
others <<
|
3106
|
+
others << PPatternType.new(patterns.map { |pattern| pattern.patterns }.flatten.uniq)
|
3085
3107
|
array = others
|
3086
3108
|
end
|
3087
3109
|
end
|
@@ -3143,6 +3165,7 @@ class PCatalogEntryType < PAnyType
|
|
3143
3165
|
end
|
3144
3166
|
|
3145
3167
|
protected
|
3168
|
+
|
3146
3169
|
# @api private
|
3147
3170
|
def _assignable?(o, guard)
|
3148
3171
|
o.is_a?(PCatalogEntryType)
|
@@ -3157,10 +3180,10 @@ class PClassType < PCatalogEntryType
|
|
3157
3180
|
|
3158
3181
|
def self.register_ptype(loader, ir)
|
3159
3182
|
create_ptype(loader, ir, 'CatalogEntryType',
|
3160
|
-
|
3161
|
-
|
3162
|
-
|
3163
|
-
|
3183
|
+
'class_name' => {
|
3184
|
+
KEY_TYPE => POptionalType.new(PStringType::NON_EMPTY),
|
3185
|
+
KEY_VALUE => nil
|
3186
|
+
}
|
3164
3187
|
)
|
3165
3188
|
end
|
3166
3189
|
|
@@ -3171,6 +3194,7 @@ class PClassType < PCatalogEntryType
|
|
3171
3194
|
def hash
|
3172
3195
|
11 ^ @class_name.hash
|
3173
3196
|
end
|
3197
|
+
|
3174
3198
|
def eql?(o)
|
3175
3199
|
self.class == o.class && @class_name == o.class_name
|
3176
3200
|
end
|
@@ -3184,6 +3208,7 @@ class PClassType < PCatalogEntryType
|
|
3184
3208
|
return false unless o.is_a?(PClassType)
|
3185
3209
|
# Class = Class[name}, Class[name] != Class
|
3186
3210
|
return true if @class_name.nil?
|
3211
|
+
|
3187
3212
|
# Class[name] = Class[name]
|
3188
3213
|
@class_name == o.class_name
|
3189
3214
|
end
|
@@ -3192,22 +3217,20 @@ end
|
|
3192
3217
|
# For backward compatibility
|
3193
3218
|
PHostClassType = PClassType
|
3194
3219
|
|
3195
|
-
|
3196
3220
|
# Represents a Resource Type in the Puppet Language
|
3197
3221
|
# @api public
|
3198
3222
|
#
|
3199
3223
|
class PResourceType < PCatalogEntryType
|
3200
|
-
|
3201
3224
|
def self.register_ptype(loader, ir)
|
3202
3225
|
create_ptype(loader, ir, 'CatalogEntryType',
|
3203
|
-
|
3204
|
-
|
3205
|
-
|
3206
|
-
|
3207
|
-
|
3208
|
-
|
3209
|
-
|
3210
|
-
|
3226
|
+
'type_name' => {
|
3227
|
+
KEY_TYPE => POptionalType.new(PStringType::NON_EMPTY),
|
3228
|
+
KEY_VALUE => nil
|
3229
|
+
},
|
3230
|
+
'title' => {
|
3231
|
+
KEY_TYPE => POptionalType.new(PStringType::NON_EMPTY),
|
3232
|
+
KEY_VALUE => nil
|
3233
|
+
}
|
3211
3234
|
)
|
3212
3235
|
end
|
3213
3236
|
|
@@ -3242,13 +3265,12 @@ end
|
|
3242
3265
|
# @api public
|
3243
3266
|
#
|
3244
3267
|
class POptionalType < PTypeWithContainedType
|
3245
|
-
|
3246
3268
|
def self.register_ptype(loader, ir)
|
3247
3269
|
create_ptype(loader, ir, 'AnyType',
|
3248
|
-
|
3249
|
-
|
3250
|
-
|
3251
|
-
|
3270
|
+
'type' => {
|
3271
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
3272
|
+
KEY_VALUE => nil
|
3273
|
+
}
|
3252
3274
|
)
|
3253
3275
|
end
|
3254
3276
|
|
@@ -3257,7 +3279,7 @@ class POptionalType < PTypeWithContainedType
|
|
3257
3279
|
end
|
3258
3280
|
|
3259
3281
|
def kind_of_callable?(optional=true, guard = nil)
|
3260
|
-
|
3282
|
+
optional && !@type.nil? && @type.kind_of_callable?(optional, guard)
|
3261
3283
|
end
|
3262
3284
|
|
3263
3285
|
def instance?(o, guard = nil)
|
@@ -3293,6 +3315,7 @@ class POptionalType < PTypeWithContainedType
|
|
3293
3315
|
def _assignable?(o, guard)
|
3294
3316
|
return true if o.is_a?(PUndefType)
|
3295
3317
|
return true if @type.nil?
|
3318
|
+
|
3296
3319
|
if o.is_a?(POptionalType)
|
3297
3320
|
@type.assignable?(o.optional_type, guard)
|
3298
3321
|
else
|
@@ -3302,7 +3325,6 @@ class POptionalType < PTypeWithContainedType
|
|
3302
3325
|
end
|
3303
3326
|
|
3304
3327
|
class PTypeReferenceType < PAnyType
|
3305
|
-
|
3306
3328
|
def self.register_ptype(loader, ir)
|
3307
3329
|
create_ptype(loader, ir, 'AnyType', 'type_string' => PStringType::NON_EMPTY)
|
3308
3330
|
end
|
@@ -3351,15 +3373,14 @@ end
|
|
3351
3373
|
#
|
3352
3374
|
# @api public
|
3353
3375
|
class PTypeAliasType < PAnyType
|
3354
|
-
|
3355
3376
|
def self.register_ptype(loader, ir)
|
3356
3377
|
create_ptype(loader, ir, 'AnyType',
|
3357
|
-
|
3358
|
-
|
3359
|
-
|
3360
|
-
|
3361
|
-
|
3362
|
-
|
3378
|
+
'name' => PStringType::NON_EMPTY,
|
3379
|
+
'type_expr' => PAnyType::DEFAULT,
|
3380
|
+
'resolved_type' => {
|
3381
|
+
KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
|
3382
|
+
KEY_VALUE => nil
|
3383
|
+
}
|
3363
3384
|
)
|
3364
3385
|
end
|
3365
3386
|
|
@@ -3391,6 +3412,7 @@ class PTypeAliasType < PAnyType
|
|
3391
3412
|
# @raise [Puppet::Error] unless the type has been resolved prior to calling this method
|
3392
3413
|
def resolved_type
|
3393
3414
|
raise Puppet::Error, "Reference to unresolved type #{@name}" unless @resolved_type
|
3415
|
+
|
3394
3416
|
@resolved_type
|
3395
3417
|
end
|
3396
3418
|
|
@@ -3453,6 +3475,7 @@ class PTypeAliasType < PAnyType
|
|
3453
3475
|
|
3454
3476
|
def set_self_recursion_status
|
3455
3477
|
return if @self_recursion || @resolved_type.is_a?(PTypeReferenceType)
|
3478
|
+
|
3456
3479
|
@self_recursion = true
|
3457
3480
|
guard = RecursionGuard.new
|
3458
3481
|
accept(NoopTypeAcceptor::INSTANCE, guard)
|
@@ -3490,6 +3513,7 @@ class PTypeAliasType < PAnyType
|
|
3490
3513
|
unless real_type_asserter.other_type_detected?
|
3491
3514
|
raise ArgumentError, "Type alias '#{name}' cannot be resolved to a real type"
|
3492
3515
|
end
|
3516
|
+
|
3493
3517
|
@self_recursion = guard.recursive_this?(self)
|
3494
3518
|
# All aliases involved must re-check status since this alias is now resolved
|
3495
3519
|
if @self_recursion
|
@@ -3587,6 +3611,7 @@ class PTypeAliasType < PAnyType
|
|
3587
3611
|
resolved_types = @resolved_type.types
|
3588
3612
|
real_types = resolved_types.select do |type|
|
3589
3613
|
next false if type == self
|
3614
|
+
|
3590
3615
|
real_type_asserter = AssertOtherTypeAcceptor.new
|
3591
3616
|
type.accept(real_type_asserter, RecursionGuard.new)
|
3592
3617
|
real_type_asserter.other_type_detected?
|