puppet 4.3.0 → 4.4.0
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 +7 -0
- 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/build_defaults.yaml +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/hiera/scope.rb +1 -1
- 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 +45 -47
- 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/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- 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/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/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- 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/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- 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/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- 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/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- 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 +6 -2
- 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/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- 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/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- 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/functions.rb +28 -16
- 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 +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- 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 +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -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 +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -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 +18 -13
- 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/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -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 +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- 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 +16 -8
- 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 +140 -387
- 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 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- 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/group/windows_adsi.rb +2 -2
- 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 +16 -9
- 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/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- 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/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- 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/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 +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- 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/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- 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/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- 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/type.rb +11 -11
- 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 +65 -28
- 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 +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- 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 +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- 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/puppet.rb +17 -0
- 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/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -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/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- 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/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- 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/collection_spec.rb +8 -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 +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- 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/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- 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/epp_face_spec.rb +2 -2
- 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 +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- 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 +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- 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/indirector/json_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 +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- 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 +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -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 -390
- 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 +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- 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 +88 -47
- 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/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- 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 +99 -50
- 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 +46 -38
- 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 +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- 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/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- 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
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
|
@@ -6,49 +6,40 @@
|
|
|
6
6
|
# @todo All those uppercase methods ... they look bad in one way, but stand out nicely in the grammar...
|
|
7
7
|
# decide if they should change into lower case names (some of the are lower case)...
|
|
8
8
|
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
module Puppet::Pops
|
|
10
|
+
module Model
|
|
11
|
+
class Factory
|
|
12
12
|
attr_accessor :current
|
|
13
13
|
|
|
14
14
|
alias_method :model, :current
|
|
15
15
|
|
|
16
16
|
# Shared build_visitor, since there are many instances of Factory being used
|
|
17
|
-
@@build_visitor =
|
|
18
|
-
@@interpolation_visitor =
|
|
17
|
+
@@build_visitor = Visitor.new(self, "build")
|
|
18
|
+
@@interpolation_visitor = Visitor.new(self, "interpolate")
|
|
19
19
|
|
|
20
20
|
# Initialize a factory with a single object, or a class with arguments applied to build of
|
|
21
21
|
# created instance
|
|
22
22
|
#
|
|
23
|
-
def initialize
|
|
24
|
-
@current =
|
|
25
|
-
|
|
23
|
+
def initialize(o, *args)
|
|
24
|
+
@current = if o.instance_of?(Class)
|
|
25
|
+
@@build_visitor.visit_this(self, o.new, args)
|
|
26
|
+
elsif o.is_a?(PopsObject)
|
|
26
27
|
o
|
|
27
|
-
|
|
28
|
+
elsif o.instance_of?(Factory)
|
|
28
29
|
o.current
|
|
29
30
|
else
|
|
30
|
-
|
|
31
|
+
@@build_visitor.visit_this(self, o, args)
|
|
31
32
|
end
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
# Polymorphic build
|
|
35
36
|
def build(o, *args)
|
|
36
|
-
|
|
37
|
-
@@build_visitor.visit_this(self, o, args)
|
|
38
|
-
rescue =>e
|
|
39
|
-
# debug here when in trouble...
|
|
40
|
-
raise e
|
|
41
|
-
end
|
|
37
|
+
@@build_visitor.visit_this(self, o, args)
|
|
42
38
|
end
|
|
43
39
|
|
|
44
40
|
# Polymorphic interpolate
|
|
45
41
|
def interpolate()
|
|
46
|
-
|
|
47
|
-
@@interpolation_visitor.visit_this_0(self, current)
|
|
48
|
-
rescue =>e
|
|
49
|
-
# debug here when in trouble...
|
|
50
|
-
raise e
|
|
51
|
-
end
|
|
42
|
+
@@interpolation_visitor.visit_this_0(self, current)
|
|
52
43
|
end
|
|
53
44
|
|
|
54
45
|
# Building of Model classes
|
|
@@ -142,10 +133,10 @@ class Puppet::Pops::Model::Factory
|
|
|
142
133
|
end
|
|
143
134
|
|
|
144
135
|
# @param name [String] a valid classname
|
|
145
|
-
# @param parameters [Array<
|
|
136
|
+
# @param parameters [Array<Parameter>] may be empty
|
|
146
137
|
# @param parent_class_name [String, nil] a valid classname referencing a parent class, optional.
|
|
147
138
|
# @param body [Array<Expression>, Expression, nil] expression that constitute the body
|
|
148
|
-
# @return [
|
|
139
|
+
# @return [HostClassDefinition] configured from the parameters
|
|
149
140
|
#
|
|
150
141
|
def build_HostClassDefinition(o, name, parameters, parent_class_name, body)
|
|
151
142
|
build_NamedDefinition(o, name, parameters, body)
|
|
@@ -218,7 +209,7 @@ class Puppet::Pops::Model::Factory
|
|
|
218
209
|
when NilClass
|
|
219
210
|
nil
|
|
220
211
|
when Array
|
|
221
|
-
|
|
212
|
+
Factory.new(BlockExpression, *body)
|
|
222
213
|
else
|
|
223
214
|
build(body)
|
|
224
215
|
end
|
|
@@ -241,14 +232,14 @@ class Puppet::Pops::Model::Factory
|
|
|
241
232
|
|
|
242
233
|
def build_CapabilityMapping(o, kind, component, capability, mappings)
|
|
243
234
|
o.kind = kind
|
|
244
|
-
component = component.current if component.
|
|
235
|
+
component = component.current if component.instance_of?(Factory)
|
|
245
236
|
o.component = component
|
|
246
237
|
o.capability = capability
|
|
247
238
|
o.mappings = mappings.map { |m| build(m) }
|
|
248
239
|
o
|
|
249
240
|
end
|
|
250
241
|
|
|
251
|
-
# @param o [
|
|
242
|
+
# @param o [NodeDefinition]
|
|
252
243
|
# @param hosts [Array<Expression>] host matches
|
|
253
244
|
# @param parent [Expression] parent node matcher
|
|
254
245
|
# @param body [Object] see {#f_build_body}
|
|
@@ -260,7 +251,7 @@ class Puppet::Pops::Model::Factory
|
|
|
260
251
|
o
|
|
261
252
|
end
|
|
262
253
|
|
|
263
|
-
# @param o [
|
|
254
|
+
# @param o [SiteDefinition]
|
|
264
255
|
# @param body [Object] see {#f_build_body}
|
|
265
256
|
def build_SiteDefinition(o, body)
|
|
266
257
|
b = f_build_body(body)
|
|
@@ -339,13 +330,27 @@ class Puppet::Pops::Model::Factory
|
|
|
339
330
|
|
|
340
331
|
def build_QueryExpression(o, expr)
|
|
341
332
|
ops = to_ops(expr)
|
|
342
|
-
o.expr = ops unless
|
|
333
|
+
o.expr = ops unless Factory.nop? ops
|
|
334
|
+
o
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def build_TypeAlias(o, name, type_expr)
|
|
338
|
+
o.type_expr = build(type_expr)
|
|
339
|
+
o.name = name
|
|
340
|
+
o
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
def build_TypeDefinition(o, name, parent, body)
|
|
344
|
+
b = f_build_body(body)
|
|
345
|
+
o.body = b.current if b
|
|
346
|
+
o.parent = parent
|
|
347
|
+
o.name = name
|
|
343
348
|
o
|
|
344
349
|
end
|
|
345
350
|
|
|
346
351
|
def build_UnaryExpression(o, expr)
|
|
347
352
|
ops = to_ops(expr)
|
|
348
|
-
o.expr = ops unless
|
|
353
|
+
o.expr = ops unless Factory.nop? ops
|
|
349
354
|
o
|
|
350
355
|
end
|
|
351
356
|
|
|
@@ -369,55 +374,55 @@ class Puppet::Pops::Model::Factory
|
|
|
369
374
|
raise "Factory can not deal with a Lexer Token. Got token: #{o}. Probably caused by wrong index in grammar val[n]."
|
|
370
375
|
end
|
|
371
376
|
|
|
372
|
-
#
|
|
377
|
+
# Factory helpers
|
|
373
378
|
def f_build_unary(klazz, expr)
|
|
374
|
-
|
|
379
|
+
Factory.new(build(klazz, expr))
|
|
375
380
|
end
|
|
376
381
|
|
|
377
382
|
def f_build_binary_op(klazz, op, left, right)
|
|
378
|
-
|
|
383
|
+
Factory.new(build(klazz, op, left, right))
|
|
379
384
|
end
|
|
380
385
|
|
|
381
386
|
def f_build_binary(klazz, left, right)
|
|
382
|
-
|
|
387
|
+
Factory.new(build(klazz, left, right))
|
|
383
388
|
end
|
|
384
389
|
|
|
385
390
|
def f_build_vararg(klazz, left, *arg)
|
|
386
|
-
|
|
391
|
+
Factory.new(build(klazz, left, *arg))
|
|
387
392
|
end
|
|
388
393
|
|
|
389
394
|
def f_arithmetic(op, r)
|
|
390
|
-
f_build_binary_op(
|
|
395
|
+
f_build_binary_op(ArithmeticExpression, op, current, r)
|
|
391
396
|
end
|
|
392
397
|
|
|
393
398
|
def f_comparison(op, r)
|
|
394
|
-
f_build_binary_op(
|
|
399
|
+
f_build_binary_op(ComparisonExpression, op, current, r)
|
|
395
400
|
end
|
|
396
401
|
|
|
397
402
|
def f_match(op, r)
|
|
398
|
-
f_build_binary_op(
|
|
403
|
+
f_build_binary_op(MatchExpression, op, current, r)
|
|
399
404
|
end
|
|
400
405
|
|
|
401
406
|
# Operator helpers
|
|
402
|
-
def in(r) f_build_binary(
|
|
407
|
+
def in(r) f_build_binary(InExpression, current, r); end
|
|
403
408
|
|
|
404
|
-
def or(r) f_build_binary(
|
|
409
|
+
def or(r) f_build_binary(OrExpression, current, r); end
|
|
405
410
|
|
|
406
|
-
def and(r) f_build_binary(
|
|
411
|
+
def and(r) f_build_binary(AndExpression, current, r); end
|
|
407
412
|
|
|
408
|
-
def not(); f_build_unary(
|
|
413
|
+
def not(); f_build_unary(NotExpression, self); end
|
|
409
414
|
|
|
410
|
-
def minus(); f_build_unary(
|
|
415
|
+
def minus(); f_build_unary(UnaryMinusExpression, self); end
|
|
411
416
|
|
|
412
|
-
def unfold(); f_build_unary(
|
|
417
|
+
def unfold(); f_build_unary(UnfoldExpression, self); end
|
|
413
418
|
|
|
414
|
-
def text(); f_build_unary(
|
|
419
|
+
def text(); f_build_unary(TextExpression, self); end
|
|
415
420
|
|
|
416
|
-
def var(); f_build_unary(
|
|
421
|
+
def var(); f_build_unary(VariableExpression, self); end
|
|
417
422
|
|
|
418
|
-
def [](*r); f_build_vararg(
|
|
423
|
+
def [](*r); f_build_vararg(AccessExpression, current, *r); end
|
|
419
424
|
|
|
420
|
-
def dot r; f_build_binary(
|
|
425
|
+
def dot r; f_build_binary(NamedAccessExpression, current, r); end
|
|
421
426
|
|
|
422
427
|
def + r; f_arithmetic(:+, r); end
|
|
423
428
|
|
|
@@ -449,19 +454,19 @@ class Puppet::Pops::Model::Factory
|
|
|
449
454
|
|
|
450
455
|
def mne r; f_match(:'!~', r); end
|
|
451
456
|
|
|
452
|
-
def paren(); f_build_unary(
|
|
457
|
+
def paren(); f_build_unary(ParenthesizedExpression, current); end
|
|
453
458
|
|
|
454
459
|
def relop op, r
|
|
455
|
-
f_build_binary_op(
|
|
460
|
+
f_build_binary_op(RelationshipExpression, op.to_sym, current, r)
|
|
456
461
|
end
|
|
457
462
|
|
|
458
463
|
def select *args
|
|
459
|
-
|
|
464
|
+
Factory.new(build(SelectorExpression, current, *args))
|
|
460
465
|
end
|
|
461
466
|
|
|
462
467
|
# For CaseExpression, setting the default for an already build CaseExpression
|
|
463
468
|
def default r
|
|
464
|
-
current.addOptions(
|
|
469
|
+
current.addOptions(Factory.WHEN(:default, r).current)
|
|
465
470
|
self
|
|
466
471
|
end
|
|
467
472
|
|
|
@@ -472,17 +477,17 @@ class Puppet::Pops::Model::Factory
|
|
|
472
477
|
|
|
473
478
|
# Assignment =
|
|
474
479
|
def set(r)
|
|
475
|
-
f_build_binary_op(
|
|
480
|
+
f_build_binary_op(AssignmentExpression, :'=', current, r)
|
|
476
481
|
end
|
|
477
482
|
|
|
478
483
|
# Assignment +=
|
|
479
484
|
def plus_set(r)
|
|
480
|
-
f_build_binary_op(
|
|
485
|
+
f_build_binary_op(AssignmentExpression, :'+=', current, r)
|
|
481
486
|
end
|
|
482
487
|
|
|
483
488
|
# Assignment -=
|
|
484
489
|
def minus_set(r)
|
|
485
|
-
f_build_binary_op(
|
|
490
|
+
f_build_binary_op(AssignmentExpression, :'-=', current, r)
|
|
486
491
|
end
|
|
487
492
|
|
|
488
493
|
def attributes(*args)
|
|
@@ -507,31 +512,35 @@ class Puppet::Pops::Model::Factory
|
|
|
507
512
|
new(o).record_position(start_locatable, end_locateable)
|
|
508
513
|
end
|
|
509
514
|
|
|
515
|
+
def offset
|
|
516
|
+
@current.offset
|
|
517
|
+
end
|
|
518
|
+
|
|
519
|
+
def length
|
|
520
|
+
@current.length
|
|
521
|
+
end
|
|
522
|
+
|
|
510
523
|
# Records the position (start -> end) and computes the resulting length.
|
|
511
524
|
#
|
|
512
525
|
def record_position(start_locatable, end_locatable)
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
o = current
|
|
517
|
-
# record information directly in the Model::Positioned object
|
|
518
|
-
o.offset = from.offset
|
|
519
|
-
o.length ||= to.offset - from.offset + to.length
|
|
526
|
+
# record information directly in the Positioned object
|
|
527
|
+
start_offset = start_locatable.offset
|
|
528
|
+
@current.set_loc(start_offset, end_locatable ? end_locatable.offset - start_offset + end_locatable.length : start_locatable.length)
|
|
520
529
|
self
|
|
521
530
|
end
|
|
522
531
|
|
|
523
532
|
# @return [Puppet::Pops::Adapters::SourcePosAdapter] with location information
|
|
524
533
|
def loc()
|
|
525
|
-
|
|
534
|
+
Adapters::SourcePosAdapter.adapt(current)
|
|
526
535
|
end
|
|
527
536
|
|
|
528
537
|
# Sets the form of the resource expression (:regular (the default), :virtual, or :exported).
|
|
529
538
|
# Produces true if the expression was a resource expression, false otherwise.
|
|
530
539
|
#
|
|
531
540
|
def self.set_resource_form(expr, form)
|
|
532
|
-
expr = expr.current if expr.
|
|
541
|
+
expr = expr.current if expr.instance_of?(Factory)
|
|
533
542
|
# Note: Validation handles illegal combinations
|
|
534
|
-
return false unless expr.is_a?(
|
|
543
|
+
return false unless expr.is_a?(AbstractResource)
|
|
535
544
|
expr.form = form
|
|
536
545
|
return true
|
|
537
546
|
end
|
|
@@ -544,15 +553,15 @@ class Puppet::Pops::Model::Factory
|
|
|
544
553
|
# * _any other_ => ':error', all other are considered illegal
|
|
545
554
|
#
|
|
546
555
|
def self.resource_shape(expr)
|
|
547
|
-
expr = expr.current if expr.
|
|
556
|
+
expr = expr.current if expr.instance_of?(Factory)
|
|
548
557
|
case expr
|
|
549
|
-
when
|
|
558
|
+
when QualifiedName
|
|
550
559
|
:resource
|
|
551
|
-
when
|
|
560
|
+
when QualifiedReference
|
|
552
561
|
:defaults
|
|
553
|
-
when
|
|
562
|
+
when AccessExpression
|
|
554
563
|
# if Resource[e], then it is not resource specific
|
|
555
|
-
if expr.left_expr.is_a?(
|
|
564
|
+
if expr.left_expr.is_a?(QualifiedReference) && expr.left_expr.value == 'resource' && expr.keys.size == 1
|
|
556
565
|
:defaults
|
|
557
566
|
else
|
|
558
567
|
:override
|
|
@@ -573,43 +582,43 @@ class Puppet::Pops::Model::Factory
|
|
|
573
582
|
|
|
574
583
|
def self.var(o); new(o).var; end
|
|
575
584
|
|
|
576
|
-
def self.block(*args); new(
|
|
585
|
+
def self.block(*args); new(BlockExpression, *args); end
|
|
577
586
|
|
|
578
|
-
def self.string(*args); new(
|
|
587
|
+
def self.string(*args); new(ConcatenatedString, *args); end
|
|
579
588
|
|
|
580
589
|
def self.text(o); new(o).text; end
|
|
581
590
|
|
|
582
|
-
def self.IF(test_e,then_e,else_e); new(
|
|
591
|
+
def self.IF(test_e,then_e,else_e); new(IfExpression, test_e, then_e, else_e); end
|
|
583
592
|
|
|
584
|
-
def self.UNLESS(test_e,then_e,else_e); new(
|
|
593
|
+
def self.UNLESS(test_e,then_e,else_e); new(UnlessExpression, test_e, then_e, else_e); end
|
|
585
594
|
|
|
586
|
-
def self.CASE(test_e,*options); new(
|
|
595
|
+
def self.CASE(test_e,*options); new(CaseExpression, test_e, *options); end
|
|
587
596
|
|
|
588
|
-
def self.WHEN(values_list, block); new(
|
|
597
|
+
def self.WHEN(values_list, block); new(CaseOption, values_list, block); end
|
|
589
598
|
|
|
590
|
-
def self.MAP(match, value); new(
|
|
599
|
+
def self.MAP(match, value); new(SelectorEntry, match, value); end
|
|
591
600
|
|
|
592
|
-
def self.TYPE(name, super_name=nil); new(
|
|
601
|
+
def self.TYPE(name, super_name=nil); new(CreateTypeExpression, name, super_name); end
|
|
593
602
|
|
|
594
|
-
def self.ATTR(name, type_expr=nil); new(
|
|
603
|
+
def self.ATTR(name, type_expr=nil); new(CreateAttributeExpression, name, type_expr); end
|
|
595
604
|
|
|
596
|
-
def self.ENUM(*args); new(
|
|
605
|
+
def self.ENUM(*args); new(CreateEnumExpression, *args); end
|
|
597
606
|
|
|
598
|
-
def self.KEY_ENTRY(key, val); new(
|
|
607
|
+
def self.KEY_ENTRY(key, val); new(KeyedEntry, key, val); end
|
|
599
608
|
|
|
600
|
-
def self.HASH(entries); new(
|
|
609
|
+
def self.HASH(entries); new(LiteralHash, *entries); end
|
|
601
610
|
|
|
602
|
-
def self.HEREDOC(name, expr); new(
|
|
611
|
+
def self.HEREDOC(name, expr); new(HeredocExpression, name, expr); end
|
|
603
612
|
|
|
604
|
-
def self.SUBLOCATE(token, expr) new(
|
|
613
|
+
def self.SUBLOCATE(token, expr) new(SubLocatedExpression, token, expr); end
|
|
605
614
|
|
|
606
|
-
def self.LIST(entries); new(
|
|
615
|
+
def self.LIST(entries); new(LiteralList, *entries); end
|
|
607
616
|
|
|
608
|
-
def self.PARAM(name, expr=nil); new(
|
|
617
|
+
def self.PARAM(name, expr=nil); new(Parameter, name, expr); end
|
|
609
618
|
|
|
610
|
-
def self.NODE(hosts, parent, body); new(
|
|
619
|
+
def self.NODE(hosts, parent, body); new(NodeDefinition, hosts, parent, body); end
|
|
611
620
|
|
|
612
|
-
def self.SITE(body); new(
|
|
621
|
+
def self.SITE(body); new(SiteDefinition, body); end
|
|
613
622
|
|
|
614
623
|
# Parameters
|
|
615
624
|
|
|
@@ -627,8 +636,8 @@ class Puppet::Pops::Model::Factory
|
|
|
627
636
|
# case it is returned.
|
|
628
637
|
#
|
|
629
638
|
def self.fqn(o)
|
|
630
|
-
o = o.current if o.
|
|
631
|
-
o = new(
|
|
639
|
+
o = o.current if o.instance_of?(Factory)
|
|
640
|
+
o = new(QualifiedName, o) unless o.is_a? QualifiedName
|
|
632
641
|
o
|
|
633
642
|
end
|
|
634
643
|
|
|
@@ -636,22 +645,22 @@ class Puppet::Pops::Model::Factory
|
|
|
636
645
|
# case it is returned.
|
|
637
646
|
#
|
|
638
647
|
def self.fqr(o)
|
|
639
|
-
o = o.current if o.
|
|
640
|
-
o = new(
|
|
648
|
+
o = o.current if o.instance_of?(Factory)
|
|
649
|
+
o = new(QualifiedReference, o) unless o.is_a? QualifiedReference
|
|
641
650
|
o
|
|
642
651
|
end
|
|
643
652
|
|
|
644
653
|
def self.TEXT(expr)
|
|
645
|
-
new(
|
|
654
|
+
new(TextExpression, new(expr).interpolate)
|
|
646
655
|
end
|
|
647
656
|
|
|
648
657
|
# TODO_EPP
|
|
649
658
|
def self.RENDER_STRING(o)
|
|
650
|
-
new(
|
|
659
|
+
new(RenderStringExpression, o)
|
|
651
660
|
end
|
|
652
661
|
|
|
653
662
|
def self.RENDER_EXPR(expr)
|
|
654
|
-
new(
|
|
663
|
+
new(RenderExpression, expr)
|
|
655
664
|
end
|
|
656
665
|
|
|
657
666
|
def self.EPP(parameters, body)
|
|
@@ -662,27 +671,27 @@ class Puppet::Pops::Model::Factory
|
|
|
662
671
|
params = parameters
|
|
663
672
|
parameters_specified = true
|
|
664
673
|
end
|
|
665
|
-
LAMBDA(params, new(
|
|
674
|
+
LAMBDA(params, new(EppExpression, parameters_specified, body))
|
|
666
675
|
end
|
|
667
676
|
|
|
668
677
|
def self.RESERVED(name, future=false)
|
|
669
|
-
new(
|
|
678
|
+
new(ReservedWord, name, future)
|
|
670
679
|
end
|
|
671
680
|
|
|
672
681
|
# TODO: This is the same a fqn factory method, don't know if callers to fqn and QNAME can live with the
|
|
673
682
|
# same result or not yet - refactor into one method when decided.
|
|
674
683
|
#
|
|
675
684
|
def self.QNAME(name)
|
|
676
|
-
new(
|
|
685
|
+
new(QualifiedName, name)
|
|
677
686
|
end
|
|
678
687
|
|
|
679
688
|
def self.NUMBER(name_or_numeric)
|
|
680
|
-
if n_radix =
|
|
689
|
+
if n_radix = Utils.to_n_with_radix(name_or_numeric)
|
|
681
690
|
val, radix = n_radix
|
|
682
691
|
if val.is_a?(Float)
|
|
683
|
-
new(
|
|
692
|
+
new(LiteralFloat, val)
|
|
684
693
|
else
|
|
685
|
-
new(
|
|
694
|
+
new(LiteralInteger, val, radix)
|
|
686
695
|
end
|
|
687
696
|
else
|
|
688
697
|
# Bad number should already have been caught by lexer - this should never happen
|
|
@@ -693,112 +702,120 @@ class Puppet::Pops::Model::Factory
|
|
|
693
702
|
# Convert input string to either a qualified name, a LiteralInteger with radix, or a LiteralFloat
|
|
694
703
|
#
|
|
695
704
|
def self.QNAME_OR_NUMBER(name)
|
|
696
|
-
if n_radix =
|
|
705
|
+
if n_radix = Utils.to_n_with_radix(name)
|
|
697
706
|
val, radix = n_radix
|
|
698
707
|
if val.is_a?(Float)
|
|
699
|
-
new(
|
|
708
|
+
new(LiteralFloat, val)
|
|
700
709
|
else
|
|
701
|
-
new(
|
|
710
|
+
new(LiteralInteger, val, radix)
|
|
702
711
|
end
|
|
703
712
|
else
|
|
704
|
-
new(
|
|
713
|
+
new(QualifiedName, name)
|
|
705
714
|
end
|
|
706
715
|
end
|
|
707
716
|
|
|
708
717
|
def self.QREF(name)
|
|
709
|
-
new(
|
|
718
|
+
new(QualifiedReference, name)
|
|
710
719
|
end
|
|
711
720
|
|
|
712
721
|
def self.VIRTUAL_QUERY(query_expr)
|
|
713
|
-
new(
|
|
722
|
+
new(VirtualQuery, query_expr)
|
|
714
723
|
end
|
|
715
724
|
|
|
716
725
|
def self.EXPORTED_QUERY(query_expr)
|
|
717
|
-
new(
|
|
726
|
+
new(ExportedQuery, query_expr)
|
|
718
727
|
end
|
|
719
728
|
|
|
720
729
|
def self.ATTRIBUTE_OP(name, op, expr)
|
|
721
|
-
new(
|
|
730
|
+
new(AttributeOperation, name, op, expr)
|
|
722
731
|
end
|
|
723
732
|
|
|
724
733
|
def self.ATTRIBUTES_OP(expr)
|
|
725
|
-
new(
|
|
734
|
+
new(AttributesOperation, expr)
|
|
726
735
|
end
|
|
727
736
|
|
|
728
737
|
def self.CALL_NAMED(name, rval_required, argument_list)
|
|
729
|
-
unless name.kind_of?(
|
|
730
|
-
name =
|
|
738
|
+
unless name.kind_of?(PopsObject)
|
|
739
|
+
name = Factory.fqn(name) unless name.instance_of?(Factory)
|
|
731
740
|
end
|
|
732
|
-
new(
|
|
741
|
+
new(CallNamedFunctionExpression, name, rval_required, *argument_list)
|
|
733
742
|
end
|
|
734
743
|
|
|
735
744
|
def self.CALL_METHOD(functor, argument_list)
|
|
736
|
-
new(
|
|
745
|
+
new(CallMethodExpression, functor, true, nil, *argument_list)
|
|
737
746
|
end
|
|
738
747
|
|
|
739
748
|
def self.COLLECT(type_expr, query_expr, attribute_operations)
|
|
740
|
-
new(
|
|
749
|
+
new(CollectExpression, type_expr, query_expr, attribute_operations)
|
|
741
750
|
end
|
|
742
751
|
|
|
743
752
|
def self.NAMED_ACCESS(type_name, bodies)
|
|
744
|
-
new(
|
|
753
|
+
new(NamedAccessExpression, type_name, bodies)
|
|
745
754
|
end
|
|
746
755
|
|
|
747
756
|
def self.RESOURCE(type_name, bodies)
|
|
748
|
-
new(
|
|
757
|
+
new(ResourceExpression, type_name, bodies)
|
|
749
758
|
end
|
|
750
759
|
|
|
751
760
|
def self.RESOURCE_DEFAULTS(type_name, attribute_operations)
|
|
752
|
-
new(
|
|
761
|
+
new(ResourceDefaultsExpression, type_name, attribute_operations)
|
|
753
762
|
end
|
|
754
763
|
|
|
755
764
|
def self.RESOURCE_OVERRIDE(resource_ref, attribute_operations)
|
|
756
|
-
new(
|
|
765
|
+
new(ResourceOverrideExpression, resource_ref, attribute_operations)
|
|
757
766
|
end
|
|
758
767
|
|
|
759
768
|
def self.RESOURCE_BODY(resource_title, attribute_operations)
|
|
760
|
-
new(
|
|
769
|
+
new(ResourceBody, resource_title, attribute_operations)
|
|
761
770
|
end
|
|
762
771
|
|
|
763
772
|
def self.PROGRAM(body, definitions, locator)
|
|
764
|
-
new(
|
|
773
|
+
new(Program, body, definitions, locator)
|
|
765
774
|
end
|
|
766
775
|
|
|
767
776
|
# Builds a BlockExpression if args size > 1, else the single expression/value in args
|
|
768
777
|
def self.block_or_expression(*args)
|
|
769
778
|
if args.size > 1
|
|
770
|
-
new(
|
|
779
|
+
new(BlockExpression, *args)
|
|
771
780
|
else
|
|
772
781
|
new(args[0])
|
|
773
782
|
end
|
|
774
783
|
end
|
|
775
784
|
|
|
776
785
|
def self.HOSTCLASS(name, parameters, parent, body)
|
|
777
|
-
new(
|
|
786
|
+
new(HostClassDefinition, name, parameters, parent, body)
|
|
778
787
|
end
|
|
779
788
|
|
|
780
789
|
def self.DEFINITION(name, parameters, body)
|
|
781
|
-
new(
|
|
790
|
+
new(ResourceTypeDefinition, name, parameters, body)
|
|
782
791
|
end
|
|
783
792
|
|
|
784
793
|
def self.CAPABILITY_MAPPING(kind, component, cap_name, mappings)
|
|
785
|
-
new(
|
|
794
|
+
new(CapabilityMapping, kind, component, cap_name, mappings)
|
|
786
795
|
end
|
|
787
796
|
|
|
788
797
|
def self.APPLICATION(name, parameters, body)
|
|
789
|
-
new(
|
|
798
|
+
new(Application, name, parameters, body)
|
|
790
799
|
end
|
|
791
800
|
|
|
792
801
|
def self.FUNCTION(name, parameters, body)
|
|
793
|
-
new(
|
|
802
|
+
new(FunctionDefinition, name, parameters, body)
|
|
794
803
|
end
|
|
795
804
|
|
|
796
805
|
def self.LAMBDA(parameters, body)
|
|
797
|
-
new(
|
|
806
|
+
new(LambdaExpression, parameters, body)
|
|
807
|
+
end
|
|
808
|
+
|
|
809
|
+
def self.TYPE_ALIAS(name, type_expr)
|
|
810
|
+
new(TypeAlias, name, type_expr)
|
|
811
|
+
end
|
|
812
|
+
|
|
813
|
+
def self.TYPE_DEFINITION(name, parent, body)
|
|
814
|
+
new(TypeDefinition, name, parent, body)
|
|
798
815
|
end
|
|
799
816
|
|
|
800
817
|
def self.nop? o
|
|
801
|
-
o.nil? || o.is_a?(
|
|
818
|
+
o.nil? || o.is_a?(Nop)
|
|
802
819
|
end
|
|
803
820
|
|
|
804
821
|
STATEMENT_CALLS = {
|
|
@@ -837,19 +854,19 @@ class Puppet::Pops::Model::Factory
|
|
|
837
854
|
#
|
|
838
855
|
def self.transform_calls(expressions)
|
|
839
856
|
expressions.reduce([]) do |memo, expr|
|
|
840
|
-
expr = expr.current if expr.
|
|
857
|
+
expr = expr.current if expr.instance_of?(Factory)
|
|
841
858
|
name = memo[-1]
|
|
842
|
-
if name.is_a?(
|
|
859
|
+
if name.is_a?(QualifiedName) && STATEMENT_CALLS[name.value]
|
|
843
860
|
if expr.is_a?(Array)
|
|
844
|
-
expr = expr.reject {|e| e.is_a?(
|
|
861
|
+
expr = expr.reject {|e| e.is_a?(Parser::LexerSupport::TokenValue) }
|
|
845
862
|
else
|
|
846
863
|
expr = [expr]
|
|
847
864
|
end
|
|
848
|
-
the_call =
|
|
865
|
+
the_call = Factory.CALL_NAMED(name, false, expr)
|
|
849
866
|
# last positioned is last arg if there are several
|
|
850
867
|
record_position(the_call, name, expr.is_a?(Array) ? expr[-1] : expr)
|
|
851
868
|
memo[-1] = the_call
|
|
852
|
-
if expr.is_a?(
|
|
869
|
+
if expr.is_a?(CallNamedFunctionExpression)
|
|
853
870
|
# Patch statement function call to expression style
|
|
854
871
|
# This is needed because it is first parsed as a "statement" and the requirement changes as it becomes
|
|
855
872
|
# an argument to the name to call transform above.
|
|
@@ -859,7 +876,7 @@ class Puppet::Pops::Model::Factory
|
|
|
859
876
|
raise ArgsToNonCallError.new(expr, name)
|
|
860
877
|
else
|
|
861
878
|
memo << expr
|
|
862
|
-
if expr.is_a?(
|
|
879
|
+
if expr.is_a?(CallNamedFunctionExpression)
|
|
863
880
|
# Patch rvalue expression function call to statement style.
|
|
864
881
|
# This is not really required but done to be AST model compliant
|
|
865
882
|
expr.rval_required = false
|
|
@@ -872,15 +889,17 @@ class Puppet::Pops::Model::Factory
|
|
|
872
889
|
|
|
873
890
|
# Transforms a left expression followed by an untitled resource (in the form of attribute_operations)
|
|
874
891
|
# @param left [Factory, Expression] the lhs followed what may be a hash
|
|
875
|
-
def self.transform_resource_wo_title(left, attribute_ops)
|
|
892
|
+
def self.transform_resource_wo_title(left, attribute_ops, lbrace_token, rbrace_token)
|
|
876
893
|
# Returning nil means accepting the given as a potential resource expression
|
|
877
894
|
return nil unless attribute_ops.is_a? Array
|
|
878
|
-
return nil unless left.current.is_a?(
|
|
895
|
+
return nil unless left.current.is_a?(QualifiedName)
|
|
879
896
|
keyed_entries = attribute_ops.map do |ao|
|
|
880
897
|
return nil if ao.operator == :'+>'
|
|
881
898
|
KEY_ENTRY(ao.attribute_name, ao.value_expr)
|
|
882
899
|
end
|
|
883
|
-
|
|
900
|
+
a_hash = HASH(keyed_entries)
|
|
901
|
+
a_hash.record_position(lbrace_token, rbrace_token)
|
|
902
|
+
result = block_or_expression(*transform_calls([left, a_hash]))
|
|
884
903
|
result
|
|
885
904
|
end
|
|
886
905
|
|
|
@@ -890,42 +909,42 @@ class Puppet::Pops::Model::Factory
|
|
|
890
909
|
# that when evaluated produce the same thing.
|
|
891
910
|
|
|
892
911
|
def build_String(o)
|
|
893
|
-
x =
|
|
912
|
+
x = LiteralString.new
|
|
894
913
|
x.value = o;
|
|
895
914
|
x
|
|
896
915
|
end
|
|
897
916
|
|
|
898
917
|
def build_NilClass(o)
|
|
899
|
-
x =
|
|
918
|
+
x = Nop.new
|
|
900
919
|
x
|
|
901
920
|
end
|
|
902
921
|
|
|
903
922
|
def build_TrueClass(o)
|
|
904
|
-
x =
|
|
923
|
+
x = LiteralBoolean.new
|
|
905
924
|
x.value = o
|
|
906
925
|
x
|
|
907
926
|
end
|
|
908
927
|
|
|
909
928
|
def build_FalseClass(o)
|
|
910
|
-
x =
|
|
929
|
+
x = LiteralBoolean.new
|
|
911
930
|
x.value = o
|
|
912
931
|
x
|
|
913
932
|
end
|
|
914
933
|
|
|
915
934
|
def build_Fixnum(o)
|
|
916
|
-
x =
|
|
935
|
+
x = LiteralInteger.new
|
|
917
936
|
x.value = o;
|
|
918
937
|
x
|
|
919
938
|
end
|
|
920
939
|
|
|
921
940
|
def build_Float(o)
|
|
922
|
-
x =
|
|
941
|
+
x = LiteralFloat.new
|
|
923
942
|
x.value = o;
|
|
924
943
|
x
|
|
925
944
|
end
|
|
926
945
|
|
|
927
946
|
def build_Regexp(o)
|
|
928
|
-
x =
|
|
947
|
+
x = LiteralRegularExpression.new
|
|
929
948
|
x.value = o;
|
|
930
949
|
x
|
|
931
950
|
end
|
|
@@ -948,9 +967,9 @@ class Puppet::Pops::Model::Factory
|
|
|
948
967
|
def build_Symbol(o)
|
|
949
968
|
case o
|
|
950
969
|
when :undef
|
|
951
|
-
|
|
970
|
+
LiteralUndef.new
|
|
952
971
|
when :default
|
|
953
|
-
|
|
972
|
+
LiteralDefault.new
|
|
954
973
|
else
|
|
955
974
|
build_String(o.to_s)
|
|
956
975
|
end
|
|
@@ -958,7 +977,7 @@ class Puppet::Pops::Model::Factory
|
|
|
958
977
|
|
|
959
978
|
# Creates a LiteralList instruction from an Array, where the entries are built.
|
|
960
979
|
def build_Array(o)
|
|
961
|
-
x =
|
|
980
|
+
x = LiteralList.new
|
|
962
981
|
o.each { |v| x.addValues(build(v)) }
|
|
963
982
|
x
|
|
964
983
|
end
|
|
@@ -967,8 +986,8 @@ class Puppet::Pops::Model::Factory
|
|
|
967
986
|
# The hash entries are added in sorted order based on key.to_s
|
|
968
987
|
#
|
|
969
988
|
def build_Hash(o)
|
|
970
|
-
x =
|
|
971
|
-
(o.sort_by {|k,v| k.to_s}).each {|k,v| x.addEntries(build(
|
|
989
|
+
x = LiteralHash.new
|
|
990
|
+
(o.sort_by {|k,v| k.to_s}).each {|k,v| x.addEntries(build(KeyedEntry.new, k, v)) }
|
|
972
991
|
x
|
|
973
992
|
end
|
|
974
993
|
|
|
@@ -1051,10 +1070,10 @@ class Puppet::Pops::Model::Factory
|
|
|
1051
1070
|
|
|
1052
1071
|
def is_interop_rewriteable?(o)
|
|
1053
1072
|
case o
|
|
1054
|
-
when
|
|
1055
|
-
|
|
1073
|
+
when AccessExpression, QualifiedName,
|
|
1074
|
+
NamedAccessExpression, CallMethodExpression
|
|
1056
1075
|
true
|
|
1057
|
-
when
|
|
1076
|
+
when LiteralInteger
|
|
1058
1077
|
# Only decimal integers can represent variables, else it is a number
|
|
1059
1078
|
o.radix == 10
|
|
1060
1079
|
else
|
|
@@ -1065,9 +1084,9 @@ class Puppet::Pops::Model::Factory
|
|
|
1065
1084
|
# Checks if the object is already a model object, or build it
|
|
1066
1085
|
def to_ops(o, *args)
|
|
1067
1086
|
case o
|
|
1068
|
-
when
|
|
1087
|
+
when PopsObject
|
|
1069
1088
|
o
|
|
1070
|
-
when
|
|
1089
|
+
when Factory
|
|
1071
1090
|
o.current
|
|
1072
1091
|
else
|
|
1073
1092
|
build(o, *args)
|
|
@@ -1078,7 +1097,7 @@ class Puppet::Pops::Model::Factory
|
|
|
1078
1097
|
new(args.map do |e|
|
|
1079
1098
|
e = e.current if e.is_a?(self)
|
|
1080
1099
|
case e
|
|
1081
|
-
when
|
|
1100
|
+
when LiteralString
|
|
1082
1101
|
e.value
|
|
1083
1102
|
when String
|
|
1084
1103
|
e
|
|
@@ -1089,6 +1108,9 @@ class Puppet::Pops::Model::Factory
|
|
|
1089
1108
|
end
|
|
1090
1109
|
|
|
1091
1110
|
def to_s
|
|
1092
|
-
|
|
1111
|
+
ModelTreeDumper.new.dump(self)
|
|
1093
1112
|
end
|
|
1094
1113
|
end
|
|
1114
|
+
end
|
|
1115
|
+
end
|
|
1116
|
+
|