puppet 4.3.2-x64-mingw32 → 4.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- 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/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- 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 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -1,18 +1,17 @@
|
|
1
1
|
# This class provides parsing of Type Specification from a string into the Type
|
2
|
-
# Model that is produced by the
|
2
|
+
# Model that is produced by the TypeFactory.
|
3
3
|
#
|
4
4
|
# The Type Specifications that are parsed are the same as the stringified forms
|
5
|
-
# of types produced by the {
|
5
|
+
# of types produced by the {TypeCalculator TypeCalculator}.
|
6
6
|
#
|
7
7
|
# @api public
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
module Puppet::Pops
|
9
|
+
module Types
|
10
|
+
class TypeParser
|
12
11
|
# @api public
|
13
12
|
def initialize
|
14
|
-
@parser =
|
15
|
-
@type_transformer =
|
13
|
+
@parser = Parser::Parser.new
|
14
|
+
@type_transformer = Visitor.new(nil, 'interpret', 1, 1)
|
16
15
|
end
|
17
16
|
|
18
17
|
# Produces a *puppet type* based on the given string.
|
@@ -23,12 +22,13 @@ class Puppet::Pops::Types::TypeParser
|
|
23
22
|
# parser.parse('Hash[Integer, Array[String]]')
|
24
23
|
#
|
25
24
|
# @param string [String] a string with the type expressed in stringified form as produced by the
|
26
|
-
# {
|
27
|
-
# @
|
25
|
+
# types {"#to_s} method.
|
26
|
+
# @param context [Puppet::Parser::Scope,Loader::Loader] scope or loader to use when loading type aliases
|
27
|
+
# @return [PAnyType] a specialization of the PAnyType representing the type.
|
28
28
|
#
|
29
29
|
# @api public
|
30
30
|
#
|
31
|
-
def parse(string)
|
31
|
+
def parse(string, context = nil)
|
32
32
|
# TODO: This state (@string) can be removed since the parse result of newer future parser
|
33
33
|
# contains a Locator in its SourcePosAdapter and the Locator keeps the string.
|
34
34
|
# This way, there is no difference between a parsed "string" and something that has been parsed
|
@@ -37,173 +37,198 @@ class Puppet::Pops::Types::TypeParser
|
|
37
37
|
@string = string
|
38
38
|
model = @parser.parse_string(@string)
|
39
39
|
if model
|
40
|
-
interpret(model.current)
|
40
|
+
interpret(model.current, context)
|
41
41
|
else
|
42
42
|
raise_invalid_type_specification_error
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
# @api private
|
47
|
-
def interpret(ast)
|
48
|
-
result = @type_transformer.
|
49
|
-
result = result.body if result.is_a?(
|
50
|
-
raise_invalid_type_specification_error unless result.is_a?(
|
47
|
+
def interpret(ast, context)
|
48
|
+
result = @type_transformer.visit_this_1(self, ast, context)
|
49
|
+
result = result.body if result.is_a?(Model::Program)
|
50
|
+
raise_invalid_type_specification_error unless result.is_a?(PAnyType)
|
51
51
|
result
|
52
52
|
end
|
53
53
|
|
54
54
|
# @api private
|
55
|
-
def interpret_any(ast)
|
56
|
-
@type_transformer.
|
55
|
+
def interpret_any(ast, context)
|
56
|
+
@type_transformer.visit_this_1(self, ast, context)
|
57
57
|
end
|
58
58
|
|
59
59
|
# @api private
|
60
|
-
def interpret_Object(o)
|
60
|
+
def interpret_Object(o, context)
|
61
61
|
raise_invalid_type_specification_error
|
62
62
|
end
|
63
63
|
|
64
64
|
# @api private
|
65
|
-
def interpret_Program(o)
|
66
|
-
interpret(o.body)
|
65
|
+
def interpret_Program(o, context)
|
66
|
+
interpret(o.body, context)
|
67
67
|
end
|
68
68
|
|
69
69
|
# @api private
|
70
|
-
def interpret_QualifiedName(o)
|
70
|
+
def interpret_QualifiedName(o, context)
|
71
71
|
o.value
|
72
72
|
end
|
73
73
|
|
74
74
|
# @api private
|
75
|
-
def interpret_LiteralString(o)
|
75
|
+
def interpret_LiteralString(o, context)
|
76
76
|
o.value
|
77
77
|
end
|
78
78
|
|
79
|
-
def interpret_LiteralRegularExpression(o)
|
79
|
+
def interpret_LiteralRegularExpression(o, context)
|
80
80
|
o.value
|
81
81
|
end
|
82
82
|
|
83
83
|
# @api private
|
84
|
-
def interpret_String(o)
|
84
|
+
def interpret_String(o, context)
|
85
85
|
o
|
86
86
|
end
|
87
87
|
|
88
88
|
# @api private
|
89
|
-
def interpret_LiteralDefault(o)
|
89
|
+
def interpret_LiteralDefault(o, context)
|
90
90
|
:default
|
91
91
|
end
|
92
92
|
|
93
93
|
# @api private
|
94
|
-
def interpret_LiteralInteger(o)
|
94
|
+
def interpret_LiteralInteger(o, context)
|
95
95
|
o.value
|
96
96
|
end
|
97
97
|
|
98
98
|
# @api private
|
99
|
-
def
|
99
|
+
def interpret_UnaryMinusExpression(o, context)
|
100
|
+
-@type_transformer.visit_this_1(self, o.expr, context)
|
101
|
+
end
|
102
|
+
|
103
|
+
# @api private
|
104
|
+
def interpret_LiteralFloat(o, context)
|
100
105
|
o.value
|
101
106
|
end
|
102
107
|
|
103
108
|
# @api private
|
104
|
-
def interpret_LiteralHash(o)
|
109
|
+
def interpret_LiteralHash(o, context)
|
105
110
|
result = {}
|
106
111
|
o.entries.each do |entry|
|
107
|
-
result[@type_transformer.
|
112
|
+
result[@type_transformer.visit_this_1(self, entry.key, context)] = @type_transformer.visit_this_1(self, entry.value, context)
|
108
113
|
end
|
109
114
|
result
|
110
115
|
end
|
111
116
|
|
112
117
|
# @api private
|
113
|
-
def interpret_QualifiedReference(name_ast)
|
114
|
-
|
118
|
+
def interpret_QualifiedReference(name_ast, context)
|
119
|
+
name = name_ast.value
|
120
|
+
case name
|
115
121
|
when 'integer'
|
116
|
-
|
122
|
+
TypeFactory.integer
|
117
123
|
|
118
124
|
when 'float'
|
119
|
-
|
125
|
+
TypeFactory.float
|
120
126
|
|
121
127
|
when 'numeric'
|
122
|
-
|
128
|
+
TypeFactory.numeric
|
129
|
+
|
130
|
+
when 'iterable'
|
131
|
+
TypeFactory.iterable
|
132
|
+
|
133
|
+
when 'iterator'
|
134
|
+
TypeFactory.iterator
|
123
135
|
|
124
136
|
when 'string'
|
125
|
-
|
137
|
+
TypeFactory.string
|
126
138
|
|
127
139
|
when 'enum'
|
128
|
-
|
140
|
+
TypeFactory.enum
|
129
141
|
|
130
142
|
when 'boolean'
|
131
|
-
|
143
|
+
TypeFactory.boolean
|
132
144
|
|
133
145
|
when 'pattern'
|
134
|
-
|
146
|
+
TypeFactory.pattern
|
135
147
|
|
136
148
|
when 'regexp'
|
137
|
-
|
149
|
+
TypeFactory.regexp
|
138
150
|
|
139
151
|
when 'data'
|
140
|
-
|
152
|
+
TypeFactory.data
|
141
153
|
|
142
154
|
when 'array'
|
143
|
-
|
155
|
+
TypeFactory.array_of_data
|
144
156
|
|
145
157
|
when 'hash'
|
146
|
-
|
158
|
+
TypeFactory.hash_of_data
|
147
159
|
|
148
160
|
when 'class'
|
149
|
-
|
161
|
+
TypeFactory.host_class
|
150
162
|
|
151
163
|
when 'resource'
|
152
|
-
|
164
|
+
TypeFactory.resource
|
153
165
|
|
154
166
|
when 'collection'
|
155
|
-
|
167
|
+
TypeFactory.collection
|
156
168
|
|
157
169
|
when 'scalar'
|
158
|
-
|
170
|
+
TypeFactory.scalar
|
159
171
|
|
160
172
|
when 'catalogentry'
|
161
|
-
|
173
|
+
TypeFactory.catalog_entry
|
162
174
|
|
163
175
|
when 'undef'
|
164
|
-
|
176
|
+
TypeFactory.undef
|
165
177
|
|
166
178
|
when 'notundef'
|
167
|
-
|
179
|
+
TypeFactory.not_undef()
|
168
180
|
|
169
181
|
when 'default'
|
170
|
-
|
182
|
+
TypeFactory.default()
|
171
183
|
|
172
184
|
when 'any'
|
173
|
-
|
185
|
+
TypeFactory.any
|
174
186
|
|
175
187
|
when 'variant'
|
176
|
-
|
188
|
+
TypeFactory.variant
|
177
189
|
|
178
190
|
when 'optional'
|
179
|
-
|
191
|
+
TypeFactory.optional
|
180
192
|
|
181
193
|
when 'runtime'
|
182
|
-
|
194
|
+
TypeFactory.runtime
|
183
195
|
|
184
196
|
when 'type'
|
185
|
-
|
197
|
+
TypeFactory.type_type
|
186
198
|
|
187
199
|
when 'tuple'
|
188
|
-
|
200
|
+
TypeFactory.tuple
|
189
201
|
|
190
202
|
when 'struct'
|
191
|
-
|
203
|
+
TypeFactory.struct
|
192
204
|
|
193
205
|
when 'callable'
|
194
206
|
# A generic callable as opposed to one that does not accept arguments
|
195
|
-
|
207
|
+
TypeFactory.all_callables
|
196
208
|
|
197
209
|
else
|
198
|
-
|
210
|
+
if context.nil?
|
211
|
+
TypeFactory.type_reference(name.capitalize)
|
212
|
+
else
|
213
|
+
if context.is_a?(Puppet::Pops::Loader::Loader)
|
214
|
+
loader = context
|
215
|
+
else
|
216
|
+
loader = Puppet::Pops::Adapters::LoaderAdapter.loader_for_model_object(name_ast, context)
|
217
|
+
end
|
218
|
+
unless loader.nil?
|
219
|
+
type = loader.load(:type, name)
|
220
|
+
type = type.resolve(self, loader) unless type.nil?
|
221
|
+
end
|
222
|
+
type || TypeFactory.resource(name)
|
223
|
+
end
|
199
224
|
end
|
200
225
|
end
|
201
226
|
|
202
227
|
# @api private
|
203
|
-
def interpret_AccessExpression(parameterized_ast)
|
204
|
-
parameters = parameterized_ast.keys.collect { |param| interpret_any(param) }
|
228
|
+
def interpret_AccessExpression(parameterized_ast, context)
|
229
|
+
parameters = parameterized_ast.keys.collect { |param| interpret_any(param, context) }
|
205
230
|
|
206
|
-
unless parameterized_ast.left_expr.is_a?(
|
231
|
+
unless parameterized_ast.left_expr.is_a?(Model::QualifiedReference)
|
207
232
|
raise_invalid_type_specification_error
|
208
233
|
end
|
209
234
|
|
@@ -213,45 +238,45 @@ class Puppet::Pops::Types::TypeParser
|
|
213
238
|
when 1
|
214
239
|
when 2
|
215
240
|
size_type =
|
216
|
-
if parameters[1].is_a?(
|
241
|
+
if parameters[1].is_a?(PIntegerType)
|
217
242
|
parameters[1]
|
218
243
|
else
|
219
244
|
assert_range_parameter(parameters[1])
|
220
|
-
|
245
|
+
TypeFactory.range(parameters[1], :default)
|
221
246
|
end
|
222
247
|
when 3
|
223
248
|
assert_range_parameter(parameters[1])
|
224
249
|
assert_range_parameter(parameters[2])
|
225
|
-
size_type =
|
250
|
+
size_type = TypeFactory.range(parameters[1], parameters[2])
|
226
251
|
else
|
227
252
|
raise_invalid_parameters_error('Array', '1 to 3', parameters.size)
|
228
253
|
end
|
229
254
|
assert_type(parameters[0])
|
230
|
-
|
255
|
+
TypeFactory.array_of(parameters[0], size_type)
|
231
256
|
|
232
257
|
when 'hash'
|
233
258
|
case parameters.size
|
234
259
|
when 2
|
235
260
|
assert_type(parameters[0])
|
236
261
|
assert_type(parameters[1])
|
237
|
-
|
262
|
+
TypeFactory.hash_of(parameters[1], parameters[0])
|
238
263
|
when 3
|
239
264
|
size_type =
|
240
|
-
if parameters[2].is_a?(
|
265
|
+
if parameters[2].is_a?(PIntegerType)
|
241
266
|
parameters[2]
|
242
267
|
else
|
243
268
|
assert_range_parameter(parameters[2])
|
244
|
-
|
269
|
+
TypeFactory.range(parameters[2], :default)
|
245
270
|
end
|
246
271
|
assert_type(parameters[0])
|
247
272
|
assert_type(parameters[1])
|
248
|
-
|
273
|
+
TypeFactory.hash_of(parameters[1], parameters[0], size_type)
|
249
274
|
when 4
|
250
275
|
assert_range_parameter(parameters[2])
|
251
276
|
assert_range_parameter(parameters[3])
|
252
277
|
assert_type(parameters[0])
|
253
278
|
assert_type(parameters[1])
|
254
|
-
|
279
|
+
TypeFactory.hash_of(parameters[1], parameters[0], TypeFactory.range(parameters[2], parameters[3]))
|
255
280
|
else
|
256
281
|
raise_invalid_parameters_error('Hash', '2 to 4', parameters.size)
|
257
282
|
end
|
@@ -259,62 +284,62 @@ class Puppet::Pops::Types::TypeParser
|
|
259
284
|
when 'collection'
|
260
285
|
size_type = case parameters.size
|
261
286
|
when 1
|
262
|
-
if parameters[0].is_a?(
|
287
|
+
if parameters[0].is_a?(PIntegerType)
|
263
288
|
parameters[0]
|
264
289
|
else
|
265
290
|
assert_range_parameter(parameters[0])
|
266
|
-
|
291
|
+
TypeFactory.range(parameters[0], :default)
|
267
292
|
end
|
268
293
|
when 2
|
269
294
|
assert_range_parameter(parameters[0])
|
270
295
|
assert_range_parameter(parameters[1])
|
271
|
-
|
296
|
+
TypeFactory.range(parameters[0], parameters[1])
|
272
297
|
else
|
273
298
|
raise_invalid_parameters_error('Collection', '1 to 2', parameters.size)
|
274
299
|
end
|
275
|
-
|
300
|
+
TypeFactory.collection(size_type)
|
276
301
|
|
277
302
|
when 'class'
|
278
303
|
if parameters.size != 1
|
279
304
|
raise_invalid_parameters_error('Class', 1, parameters.size)
|
280
305
|
end
|
281
|
-
|
306
|
+
TypeFactory.host_class(parameters[0])
|
282
307
|
|
283
308
|
when 'resource'
|
284
309
|
if parameters.size == 1
|
285
|
-
|
310
|
+
TypeFactory.resource(parameters[0])
|
286
311
|
elsif parameters.size != 2
|
287
312
|
raise_invalid_parameters_error('Resource', '1 or 2', parameters.size)
|
288
313
|
else
|
289
|
-
|
314
|
+
TypeFactory.resource(parameters[0], parameters[1])
|
290
315
|
end
|
291
316
|
|
292
317
|
when 'regexp'
|
293
318
|
# 1 parameter being a string, or regular expression
|
294
319
|
raise_invalid_parameters_error('Regexp', '1', parameters.size) unless parameters.size == 1
|
295
|
-
|
320
|
+
TypeFactory.regexp(parameters[0])
|
296
321
|
|
297
322
|
when 'enum'
|
298
323
|
# 1..m parameters being strings
|
299
324
|
raise_invalid_parameters_error('Enum', '1 or more', parameters.size) unless parameters.size >= 1
|
300
|
-
|
325
|
+
TypeFactory.enum(*parameters)
|
301
326
|
|
302
327
|
when 'pattern'
|
303
328
|
# 1..m parameters being strings or regular expressions
|
304
329
|
raise_invalid_parameters_error('Pattern', '1 or more', parameters.size) unless parameters.size >= 1
|
305
|
-
|
330
|
+
TypeFactory.pattern(*parameters)
|
306
331
|
|
307
332
|
when 'variant'
|
308
333
|
# 1..m parameters being strings or regular expressions
|
309
334
|
raise_invalid_parameters_error('Variant', '1 or more', parameters.size) unless parameters.size >= 1
|
310
|
-
|
335
|
+
TypeFactory.variant(*parameters)
|
311
336
|
|
312
337
|
when 'tuple'
|
313
338
|
# 1..m parameters being types (last two optionally integer or literal default
|
314
339
|
raise_invalid_parameters_error('Tuple', '1 or more', parameters.size) unless parameters.size >= 1
|
315
340
|
length = parameters.size
|
316
341
|
size_type = nil
|
317
|
-
if
|
342
|
+
if TypeFactory.is_range_parameter?(parameters[-2])
|
318
343
|
# min, max specification
|
319
344
|
min = parameters[-2]
|
320
345
|
min = (min == :default || min == 'default') ? 0 : min
|
@@ -322,73 +347,87 @@ class Puppet::Pops::Types::TypeParser
|
|
322
347
|
max = parameters[-1]
|
323
348
|
max = max == :default ? nil : max
|
324
349
|
parameters = parameters[0, length-2]
|
325
|
-
size_type =
|
326
|
-
elsif
|
350
|
+
size_type = TypeFactory.range(min, max)
|
351
|
+
elsif TypeFactory.is_range_parameter?(parameters[-1])
|
327
352
|
min = parameters[-1]
|
328
353
|
min = (min == :default || min == 'default') ? 0 : min
|
329
354
|
max = nil
|
330
355
|
parameters = parameters[0, length-1]
|
331
|
-
size_type =
|
356
|
+
size_type = TypeFactory.range(min, max)
|
332
357
|
end
|
333
|
-
|
358
|
+
TypeFactory.tuple(parameters, size_type)
|
334
359
|
|
335
360
|
when 'callable'
|
336
361
|
# 1..m parameters being types (last three optionally integer or literal default, and a callable)
|
337
|
-
|
362
|
+
TypeFactory.callable(*parameters)
|
338
363
|
|
339
364
|
when 'struct'
|
340
365
|
# 1..m parameters being types (last two optionally integer or literal default
|
341
366
|
raise_invalid_parameters_error('Struct', '1', parameters.size) unless parameters.size == 1
|
342
367
|
h = parameters[0]
|
343
368
|
raise_invalid_type_specification_error unless h.is_a?(Hash)
|
344
|
-
|
369
|
+
TypeFactory.struct(h)
|
345
370
|
|
346
371
|
when 'integer'
|
347
372
|
if parameters.size == 1
|
348
373
|
case parameters[0]
|
349
374
|
when Integer
|
350
|
-
|
375
|
+
TypeFactory.range(parameters[0], :default)
|
351
376
|
when :default
|
352
|
-
|
377
|
+
TypeFactory.integer # unbound
|
353
378
|
end
|
354
379
|
elsif parameters.size != 2
|
355
380
|
raise_invalid_parameters_error('Integer', '1 or 2', parameters.size)
|
356
381
|
else
|
357
|
-
|
382
|
+
TypeFactory.range(parameters[0] == :default ? nil : parameters[0], parameters[1] == :default ? nil : parameters[1])
|
358
383
|
end
|
359
384
|
|
385
|
+
when 'iterable'
|
386
|
+
if parameters.size != 1
|
387
|
+
raise_invalid_parameters_error('Iterable', 1, parameters.size)
|
388
|
+
end
|
389
|
+
assert_type(parameters[0])
|
390
|
+
TypeFactory.iterable(parameters[0])
|
391
|
+
|
392
|
+
when 'iterator'
|
393
|
+
if parameters.size != 1
|
394
|
+
raise_invalid_parameters_error('Iterator', 1, parameters.size)
|
395
|
+
end
|
396
|
+
assert_type(parameters[0])
|
397
|
+
TypeFactory.iterator(parameters[0])
|
398
|
+
|
360
399
|
when 'float'
|
361
400
|
if parameters.size == 1
|
362
401
|
case parameters[0]
|
363
402
|
when Integer, Float
|
364
|
-
|
403
|
+
TypeFactory.float_range(parameters[0], :default)
|
365
404
|
when :default
|
366
|
-
|
405
|
+
TypeFactory.float # unbound
|
367
406
|
end
|
368
407
|
elsif parameters.size != 2
|
369
408
|
raise_invalid_parameters_error('Float', '1 or 2', parameters.size)
|
370
409
|
else
|
371
|
-
|
410
|
+
TypeFactory.float_range(parameters[0] == :default ? nil : parameters[0], parameters[1] == :default ? nil : parameters[1])
|
372
411
|
end
|
373
412
|
|
374
413
|
when 'string'
|
375
414
|
size_type =
|
376
415
|
case parameters.size
|
377
416
|
when 1
|
378
|
-
if parameters[0].is_a?(
|
417
|
+
if parameters[0].is_a?(PIntegerType)
|
379
418
|
parameters[0]
|
380
419
|
else
|
381
420
|
assert_range_parameter(parameters[0])
|
382
|
-
|
421
|
+
TypeFactory.range(parameters[0], :default)
|
383
422
|
end
|
384
423
|
when 2
|
385
424
|
assert_range_parameter(parameters[0])
|
386
425
|
assert_range_parameter(parameters[1])
|
387
|
-
|
426
|
+
TypeFactory.range(parameters[0], parameters[1])
|
388
427
|
else
|
389
428
|
raise_invalid_parameters_error('String', '1 to 2', parameters.size)
|
390
429
|
end
|
391
|
-
|
430
|
+
TypeFactory.string(size_type)
|
392
431
|
|
393
432
|
when 'optional'
|
394
433
|
if parameters.size != 1
|
@@ -396,7 +435,7 @@ class Puppet::Pops::Types::TypeParser
|
|
396
435
|
end
|
397
436
|
param = parameters[0]
|
398
437
|
assert_type(param) unless param.is_a?(String)
|
399
|
-
|
438
|
+
TypeFactory.optional(param)
|
400
439
|
|
401
440
|
when 'any', 'data', 'catalogentry', 'boolean', 'scalar', 'undef', 'numeric', 'default'
|
402
441
|
raise_unparameterized_type_error(parameterized_ast.left_expr)
|
@@ -404,11 +443,11 @@ class Puppet::Pops::Types::TypeParser
|
|
404
443
|
when 'notundef'
|
405
444
|
case parameters.size
|
406
445
|
when 0
|
407
|
-
|
446
|
+
TypeFactory.not_undef
|
408
447
|
when 1
|
409
448
|
param = parameters[0]
|
410
449
|
assert_type(param) unless param.is_a?(String)
|
411
|
-
|
450
|
+
TypeFactory.not_undef(param)
|
412
451
|
else
|
413
452
|
raise_invalid_parameters_error("NotUndef", "0 to 1", parameters.size)
|
414
453
|
end
|
@@ -418,31 +457,37 @@ class Puppet::Pops::Types::TypeParser
|
|
418
457
|
raise_invalid_parameters_error('Type', 1, parameters.size)
|
419
458
|
end
|
420
459
|
assert_type(parameters[0])
|
421
|
-
|
460
|
+
TypeFactory.type_type(parameters[0])
|
422
461
|
|
423
462
|
when 'runtime'
|
424
463
|
raise_invalid_parameters_error('Runtime', '2', parameters.size) unless parameters.size == 2
|
425
|
-
|
464
|
+
TypeFactory.runtime(*parameters)
|
426
465
|
|
427
466
|
else
|
428
|
-
# It is a resource such a File['/tmp/foo']
|
429
467
|
type_name = parameterized_ast.left_expr.value
|
430
|
-
if
|
431
|
-
|
468
|
+
if context.nil?
|
469
|
+
# Will be impossible to tell from a typed alias (when implemented) so a type reference
|
470
|
+
# is returned here for now
|
471
|
+
TypeFactory.type_reference(type_name.capitalize, parameters)
|
472
|
+
else
|
473
|
+
# It is a resource such a File['/tmp/foo']
|
474
|
+
if parameters.size != 1
|
475
|
+
raise_invalid_parameters_error(type_name.capitalize, 1, parameters.size)
|
476
|
+
end
|
477
|
+
TypeFactory.resource(type_name, parameters[0])
|
432
478
|
end
|
433
|
-
TYPES.resource(type_name, parameters[0])
|
434
479
|
end
|
435
480
|
end
|
436
481
|
|
437
482
|
private
|
438
483
|
|
439
484
|
def assert_type(t)
|
440
|
-
raise_invalid_type_specification_error unless t.is_a?(
|
485
|
+
raise_invalid_type_specification_error unless t.is_a?(PAnyType)
|
441
486
|
true
|
442
487
|
end
|
443
488
|
|
444
489
|
def assert_range_parameter(t)
|
445
|
-
raise_invalid_type_specification_error unless
|
490
|
+
raise_invalid_type_specification_error unless TypeFactory.is_range_parameter?(t)
|
446
491
|
end
|
447
492
|
|
448
493
|
def raise_invalid_type_specification_error
|
@@ -464,7 +509,9 @@ class Puppet::Pops::Types::TypeParser
|
|
464
509
|
end
|
465
510
|
|
466
511
|
def original_text_of(ast)
|
467
|
-
position =
|
512
|
+
position = Adapters::SourcePosAdapter.adapt(ast)
|
468
513
|
position.extract_text
|
469
514
|
end
|
470
515
|
end
|
516
|
+
end
|
517
|
+
end
|