puppet 3.6.2 → 3.7.0
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/CONTRIBUTING.md +2 -3
- data/Gemfile +14 -10
- data/README.md +1 -1
- data/ext/build_defaults.yaml +16 -1
- data/ext/debian/control +3 -2
- data/ext/debian/puppet-common.dirs +1 -0
- data/ext/debian/puppet-common.postinst +8 -8
- data/ext/debian/puppet-common.postrm +2 -1
- data/ext/project_data.yaml +16 -12
- data/ext/rack/example-passenger-vhost.conf +2 -2
- data/ext/redhat/puppet.spec.erb +6 -3
- data/ext/windows/service/daemon.rb +47 -41
- data/install.rb +1 -1
- data/lib/puppet.rb +34 -24
- data/lib/puppet/application.rb +34 -1
- data/lib/puppet/application/agent.rb +9 -8
- data/lib/puppet/application/apply.rb +14 -5
- data/lib/puppet/application/doc.rb +4 -11
- data/lib/puppet/application/master.rb +19 -17
- data/lib/puppet/application/queue.rb +1 -1
- data/lib/puppet/application/resource.rb +0 -1
- data/lib/puppet/configurer.rb +39 -2
- data/lib/puppet/configurer/downloader.rb +5 -10
- data/lib/puppet/configurer/downloader_factory.rb +34 -0
- data/lib/puppet/configurer/plugin_handler.rb +11 -17
- data/lib/puppet/defaults.rb +244 -119
- data/lib/puppet/environments.rb +8 -0
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/external/pson/pure/generator.rb +1 -8
- data/lib/puppet/face/ca.rb +7 -0
- data/lib/puppet/face/file/download.rb +5 -2
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/instrumentation_data.rb +2 -1
- data/lib/puppet/face/instrumentation_listener.rb +2 -1
- data/lib/puppet/face/instrumentation_probe.rb +2 -1
- data/lib/puppet/face/module/build.rb +2 -2
- data/lib/puppet/face/module/generate.rb +20 -12
- data/lib/puppet/face/module/install.rb +4 -3
- data/lib/puppet/face/module/uninstall.rb +7 -0
- data/lib/puppet/face/module/upgrade.rb +11 -3
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +99 -7
- data/lib/puppet/feature/base.rb +18 -12
- data/lib/puppet/feature/cfacter.rb +14 -0
- data/lib/puppet/feature/pe_license.rb +4 -0
- data/lib/puppet/file_bucket/dipper.rb +19 -12
- data/lib/puppet/file_bucket/file.rb +73 -10
- data/lib/puppet/file_serving/configuration/parser.rb +3 -3
- data/lib/puppet/file_system.rb +1 -1
- data/lib/puppet/file_system/file19.rb +41 -0
- data/lib/puppet/file_system/file19windows.rb +0 -1
- data/lib/puppet/file_system/uniquefile.rb +190 -0
- data/lib/puppet/forge.rb +34 -7
- data/lib/puppet/forge/errors.rb +5 -6
- data/lib/puppet/forge/repository.rb +14 -2
- data/lib/puppet/functions.rb +19 -12
- data/lib/puppet/functions/assert_type.rb +27 -10
- data/lib/puppet/functions/each.rb +111 -0
- data/lib/puppet/functions/epp.rb +54 -0
- data/lib/puppet/functions/filter.rb +113 -0
- data/lib/puppet/functions/inline_epp.rb +88 -0
- data/lib/puppet/functions/map.rb +97 -0
- data/lib/puppet/functions/match.rb +102 -0
- data/lib/puppet/functions/reduce.rb +94 -0
- data/lib/puppet/functions/slice.rb +126 -0
- data/lib/puppet/functions/with.rb +23 -0
- data/lib/puppet/indirector/catalog/compiler.rb +4 -4
- data/lib/puppet/indirector/data_binding/hiera.rb +2 -45
- data/lib/puppet/indirector/facts/couch.rb +3 -1
- data/lib/puppet/indirector/facts/facter.rb +52 -65
- data/lib/puppet/indirector/file_bucket_file/file.rb +6 -3
- data/lib/puppet/indirector/hiera.rb +48 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/request.rb +9 -3
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/rest.rb +7 -3
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/module.rb +2 -1
- data/lib/puppet/module_tool.rb +2 -0
- data/lib/puppet/module_tool/applications/application.rb +4 -5
- data/lib/puppet/module_tool/applications/builder.rb +64 -5
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -2
- data/lib/puppet/module_tool/applications/unpacker.rb +14 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +23 -13
- data/lib/puppet/module_tool/dependency.rb +12 -0
- data/lib/puppet/module_tool/errors/shared.rb +1 -1
- data/lib/puppet/module_tool/errors/upgrader.rb +20 -0
- data/lib/puppet/module_tool/installed_modules.rb +6 -1
- data/lib/puppet/module_tool/metadata.rb +53 -3
- data/lib/puppet/module_tool/modulefile.rb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -17
- data/lib/puppet/module_tool/tar/mini.rb +20 -2
- data/lib/puppet/network/http.rb +5 -0
- data/lib/puppet/network/http/api/v1.rb +2 -2
- data/lib/puppet/network/http/api/v2/environments.rb +15 -1
- data/lib/puppet/network/http/connection.rb +54 -68
- data/lib/puppet/network/http/factory.rb +44 -0
- data/lib/puppet/network/http/handler.rb +12 -6
- data/lib/puppet/network/http/nocache_pool.rb +21 -0
- data/lib/puppet/network/http/pool.rb +120 -0
- data/lib/puppet/network/http/rack/rest.rb +3 -1
- data/lib/puppet/network/http/session.rb +17 -0
- data/lib/puppet/network/http/site.rb +39 -0
- data/lib/puppet/network/http/webrick/rest.rb +3 -1
- data/lib/puppet/network/http_pool.rb +3 -4
- data/lib/puppet/node.rb +19 -6
- data/lib/puppet/node/environment.rb +34 -8
- data/lib/puppet/parser/ast/collection.rb +4 -0
- data/lib/puppet/parser/ast/collexpr.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +5 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +49 -6
- data/lib/puppet/parser/compiler.rb +66 -38
- data/lib/puppet/parser/e4_parser_adapter.rb +2 -2
- data/lib/puppet/parser/files.rb +76 -33
- data/lib/puppet/parser/functions.rb +1 -7
- data/lib/puppet/parser/functions/assert_type.rb +31 -0
- data/lib/puppet/parser/functions/contain.rb +15 -5
- data/lib/puppet/parser/functions/create_resources.rb +5 -1
- data/lib/puppet/parser/functions/digest.rb +5 -0
- data/lib/puppet/parser/functions/each.rb +46 -107
- data/lib/puppet/parser/functions/epp.rb +13 -9
- data/lib/puppet/parser/functions/file.rb +20 -12
- data/lib/puppet/parser/functions/filter.rb +32 -88
- data/lib/puppet/parser/functions/include.rb +12 -24
- data/lib/puppet/parser/functions/inline_epp.rb +9 -12
- data/lib/puppet/parser/functions/lookup.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +30 -83
- data/lib/puppet/parser/functions/match.rb +28 -0
- data/lib/puppet/parser/functions/reduce.rb +69 -98
- data/lib/puppet/parser/functions/require.rb +13 -5
- data/lib/puppet/parser/functions/search.rb +6 -1
- data/lib/puppet/parser/functions/slice.rb +35 -103
- data/lib/puppet/parser/functions/template.rb +12 -5
- data/lib/puppet/parser/functions/with.rb +21 -0
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +21 -33
- data/lib/puppet/parser/resource.rb +2 -3
- data/lib/puppet/parser/scope.rb +85 -15
- data/lib/puppet/pops.rb +9 -11
- data/lib/puppet/pops/adapters.rb +2 -1
- data/lib/puppet/pops/binder/bindings_checker.rb +4 -4
- data/lib/puppet/pops/binder/bindings_factory.rb +6 -6
- data/lib/puppet/pops/binder/bindings_label_provider.rb +1 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +2 -2
- data/lib/puppet/pops/binder/bindings_model.rb +58 -191
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +1 -1
- data/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
- data/lib/puppet/pops/binder/injector.rb +9 -9
- data/lib/puppet/pops/binder/key_factory.rb +2 -2
- data/lib/puppet/pops/binder/lookup.rb +14 -6
- data/lib/puppet/pops/binder/producers.rb +9 -12
- data/lib/puppet/pops/evaluator/access_operator.rb +35 -29
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
- data/lib/puppet/pops/evaluator/callable_signature.rb +1 -2
- data/lib/puppet/pops/evaluator/closure.rb +151 -35
- data/lib/puppet/pops/evaluator/compare_operator.rb +26 -22
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +16 -15
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +277 -229
- data/lib/puppet/pops/evaluator/relationship_operator.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +86 -53
- data/lib/puppet/pops/functions/dispatch.rb +9 -4
- data/lib/puppet/pops/functions/dispatcher.rb +2 -169
- data/lib/puppet/pops/issue_reporter.rb +14 -6
- data/lib/puppet/pops/issues.rb +96 -21
- data/lib/puppet/pops/loader/base_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +2 -21
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +12 -2
- data/lib/puppet/pops/model/ast_transformer.rb +4 -24
- data/lib/puppet/pops/model/factory.rb +72 -10
- data/lib/puppet/pops/model/model.rb +82 -574
- data/lib/puppet/pops/model/model_label_provider.rb +4 -2
- data/lib/puppet/pops/model/model_meta.rb +576 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +27 -5
- data/lib/puppet/pops/parser/egrammar.ra +209 -221
- data/lib/puppet/pops/parser/eparser.rb +1459 -1431
- data/lib/puppet/pops/parser/evaluating_parser.rb +15 -75
- data/lib/puppet/pops/parser/lexer2.rb +14 -10
- data/lib/puppet/pops/parser/lexer_support.rb +6 -0
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +31 -49
- data/lib/puppet/pops/patterns.rb +10 -10
- data/lib/puppet/pops/semantic_error.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +24 -13
- data/lib/puppet/pops/types/type_calculator.rb +188 -87
- data/lib/puppet/pops/types/type_factory.rb +79 -53
- data/lib/puppet/pops/types/type_parser.rb +22 -16
- data/lib/puppet/pops/types/types.rb +283 -392
- data/lib/puppet/pops/types/types_meta.rb +223 -0
- data/lib/puppet/pops/utils.rb +16 -14
- data/lib/puppet/pops/validation/checker4_0.rb +264 -18
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
- data/lib/puppet/pops/visitor.rb +0 -103
- data/lib/puppet/provider/exec.rb +10 -1
- data/lib/puppet/provider/file/windows.rb +3 -4
- data/lib/puppet/provider/group/windows_adsi.rb +10 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -4
- data/lib/puppet/provider/package/apt.rb +5 -1
- data/lib/puppet/provider/package/gem.rb +7 -3
- data/lib/puppet/provider/package/openbsd.rb +84 -7
- data/lib/puppet/provider/package/pacman.rb +29 -4
- data/lib/puppet/provider/package/rpm.rb +5 -7
- data/lib/puppet/provider/package/sun.rb +5 -1
- data/lib/puppet/provider/package/windows.rb +6 -1
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +13 -1
- data/lib/puppet/provider/package/yum.rb +7 -3
- data/lib/puppet/provider/package/zypper.rb +5 -1
- data/lib/puppet/provider/parsedfile.rb +17 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +6 -12
- data/lib/puppet/provider/service/freebsd.rb +12 -12
- data/lib/puppet/provider/service/init.rb +5 -0
- data/lib/puppet/provider/service/launchd.rb +0 -3
- data/lib/puppet/provider/service/openbsd.rb +8 -7
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
- data/lib/puppet/provider/sshkey/parsed.rb +5 -0
- data/lib/puppet/provider/user/user_role_add.rb +5 -4
- data/lib/puppet/provider/user/windows_adsi.rb +8 -8
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +8 -6
- data/lib/puppet/reports/store.rb +4 -9
- data/lib/puppet/resource.rb +75 -11
- data/lib/puppet/resource/catalog.rb +9 -7
- data/lib/puppet/resource/type.rb +27 -0
- data/lib/puppet/settings.rb +61 -41
- data/lib/puppet/settings/base_setting.rb +9 -3
- data/lib/puppet/settings/environment_conf.rb +32 -4
- data/lib/puppet/settings/file_setting.rb +9 -1
- data/lib/puppet/settings/priority_setting.rb +5 -5
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate_authority.rb +15 -6
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +2 -1
- data/lib/puppet/ssl/host.rb +3 -2
- data/lib/puppet/ssl/inventory.rb +11 -6
- data/lib/puppet/ssl/validator/default_validator.rb +1 -0
- data/lib/puppet/ssl/validator/no_validator.rb +3 -0
- data/lib/puppet/transaction.rb +29 -0
- data/lib/puppet/transaction/resource_harness.rb +16 -3
- data/lib/puppet/type.rb +71 -49
- data/lib/puppet/type/exec.rb +36 -8
- data/lib/puppet/type/file.rb +56 -16
- data/lib/puppet/type/file/content.rb +3 -3
- data/lib/puppet/type/file/mode.rb +12 -3
- data/lib/puppet/type/file/source.rb +4 -1
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -3
- data/lib/puppet/type/resources.rb +59 -35
- data/lib/puppet/type/ssh_authorized_key.rb +54 -16
- data/lib/puppet/type/sshkey.rb +1 -1
- data/lib/puppet/type/user.rb +17 -11
- data/lib/puppet/type/yumrepo.rb +59 -8
- data/lib/puppet/type/zone.rb +3 -6
- data/lib/puppet/util.rb +64 -55
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/colors.rb +61 -19
- data/lib/puppet/util/command_line.rb +21 -4
- data/lib/puppet/util/execution.rb +41 -29
- data/lib/puppet/util/feature.rb +15 -4
- data/lib/puppet/util/filetype.rb +6 -2
- data/lib/puppet/util/http_proxy.rb +29 -2
- data/lib/puppet/util/lockfile.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +7 -3
- data/lib/puppet/util/logging.rb +44 -14
- data/lib/puppet/util/pidlock.rb +11 -5
- data/lib/puppet/util/posix.rb +21 -31
- data/lib/puppet/util/profiler.rb +17 -9
- data/lib/puppet/util/profiler/aggregate.rb +85 -0
- data/lib/puppet/util/profiler/around_profiler.rb +67 -0
- data/lib/puppet/util/profiler/logging.rb +12 -11
- data/lib/puppet/util/profiler/wall_clock.rb +7 -6
- data/lib/puppet/util/rdoc.rb +8 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -8
- data/lib/puppet/util/windows.rb +14 -3
- data/lib/puppet/util/windows/access_control_list.rb +4 -4
- data/lib/puppet/util/{adsi.rb → windows/adsi.rb} +99 -37
- data/lib/puppet/util/windows/api_types.rb +255 -0
- data/lib/puppet/util/windows/com.rb +224 -0
- data/lib/puppet/util/windows/error.rb +72 -5
- data/lib/puppet/util/windows/file.rb +254 -132
- data/lib/puppet/util/windows/process.rb +293 -177
- data/lib/puppet/util/windows/registry.rb +12 -2
- data/lib/puppet/util/windows/root_certs.rb +16 -9
- data/lib/puppet/util/windows/security.rb +501 -232
- data/lib/puppet/util/windows/sid.rb +80 -36
- data/lib/puppet/util/windows/string.rb +2 -0
- data/lib/puppet/util/windows/taskscheduler.rb +1241 -0
- data/lib/puppet/util/windows/user.rb +241 -57
- data/lib/puppet/vendor.rb +3 -1
- data/lib/puppet/vendor/load_pathspec.rb +1 -0
- data/lib/puppet/vendor/load_rgen.rb +1 -0
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
- data/lib/puppet/vendor/pathspec/LICENSE +201 -0
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/pathspec/README.md +53 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +121 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
- data/lib/puppet/vendor/require_vendored.rb +2 -0
- data/lib/puppet/vendor/rgen/CHANGELOG +197 -0
- data/lib/puppet/vendor/rgen/MIT-LICENSE +20 -0
- data/lib/puppet/vendor/rgen/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/rgen/README.rdoc +78 -0
- data/lib/puppet/vendor/rgen/Rakefile +41 -0
- data/lib/puppet/vendor/rgen/TODO +41 -0
- data/lib/puppet/vendor/rgen/anounce.txt +61 -0
- data/lib/puppet/vendor/rgen/design_rationale.txt +71 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +54 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +32 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +562 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +45 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +43 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +103 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +89 -0
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +559 -0
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +26 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +20 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +91 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +28 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +37 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +172 -0
- data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +45 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +218 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +81 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +69 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +167 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +91 -0
- data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +129 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +63 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +140 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +289 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +66 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +66 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +117 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +169 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +126 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +331 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +94 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +137 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +97 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +128 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +168 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +224 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +556 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +174 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +89 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +77 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +30 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +168 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +23 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +42 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +32 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +334 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +225 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +156 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +121 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +116 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +71 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +98 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +297 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +83 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +87 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +234 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +26 -0
- data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +475 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +61 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +67 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +124 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +84 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +114 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +68 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +142 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +29 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +42 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +329 -0
- data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +79 -0
- data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +127 -0
- data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +64 -0
- data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +35 -0
- data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +23 -0
- data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +54 -0
- data/lib/puppet/vendor/rgen/test/environment_test.rb +90 -0
- data/lib/puppet/vendor/rgen/test/json_test.rb +171 -0
- data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +1482 -0
- data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +57 -0
- data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +131 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +98 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +70 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +42 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +44 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +9 -0
- data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +178 -0
- data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +59 -0
- data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +242 -0
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +163 -0
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +163 -0
- data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +156 -0
- data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +94 -0
- data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +42 -0
- data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +23 -0
- data/lib/puppet/vendor/rgen/test/model_builder_test.rb +6 -0
- data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +30 -0
- data/lib/puppet/vendor/rgen/test/output_handler_test.rb +58 -0
- data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +48 -0
- data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +102 -0
- data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +117 -0
- data/lib/puppet/vendor/rgen/test/rgen_test.rb +26 -0
- data/lib/puppet/vendor/rgen/test/template_language_test.rb +163 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +29 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +9 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +4 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +11 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +7 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +8 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +8 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +7 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +12 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +24 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +13 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +10 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +17 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +31 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +9 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +4 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +29 -0
- data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +119 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +1029 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +317 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +101 -0
- data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +22 -0
- data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +67 -0
- data/lib/puppet/vendor/rgen/test/transformer_test.rb +254 -0
- data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +99 -0
- data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +97 -0
- data/lib/puppet/vendor/rgen/test/util_test.rb +5 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +160 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +94 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +53 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +49 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +75 -0
- data/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +2 -0
- data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +6 -0
- data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +1 -0
- data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +2 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +1 -1
- data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
- data/spec/fixtures/unit/indirector/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +3 -0
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/casestatement.pp +14 -14
- data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/classincludes.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/classpathtest.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/collection_override.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/componentrequire.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +5 -5
- data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/filecreate.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/ifexpression.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/implicititeration.pp +4 -4
- data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/multisubs.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/namevartest.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +14 -14
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +5 -5
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +4 -4
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +1 -1
- data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +4 -0
- data/spec/fixtures/unit/type/user/authorized_keys +1 -1
- data/spec/integration/agent/logging_spec.rb +4 -0
- data/spec/integration/application/doc_spec.rb +4 -3
- data/spec/integration/configurer_spec.rb +0 -14
- data/spec/integration/defaults_spec.rb +26 -0
- data/spec/integration/environments/default_manifest_spec.rb +274 -0
- data/spec/integration/faces/documentation_spec.rb +0 -4
- data/spec/integration/file_bucket/file_spec.rb +21 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +0 -2
- data/spec/integration/indirector/catalog/queue_spec.rb +0 -2
- data/spec/integration/indirector/facts/facter_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/integration/node/environment_spec.rb +24 -8
- data/spec/integration/parser/catalog_spec.rb +10 -10
- data/spec/integration/parser/class_spec.rb +37 -0
- data/spec/integration/parser/collector_spec.rb +234 -75
- data/spec/integration/parser/compiler_spec.rb +385 -401
- data/spec/integration/parser/conditionals_spec.rb +117 -0
- data/spec/integration/parser/future_compiler_spec.rb +359 -8
- data/spec/integration/parser/node_spec.rb +185 -0
- data/spec/integration/parser/resource_expressions_spec.rb +286 -0
- data/spec/integration/parser/ruby_manifest_spec.rb +0 -4
- data/spec/integration/parser/scope_spec.rb +94 -151
- data/spec/integration/provider/cron/crontab_spec.rb +137 -148
- data/spec/integration/ssl/certificate_authority_spec.rb +26 -0
- data/spec/integration/ssl/certificate_request_spec.rb +0 -6
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -2
- data/spec/integration/ssl/host_spec.rb +0 -2
- data/spec/integration/transaction_spec.rb +16 -0
- data/spec/integration/type/file_spec.rb +14 -13
- data/spec/integration/type/nagios_spec.rb +6 -15
- data/spec/integration/type/sshkey_spec.rb +22 -0
- data/spec/integration/type/tidy_spec.rb +3 -0
- data/spec/integration/type/user_spec.rb +8 -3
- data/spec/integration/util/autoload_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +7 -0
- data/spec/integration/util/windows/process_spec.rb +12 -0
- data/spec/integration/util/windows/security_spec.rb +36 -35
- data/spec/integration/util/windows/user_spec.rb +75 -9
- data/spec/integration/util_spec.rb +2 -2
- data/spec/lib/matchers/resource.rb +1 -0
- data/spec/lib/puppet_spec/compiler.rb +15 -2
- data/spec/lib/puppet_spec/files.rb +10 -0
- data/spec/lib/puppet_spec/language.rb +74 -0
- data/spec/lib/puppet_spec/matchers.rb +59 -32
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +3 -0
- data/spec/shared_behaviours/hiera_indirections.rb +99 -0
- data/spec/shared_behaviours/iterative_functions.rb +69 -0
- data/spec/unit/application/apply_spec.rb +4 -2
- data/spec/unit/application/doc_spec.rb +17 -13
- data/spec/unit/application/master_spec.rb +35 -27
- data/spec/unit/application/resource_spec.rb +0 -5
- data/spec/unit/configurer/downloader_factory_spec.rb +96 -0
- data/spec/unit/configurer/downloader_spec.rb +3 -24
- data/spec/unit/configurer/plugin_handler_spec.rb +22 -22
- data/spec/unit/configurer_spec.rb +0 -4
- data/spec/unit/defaults_spec.rb +30 -0
- data/spec/unit/face/config_spec.rb +2 -1
- data/spec/unit/face/module/build_spec.rb +2 -2
- data/spec/unit/face/module/install_spec.rb +8 -8
- data/spec/unit/face/parser_spec.rb +71 -33
- data/spec/unit/file_bucket/file_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +184 -0
- data/spec/unit/forge/errors_spec.rb +4 -6
- data/spec/unit/forge/module_release_spec.rb +178 -89
- data/spec/unit/forge/repository_spec.rb +110 -2
- data/spec/unit/forge_spec.rb +39 -3
- data/spec/unit/functions/assert_type_spec.rb +22 -3
- data/spec/unit/{parser/methods → functions}/each_spec.rb +21 -1
- data/spec/unit/{parser/functions → functions}/epp_spec.rb +61 -9
- data/spec/unit/{parser/methods → functions}/filter_spec.rb +34 -38
- data/spec/unit/{parser/functions → functions}/inline_epp_spec.rb +18 -3
- data/spec/unit/functions/map_spec.rb +169 -0
- data/spec/unit/functions/match_spec.rb +57 -0
- data/spec/unit/{parser/methods → functions}/reduce_spec.rb +23 -5
- data/spec/unit/{parser/methods → functions}/slice_spec.rb +34 -21
- data/spec/unit/functions/with_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +7 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -2
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +11 -0
- data/spec/unit/indirector/data_binding/hiera_spec.rb +1 -96
- data/spec/unit/indirector/facts/facter_spec.rb +69 -102
- data/spec/unit/indirector/hiera_spec.rb +17 -0
- data/spec/unit/indirector/request_spec.rb +2 -4
- data/spec/unit/indirector/resource/ral_spec.rb +5 -0
- data/spec/unit/indirector/resource_type/parser_spec.rb +17 -12
- data/spec/unit/indirector/rest_spec.rb +36 -6
- data/spec/unit/interface/face_collection_spec.rb +2 -2
- data/spec/unit/module_tool/applications/builder_spec.rb +364 -14
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +22 -0
- data/spec/unit/module_tool/applications/unpacker_spec.rb +40 -0
- data/spec/unit/module_tool/applications/upgrader_spec.rb +22 -0
- data/spec/unit/module_tool/installed_modules_spec.rb +49 -0
- data/spec/unit/module_tool/metadata_spec.rb +72 -4
- data/spec/unit/module_tool/tar/mini_spec.rb +2 -1
- data/spec/unit/network/authentication_spec.rb +4 -0
- data/spec/unit/network/http/api/v2/environments_spec.rb +24 -3
- data/spec/unit/network/http/connection_spec.rb +127 -92
- data/spec/unit/network/http/factory_spec.rb +82 -0
- data/spec/unit/network/http/handler_spec.rb +23 -13
- data/spec/unit/network/http/nocache_pool_spec.rb +43 -0
- data/spec/unit/network/http/pool_spec.rb +269 -0
- data/spec/unit/network/http/rack/rest_spec.rb +1 -1
- data/spec/unit/network/http/session_spec.rb +43 -0
- data/spec/unit/network/http/site_spec.rb +90 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/network/http_pool_spec.rb +9 -6
- data/spec/unit/network/http_spec.rb +10 -0
- data/spec/unit/node/environment_spec.rb +54 -0
- data/spec/unit/node_spec.rb +3 -5
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/files_spec.rb +19 -0
- data/spec/unit/parser/functions/contain_spec.rb +51 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +8 -1
- data/spec/unit/parser/functions/digest_spec.rb +31 -0
- data/spec/unit/parser/functions/file_spec.rb +48 -5
- data/spec/unit/parser/functions/include_spec.rb +15 -1
- data/spec/unit/parser/functions/realize_spec.rb +43 -35
- data/spec/unit/parser/functions/require_spec.rb +19 -5
- data/spec/unit/parser/functions/search_spec.rb +5 -0
- data/spec/unit/parser/functions/shared.rb +82 -0
- data/spec/unit/parser/functions_spec.rb +1 -1
- data/spec/unit/parser/lexer_spec.rb +10 -1
- data/spec/unit/parser/type_loader_spec.rb +0 -1
- data/spec/unit/pops/benchmark_spec.rb +1 -1
- data/spec/unit/pops/binder/bindings_composer_spec.rb +24 -22
- data/spec/unit/pops/binder/injector_spec.rb +8 -6
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +7 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +250 -30
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/variables_spec.rb +0 -105
- data/spec/unit/pops/issues_spec.rb +170 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +17 -0
- data/spec/unit/pops/loaders/loader_paths_spec.rb +4 -15
- data/spec/unit/pops/loaders/loaders_spec.rb +31 -11
- data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -29
- data/spec/unit/pops/loaders/static_loader_spec.rb +6 -0
- data/spec/unit/pops/parser/epp_parser_spec.rb +38 -9
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +21 -4
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +5 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +6 -3
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -5
- data/spec/unit/pops/parser/parse_containers_spec.rb +62 -7
- data/spec/unit/pops/parser/parse_resource_spec.rb +155 -73
- data/spec/unit/pops/parser/parser_spec.rb +16 -0
- data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +72 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +254 -57
- data/spec/unit/pops/types/type_factory_spec.rb +8 -3
- data/spec/unit/pops/types/type_parser_spec.rb +26 -5
- data/spec/unit/pops/validator/validator_spec.rb +143 -27
- data/spec/unit/provider/exec/posix_spec.rb +22 -14
- data/spec/unit/provider/exec/shell_spec.rb +2 -2
- data/spec/unit/provider/file/windows_spec.rb +7 -7
- data/spec/unit/provider/group/windows_adsi_spec.rb +17 -17
- data/spec/unit/provider/package/gem_spec.rb +10 -0
- data/spec/unit/provider/package/openbsd_spec.rb +66 -9
- data/spec/unit/provider/package/pacman_spec.rb +90 -71
- data/spec/unit/provider/package/windows/package_spec.rb +21 -6
- data/spec/unit/provider/package/yum_spec.rb +1 -0
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +9 -9
- data/spec/unit/provider/service/openbsd_spec.rb +26 -2
- data/spec/unit/provider/service/upstart_spec.rb +12 -1
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +6 -0
- data/spec/unit/provider/user/user_role_add_spec.rb +23 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +17 -17
- data/spec/unit/reports/store_spec.rb +0 -16
- data/spec/unit/resource/catalog_spec.rb +0 -5
- data/spec/unit/resource_spec.rb +2 -2
- data/spec/unit/settings/autosign_setting_spec.rb +2 -2
- data/spec/unit/settings/environment_conf_spec.rb +77 -10
- data/spec/unit/settings/file_setting_spec.rb +5 -4
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +41 -3
- data/spec/unit/ssl/certificate_authority_spec.rb +25 -2
- data/spec/unit/ssl/inventory_spec.rb +13 -0
- data/spec/unit/ssl/validator_spec.rb +0 -1
- data/spec/unit/transaction/resource_harness_spec.rb +64 -0
- data/spec/unit/transaction_spec.rb +98 -47
- data/spec/unit/type/cron_spec.rb +3 -3
- data/spec/unit/type/exec_spec.rb +9 -0
- data/spec/unit/type/file/content_spec.rb +54 -71
- data/spec/unit/type/file/mode_spec.rb +26 -1
- data/spec/unit/type/file/source_spec.rb +26 -4
- data/spec/unit/type/file_spec.rb +3 -3
- data/spec/unit/type/nagios_spec.rb +12 -3
- data/spec/unit/type/resources_spec.rb +64 -30
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +136 -0
- data/spec/unit/type/zone_spec.rb +44 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/colors_spec.rb +14 -8
- data/spec/unit/util/command_line_spec.rb +11 -7
- data/spec/unit/util/execution_spec.rb +35 -42
- data/spec/unit/util/feature_spec.rb +12 -0
- data/spec/unit/util/http_proxy_spec.rb +43 -1
- data/spec/unit/util/log/destinations_spec.rb +45 -1
- data/spec/unit/util/logging_spec.rb +38 -0
- data/spec/unit/util/pidlock_spec.rb +37 -1
- data/spec/unit/util/profiler/aggregate_spec.rb +59 -0
- data/spec/unit/util/profiler/around_profiler_spec.rb +61 -0
- data/spec/unit/util/profiler/logging_spec.rb +18 -29
- data/spec/unit/util/profiler/wall_clock_spec.rb +1 -1
- data/spec/unit/util/profiler_spec.rb +55 -0
- data/spec/unit/util/queue_spec.rb +0 -1
- data/spec/unit/util/rdoc/parser_spec.rb +14 -6
- data/spec/unit/util/tagging_spec.rb +1 -1
- data/spec/unit/util/windows/access_control_entry_spec.rb +1 -1
- data/spec/unit/util/{adsi_spec.rb → windows/adsi_spec.rb} +111 -108
- data/spec/unit/util/windows/api_types_spec.rb +28 -0
- data/spec/unit/util/windows/registry_spec.rb +7 -6
- data/spec/unit/util/windows/sid_spec.rb +3 -6
- data/spec/unit/util/windows/string_spec.rb +4 -0
- data/spec/unit/util/zaml_spec.rb +5 -1
- data/tasks/benchmark.rake +40 -5
- data/tasks/parser.rake +16 -2
- data/tasks/yard.rake +1 -1
- metadata +296 -68
- data/lib/puppet/file_system/tempfile.rb +0 -20
- data/lib/puppet/parser/e_parser_adapter.rb +0 -119
- data/lib/puppet/parser/functions/collect.rb +0 -15
- data/lib/puppet/parser/functions/select.rb +0 -15
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +0 -109
- data/lib/puppet/pops/parser/lexer.rb +0 -753
- data/lib/puppet/pops/parser/makefile +0 -6
- data/lib/puppet/pops/validation/checker3_1.rb +0 -558
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +0 -31
- data/lib/puppet/util/profiler/none.rb +0 -8
- data/spec/unit/face/certificate_request_spec.rb +0 -7
- data/spec/unit/face/certificate_revocation_list_spec.rb +0 -7
- data/spec/unit/face/key_spec.rb +0 -7
- data/spec/unit/face/report_spec.rb +0 -7
- data/spec/unit/face/resource_spec.rb +0 -7
- data/spec/unit/face/resource_type_spec.rb +0 -7
- data/spec/unit/file_system/tempfile_spec.rb +0 -48
- data/spec/unit/parser/eparser_adapter_spec.rb +0 -407
- data/spec/unit/parser/methods/map_spec.rb +0 -184
- data/spec/unit/parser/methods/shared.rb +0 -45
- data/spec/unit/pops/parser/lexer_spec.rb +0 -840
- data/spec/unit/pops/transformer/transform_resource_spec.rb +0 -185
- data/spec/unit/util/profiler/none_spec.rb +0 -12
@@ -1,606 +1,114 @@
|
|
1
1
|
#
|
2
|
-
# The Puppet Pops Metamodel
|
2
|
+
# The Puppet Pops Metamodel Implementation
|
3
3
|
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
# classes needed to evaluate puppet logic.
|
7
|
-
# The metamodel resembles the existing AST model, but it is a semantic model of instructions and
|
8
|
-
# the types that they operate on rather than an Abstract Syntax Tree, although closely related.
|
9
|
-
#
|
10
|
-
# The metamodel is anemic (has no behavior) except basic datatype and type
|
11
|
-
# assertions and reference/containment assertions.
|
12
|
-
# The metamodel is also a generalized description of the Puppet DSL to enable the
|
13
|
-
# same metamodel to be used to express Puppet DSL models (instances) with different semantics as
|
14
|
-
# the language evolves.
|
15
|
-
#
|
16
|
-
# The metamodel is concretized by a validator for a particular version of
|
17
|
-
# the Puppet DSL language.
|
18
|
-
#
|
19
|
-
# This metamodel is expressed using RGen.
|
4
|
+
# The Puppet Pops Metamodel consists of two parts; the metamodel expressed with RGen in model_meta.rb,
|
5
|
+
# and this file which mixes in implementation details.
|
20
6
|
#
|
21
7
|
|
22
8
|
require 'rgen/metamodel_builder'
|
9
|
+
require 'rgen/ecore/ecore'
|
10
|
+
require 'rgen/ecore/ecore_ext'
|
11
|
+
require 'rgen/ecore/ecore_to_ruby'
|
23
12
|
|
24
|
-
module Puppet::Pops
|
25
|
-
|
26
|
-
|
27
|
-
# A base class for modeled objects that makes them Visitable, and Adaptable.
|
28
|
-
#
|
29
|
-
class PopsObject < RGen::MetamodelBuilder::MMBase
|
30
|
-
include Puppet::Pops::Visitable
|
31
|
-
include Puppet::Pops::Adaptable
|
32
|
-
include Puppet::Pops::Containment
|
33
|
-
abstract
|
34
|
-
end
|
35
|
-
|
36
|
-
# A Positioned object has an offset measured in an opaque unit (representing characters) from the start
|
37
|
-
# of a source text (starting
|
38
|
-
# from 0), and a length measured in the same opaque unit. The resolution of the opaque unit requires the
|
39
|
-
# aid of a Locator instance that knows about the measure. This information is stored in the model's
|
40
|
-
# root node - a Program.
|
41
|
-
#
|
42
|
-
# The offset and length are optional if the source of the model is not from parsed text.
|
43
|
-
#
|
44
|
-
class Positioned < PopsObject
|
45
|
-
abstract
|
46
|
-
has_attr 'offset', Integer
|
47
|
-
has_attr 'length', Integer
|
48
|
-
end
|
49
|
-
|
50
|
-
# @abstract base class for expressions
|
51
|
-
class Expression < Positioned
|
52
|
-
abstract
|
53
|
-
end
|
54
|
-
|
55
|
-
# A Nop - the "no op" expression.
|
56
|
-
# @note not really needed since the evaluator can evaluate nil with the meaning of NoOp
|
57
|
-
# @todo deprecate? May be useful if there is the need to differentiate between nil and Nop when transforming model.
|
58
|
-
#
|
59
|
-
class Nop < Expression
|
60
|
-
end
|
61
|
-
|
62
|
-
# A binary expression is abstract and has a left and a right expression. The order of evaluation
|
63
|
-
# and semantics are determined by the concrete subclass.
|
64
|
-
#
|
65
|
-
class BinaryExpression < Expression
|
66
|
-
abstract
|
67
|
-
#
|
68
|
-
# @!attribute [rw] left_expr
|
69
|
-
# @return [Expression]
|
70
|
-
contains_one_uni 'left_expr', Expression, :lowerBound => 1
|
71
|
-
contains_one_uni 'right_expr', Expression, :lowerBound => 1
|
72
|
-
end
|
73
|
-
|
74
|
-
# An unary expression is abstract and contains one expression. The semantics are determined by
|
75
|
-
# a concrete subclass.
|
76
|
-
#
|
77
|
-
class UnaryExpression < Expression
|
78
|
-
abstract
|
79
|
-
contains_one_uni 'expr', Expression, :lowerBound => 1
|
80
|
-
end
|
81
|
-
|
82
|
-
# A class that simply evaluates to the contained expression.
|
83
|
-
# It is of value in order to preserve user entered parentheses in transformations, and
|
84
|
-
# transformations from model to source.
|
85
|
-
#
|
86
|
-
class ParenthesizedExpression < UnaryExpression; end
|
87
|
-
|
88
|
-
# A boolean not expression, reversing the truth of the unary expr.
|
89
|
-
#
|
90
|
-
class NotExpression < UnaryExpression; end
|
91
|
-
|
92
|
-
# An arithmetic expression reversing the polarity of the numeric unary expr.
|
93
|
-
#
|
94
|
-
class UnaryMinusExpression < UnaryExpression; end
|
95
|
-
|
96
|
-
# An assignment expression assigns a value to the lval() of the left_expr.
|
97
|
-
#
|
98
|
-
class AssignmentExpression < BinaryExpression
|
99
|
-
has_attr 'operator', RGen::MetamodelBuilder::DataTypes::Enum.new([:'=', :'+=', :'-=']), :lowerBound => 1
|
100
|
-
end
|
101
|
-
|
102
|
-
# An arithmetic expression applies an arithmetic operator on left and right expressions.
|
103
|
-
#
|
104
|
-
class ArithmeticExpression < BinaryExpression
|
105
|
-
has_attr 'operator', RGen::MetamodelBuilder::DataTypes::Enum.new([:'+', :'-', :'*', :'%', :'/', :'<<', :'>>' ]), :lowerBound => 1
|
106
|
-
end
|
107
|
-
|
108
|
-
# A relationship expression associates the left and right expressions
|
109
|
-
#
|
110
|
-
class RelationshipExpression < BinaryExpression
|
111
|
-
has_attr 'operator', RGen::MetamodelBuilder::DataTypes::Enum.new([:'->', :'<-', :'~>', :'<~']), :lowerBound => 1
|
112
|
-
end
|
113
|
-
|
114
|
-
# A binary expression, that accesses the value denoted by right in left. i.e. typically
|
115
|
-
# expressed concretely in a language as left[right].
|
116
|
-
#
|
117
|
-
class AccessExpression < Expression
|
118
|
-
contains_one_uni 'left_expr', Expression, :lowerBound => 1
|
119
|
-
contains_many_uni 'keys', Expression, :lowerBound => 1
|
120
|
-
end
|
121
|
-
|
122
|
-
# A comparison expression compares left and right using a comparison operator.
|
123
|
-
#
|
124
|
-
class ComparisonExpression < BinaryExpression
|
125
|
-
has_attr 'operator', RGen::MetamodelBuilder::DataTypes::Enum.new([:'==', :'!=', :'<', :'>', :'<=', :'>=' ]), :lowerBound => 1
|
126
|
-
end
|
127
|
-
|
128
|
-
# A match expression matches left and right using a matching operator.
|
129
|
-
#
|
130
|
-
class MatchExpression < BinaryExpression
|
131
|
-
has_attr 'operator', RGen::MetamodelBuilder::DataTypes::Enum.new([:'!~', :'=~']), :lowerBound => 1
|
132
|
-
end
|
133
|
-
|
134
|
-
# An 'in' expression checks if left is 'in' right
|
135
|
-
#
|
136
|
-
class InExpression < BinaryExpression; end
|
137
|
-
|
138
|
-
# A boolean expression applies a logical connective operator (and, or) to left and right expressions.
|
139
|
-
#
|
140
|
-
class BooleanExpression < BinaryExpression
|
141
|
-
abstract
|
142
|
-
end
|
143
|
-
|
144
|
-
# An and expression applies the logical connective operator and to left and right expression
|
145
|
-
# and does not evaluate the right expression if the left expression is false.
|
146
|
-
#
|
147
|
-
class AndExpression < BooleanExpression; end
|
148
|
-
|
149
|
-
# An or expression applies the logical connective operator or to the left and right expression
|
150
|
-
# and does not evaluate the right expression if the left expression is true
|
151
|
-
#
|
152
|
-
class OrExpression < BooleanExpression; end
|
153
|
-
|
154
|
-
# A literal list / array containing 0:M expressions.
|
155
|
-
#
|
156
|
-
class LiteralList < Expression
|
157
|
-
contains_many_uni 'values', Expression
|
158
|
-
end
|
159
|
-
|
160
|
-
# A Keyed entry has a key and a value expression. It is typically used as an entry in a Hash.
|
161
|
-
#
|
162
|
-
class KeyedEntry < Positioned
|
163
|
-
contains_one_uni 'key', Expression, :lowerBound => 1
|
164
|
-
contains_one_uni 'value', Expression, :lowerBound => 1
|
165
|
-
end
|
166
|
-
|
167
|
-
# A literal hash is a collection of KeyedEntry objects
|
168
|
-
#
|
169
|
-
class LiteralHash < Expression
|
170
|
-
contains_many_uni 'entries', KeyedEntry
|
171
|
-
end
|
172
|
-
|
173
|
-
# A block contains a list of expressions
|
174
|
-
#
|
175
|
-
class BlockExpression < Expression
|
176
|
-
contains_many_uni 'statements', Expression
|
177
|
-
end
|
13
|
+
module Puppet::Pops
|
14
|
+
require 'puppet/pops/model/model_meta'
|
178
15
|
|
179
|
-
#
|
180
|
-
#
|
181
|
-
class CaseOption < Expression
|
182
|
-
contains_many_uni 'values', Expression, :lowerBound => 1
|
183
|
-
contains_one_uni 'then_expr', Expression, :lowerBound => 1
|
184
|
-
end
|
16
|
+
# TODO: See PUP-2978 for possible performance optimization
|
185
17
|
|
186
|
-
#
|
187
|
-
|
188
|
-
# else matched.
|
189
|
-
#
|
190
|
-
class CaseExpression < Expression
|
191
|
-
contains_one_uni 'test', Expression, :lowerBound => 1
|
192
|
-
contains_many_uni 'options', CaseOption
|
193
|
-
end
|
194
|
-
|
195
|
-
# A query expression is an expression that is applied to some collection.
|
196
|
-
# The contained optional expression may contain different types of relational expressions depending
|
197
|
-
# on what the query is applied to.
|
198
|
-
#
|
199
|
-
class QueryExpression < Expression
|
200
|
-
abstract
|
201
|
-
contains_one_uni 'expr', Expression, :lowerBound => 0
|
202
|
-
end
|
18
|
+
# Mix in implementation into the generated code
|
19
|
+
module Model
|
203
20
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
# A virtual query is a special form of query that searches for virtual objects.
|
210
|
-
#
|
211
|
-
class VirtualQuery < QueryExpression
|
212
|
-
end
|
213
|
-
|
214
|
-
# An attribute operation sets or appends a value to a named attribute.
|
215
|
-
#
|
216
|
-
class AttributeOperation < Positioned
|
217
|
-
has_attr 'attribute_name', String, :lowerBound => 1
|
218
|
-
has_attr 'operator', RGen::MetamodelBuilder::DataTypes::Enum.new([:'=>', :'+>', ]), :lowerBound => 1
|
219
|
-
contains_one_uni 'value_expr', Expression, :lowerBound => 1
|
220
|
-
end
|
221
|
-
|
222
|
-
# An object that collects stored objects from the central cache and returns
|
223
|
-
# them to the current host. Operations may optionally be applied.
|
224
|
-
#
|
225
|
-
class CollectExpression < Expression
|
226
|
-
contains_one_uni 'type_expr', Expression, :lowerBound => 1
|
227
|
-
contains_one_uni 'query', QueryExpression, :lowerBound => 1
|
228
|
-
contains_many_uni 'operations', AttributeOperation
|
229
|
-
end
|
230
|
-
|
231
|
-
class Parameter < Positioned
|
232
|
-
has_attr 'name', String, :lowerBound => 1
|
233
|
-
contains_one_uni 'value', Expression
|
234
|
-
end
|
235
|
-
|
236
|
-
# Abstract base class for definitions.
|
237
|
-
#
|
238
|
-
class Definition < Expression
|
239
|
-
abstract
|
240
|
-
end
|
241
|
-
|
242
|
-
# Abstract base class for named and parameterized definitions.
|
243
|
-
class NamedDefinition < Definition
|
244
|
-
abstract
|
245
|
-
has_attr 'name', String, :lowerBound => 1
|
246
|
-
contains_many_uni 'parameters', Parameter
|
247
|
-
contains_one_uni 'body', Expression
|
248
|
-
end
|
249
|
-
|
250
|
-
# A resource type definition (a 'define' in the DSL).
|
251
|
-
#
|
252
|
-
class ResourceTypeDefinition < NamedDefinition
|
253
|
-
end
|
254
|
-
|
255
|
-
# A node definition matches hosts using Strings, or Regular expressions. It may inherit from
|
256
|
-
# a parent node (also using a String or Regular expression).
|
257
|
-
#
|
258
|
-
class NodeDefinition < Definition
|
259
|
-
contains_one_uni 'parent', Expression
|
260
|
-
contains_many_uni 'host_matches', Expression, :lowerBound => 1
|
261
|
-
contains_one_uni 'body', Expression
|
262
|
-
end
|
263
|
-
|
264
|
-
class LocatableExpression < Expression
|
265
|
-
has_many_attr 'line_offsets', Integer
|
266
|
-
has_attr 'locator', Object, :lowerBound => 1, :transient => true
|
21
|
+
class PopsObject
|
22
|
+
include Puppet::Pops::Visitable
|
23
|
+
include Puppet::Pops::Adaptable
|
24
|
+
include Puppet::Pops::Containment
|
25
|
+
end
|
267
26
|
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
27
|
+
class LocatableExpression
|
28
|
+
module ClassModule
|
29
|
+
# Go through the gymnastics of making either value or pattern settable
|
30
|
+
# with synchronization to the other form. A derived value cannot be serialized
|
31
|
+
# and we want to serialize the pattern. When recreating the object we need to
|
32
|
+
# recreate it from the pattern string.
|
33
|
+
# The below sets both values if one is changed.
|
34
|
+
#
|
35
|
+
def locator
|
36
|
+
unless result = getLocator
|
37
|
+
setLocator(result = Puppet::Pops::Parser::Locator.locator(source_text, source_ref(), line_offsets))
|
38
|
+
end
|
39
|
+
result
|
278
40
|
end
|
279
|
-
result
|
280
41
|
end
|
281
42
|
end
|
282
|
-
end
|
283
|
-
|
284
|
-
# Contains one expression which has offsets reported virtually (offset against the Program's
|
285
|
-
# overall locator).
|
286
|
-
#
|
287
|
-
class SubLocatedExpression < Expression
|
288
|
-
contains_one_uni 'expr', Expression, :lowerBound => 1
|
289
|
-
|
290
|
-
# line offset index for contained expressions
|
291
|
-
has_many_attr 'line_offsets', Integer
|
292
|
-
|
293
|
-
# Number of preceding lines (before the line_offsets)
|
294
|
-
has_attr 'leading_line_count', Integer
|
295
|
-
|
296
|
-
# The offset of the leading source line (i.e. size of "left margin").
|
297
|
-
has_attr 'leading_line_offset', Integer
|
298
|
-
|
299
|
-
# The locator for the sub-locatable's children (not for the sublocator itself)
|
300
|
-
# The locator is not serialized and is recreated on demand from the indexing information
|
301
|
-
# in self.
|
302
|
-
#
|
303
|
-
has_attr 'locator', Object, :lowerBound => 1, :transient => true
|
304
|
-
|
305
|
-
module ClassModule
|
306
|
-
def locator
|
307
|
-
unless result = getLocator
|
308
|
-
# Adapt myself to get the Locator for me
|
309
|
-
adapter = Puppet::Pops::Adapters::SourcePosAdapter.adapt(self)
|
310
|
-
# Get the program (root), and deal with case when not contained in a program
|
311
|
-
program = eAllContainers.find {|c| c.is_a?(Program) }
|
312
|
-
source_ref = program.nil? ? '' : program.source_ref
|
313
|
-
|
314
|
-
# An outer locator is needed since SubLocator only deals with offsets. This outer locator
|
315
|
-
# has 0,0 as origin.
|
316
|
-
outer_locator = Puppet::Pops::Parser::Locator.locator(adpater.extract_text, source_ref, line_offsets)
|
317
43
|
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
44
|
+
class SubLocatedExpression
|
45
|
+
module ClassModule
|
46
|
+
def locator
|
47
|
+
unless result = getLocator
|
48
|
+
# Adapt myself to get the Locator for me
|
49
|
+
adapter = Puppet::Pops::Adapters::SourcePosAdapter.adapt(self)
|
50
|
+
# Get the program (root), and deal with case when not contained in a program
|
51
|
+
program = eAllContainers.find {|c| c.is_a?(Program) }
|
52
|
+
source_ref = program.nil? ? '' : program.source_ref
|
53
|
+
|
54
|
+
# An outer locator is needed since SubLocator only deals with offsets. This outer locator
|
55
|
+
# has 0,0 as origin.
|
56
|
+
outer_locator = Puppet::Pops::Parser::Locator.locator(adpater.extract_text, source_ref, line_offsets)
|
57
|
+
|
58
|
+
# Create a sublocator that describes an offset from the outer
|
59
|
+
# NOTE: the offset of self is the same as the sublocator's leading_offset
|
60
|
+
result = Puppet::Pops::Parser::Locator::SubLocator.new(outer_locator,
|
61
|
+
leading_line_count, offset, leading_line_offset)
|
62
|
+
setLocator(result)
|
63
|
+
end
|
64
|
+
result
|
323
65
|
end
|
324
|
-
result
|
325
66
|
end
|
326
67
|
end
|
327
|
-
end
|
328
|
-
|
329
|
-
# A heredoc is a wrapper around a LiteralString or a ConcatenatedStringExpression with a specification
|
330
|
-
# of syntax. The expectation is that "syntax" has meaning to a validator. A syntax of nil or '' means
|
331
|
-
# "unspecified syntax".
|
332
|
-
#
|
333
|
-
class HeredocExpression < Expression
|
334
|
-
has_attr 'syntax', String
|
335
|
-
contains_one_uni 'text_expr', Expression, :lowerBound => 1
|
336
|
-
end
|
337
|
-
|
338
|
-
# A class definition
|
339
|
-
#
|
340
|
-
class HostClassDefinition < NamedDefinition
|
341
|
-
has_attr 'parent_class', String
|
342
|
-
end
|
343
|
-
|
344
|
-
# i.e {|parameters| body }
|
345
|
-
class LambdaExpression < Expression
|
346
|
-
contains_many_uni 'parameters', Parameter
|
347
|
-
contains_one_uni 'body', Expression
|
348
|
-
end
|
349
|
-
|
350
|
-
# If expression. If test is true, the then_expr part should be evaluated, else the (optional)
|
351
|
-
# else_expr. An 'elsif' is simply an else_expr = IfExpression, and 'else' is simply else == Block.
|
352
|
-
# a 'then' is typically a Block.
|
353
|
-
#
|
354
|
-
class IfExpression < Expression
|
355
|
-
contains_one_uni 'test', Expression, :lowerBound => 1
|
356
|
-
contains_one_uni 'then_expr', Expression, :lowerBound => 1
|
357
|
-
contains_one_uni 'else_expr', Expression
|
358
|
-
end
|
359
|
-
|
360
|
-
# An if expression with boolean reversed test.
|
361
|
-
#
|
362
|
-
class UnlessExpression < IfExpression
|
363
|
-
end
|
364
|
-
|
365
|
-
# An abstract call.
|
366
|
-
#
|
367
|
-
class CallExpression < Expression
|
368
|
-
abstract
|
369
|
-
# A bit of a crutch; functions are either procedures (void return) or has an rvalue
|
370
|
-
# this flag tells the evaluator that it is a failure to call a function that is void/procedure
|
371
|
-
# where a value is expected.
|
372
|
-
#
|
373
|
-
has_attr 'rval_required', Boolean, :defaultValueLiteral => "false"
|
374
|
-
contains_one_uni 'functor_expr', Expression, :lowerBound => 1
|
375
|
-
contains_many_uni 'arguments', Expression
|
376
|
-
contains_one_uni 'lambda', Expression
|
377
|
-
end
|
378
|
-
|
379
|
-
# A function call where the functor_expr should evaluate to something callable.
|
380
|
-
#
|
381
|
-
class CallFunctionExpression < CallExpression; end
|
382
|
-
|
383
|
-
# A function call where the given functor_expr should evaluate to the name
|
384
|
-
# of a function.
|
385
|
-
#
|
386
|
-
class CallNamedFunctionExpression < CallExpression; end
|
387
|
-
|
388
|
-
# A method/function call where the function expr is a NamedAccess and with support for
|
389
|
-
# an optional lambda block
|
390
|
-
#
|
391
|
-
class CallMethodExpression < CallExpression
|
392
|
-
end
|
393
|
-
|
394
|
-
# Abstract base class for literals.
|
395
|
-
#
|
396
|
-
class Literal < Expression
|
397
|
-
abstract
|
398
|
-
end
|
399
68
|
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
module ClassModule
|
414
|
-
# Go through the gymnastics of making either value or pattern settable
|
415
|
-
# with synchronization to the other form. A derived value cannot be serialized
|
416
|
-
# and we want to serialize the pattern. When recreating the object we need to
|
417
|
-
# recreate it from the pattern string.
|
418
|
-
# The below sets both values if one is changed.
|
419
|
-
#
|
420
|
-
def value= regexp
|
421
|
-
setValue regexp
|
422
|
-
setPattern regexp.to_s
|
423
|
-
end
|
69
|
+
class LiteralRegularExpression
|
70
|
+
module ClassModule
|
71
|
+
# Go through the gymnastics of making either value or pattern settable
|
72
|
+
# with synchronization to the other form. A derived value cannot be serialized
|
73
|
+
# and we want to serialize the pattern. When recreating the object we need to
|
74
|
+
# recreate it from the pattern string.
|
75
|
+
# The below sets both values if one is changed.
|
76
|
+
#
|
77
|
+
def value= regexp
|
78
|
+
setValue regexp
|
79
|
+
setPattern regexp.to_s
|
80
|
+
end
|
424
81
|
|
425
|
-
|
426
|
-
|
427
|
-
|
82
|
+
def pattern= regexp_string
|
83
|
+
setPattern regexp_string
|
84
|
+
setValue Regexp.new(regexp_string)
|
85
|
+
end
|
428
86
|
end
|
429
87
|
end
|
430
88
|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
has_attr 'value', String, :lowerBound => 1
|
437
|
-
end
|
438
|
-
|
439
|
-
class LiteralNumber < LiteralValue
|
440
|
-
abstract
|
441
|
-
end
|
442
|
-
|
443
|
-
# A literal number has a radix of decimal (10), octal (8), or hex (16) to enable string conversion with the input radix.
|
444
|
-
# By default, a radix of 10 is used.
|
445
|
-
#
|
446
|
-
class LiteralInteger < LiteralNumber
|
447
|
-
has_attr 'radix', Integer, :lowerBound => 1, :defaultValueLiteral => "10"
|
448
|
-
has_attr 'value', Integer, :lowerBound => 1
|
449
|
-
end
|
450
|
-
|
451
|
-
class LiteralFloat < LiteralNumber
|
452
|
-
has_attr 'value', Float, :lowerBound => 1
|
453
|
-
end
|
454
|
-
|
455
|
-
# The DSL `undef`.
|
456
|
-
#
|
457
|
-
class LiteralUndef < Literal; end
|
458
|
-
|
459
|
-
# The DSL `default`
|
460
|
-
class LiteralDefault < Literal; end
|
461
|
-
|
462
|
-
# DSL `true` or `false`
|
463
|
-
class LiteralBoolean < LiteralValue
|
464
|
-
has_attr 'value', Boolean, :lowerBound => 1
|
465
|
-
end
|
466
|
-
|
467
|
-
# A text expression is an interpolation of an expression. If the embedded expression is
|
468
|
-
# a QualifiedName, it is taken as a variable name and resolved. All other expressions are evaluated.
|
469
|
-
# The result is transformed to a string.
|
470
|
-
#
|
471
|
-
class TextExpression < UnaryExpression; end
|
472
|
-
|
473
|
-
# An interpolated/concatenated string. The contained segments are expressions. Verbatim sections
|
474
|
-
# should be LiteralString instances, and interpolated expressions should either be
|
475
|
-
# TextExpression instances (if QualifiedNames should be turned into variables), or any other expression
|
476
|
-
# if such treatment is not needed.
|
477
|
-
#
|
478
|
-
class ConcatenatedString < Expression
|
479
|
-
contains_many_uni 'segments', Expression
|
480
|
-
end
|
481
|
-
|
482
|
-
# A DSL NAME (one or multiple parts separated by '::').
|
483
|
-
#
|
484
|
-
class QualifiedName < LiteralValue
|
485
|
-
has_attr 'value', String, :lowerBound => 1
|
486
|
-
end
|
487
|
-
|
488
|
-
# A DSL CLASSREF (one or multiple parts separated by '::' where (at least) the first part starts with an upper case letter).
|
489
|
-
#
|
490
|
-
class QualifiedReference < LiteralValue
|
491
|
-
has_attr 'value', String, :lowerBound => 1
|
492
|
-
end
|
493
|
-
|
494
|
-
# A Variable expression looks up value of expr (some kind of name) in scope.
|
495
|
-
# The expression is typically a QualifiedName, or QualifiedReference.
|
496
|
-
#
|
497
|
-
class VariableExpression < UnaryExpression; end
|
498
|
-
|
499
|
-
# Epp start
|
500
|
-
class EppExpression < Expression
|
501
|
-
has_attr 'see_scope', Boolean
|
502
|
-
contains_one_uni 'body', Expression
|
503
|
-
end
|
504
|
-
|
505
|
-
# A string to render
|
506
|
-
class RenderStringExpression < LiteralString
|
507
|
-
end
|
508
|
-
|
509
|
-
# An expression to evluate and render
|
510
|
-
class RenderExpression < UnaryExpression
|
511
|
-
end
|
512
|
-
|
513
|
-
# A resource body describes one resource instance
|
514
|
-
#
|
515
|
-
class ResourceBody < Positioned
|
516
|
-
contains_one_uni 'title', Expression
|
517
|
-
contains_many_uni 'operations', AttributeOperation
|
518
|
-
end
|
519
|
-
|
520
|
-
# An abstract resource describes the form of the resource (regular, virtual or exported)
|
521
|
-
# and adds convenience methods to ask if it is virtual or exported.
|
522
|
-
# All derived classes may not support all forms, and these needs to be validated
|
523
|
-
#
|
524
|
-
class AbstractResource < Expression
|
525
|
-
abstract
|
526
|
-
has_attr 'form', RGen::MetamodelBuilder::DataTypes::Enum.new([:regular, :virtual, :exported ]), :lowerBound => 1, :defaultValueLiteral => "regular"
|
527
|
-
has_attr 'virtual', Boolean, :derived => true
|
528
|
-
has_attr 'exported', Boolean, :derived => true
|
529
|
-
|
530
|
-
module ClassModule
|
531
|
-
def virtual_derived
|
532
|
-
form == :virtual || form == :exported
|
533
|
-
end
|
89
|
+
class AbstractResource
|
90
|
+
module ClassModule
|
91
|
+
def virtual_derived
|
92
|
+
form == :virtual || form == :exported
|
93
|
+
end
|
534
94
|
|
535
|
-
|
536
|
-
|
95
|
+
def exported_derived
|
96
|
+
form == :exported
|
97
|
+
end
|
537
98
|
end
|
538
99
|
end
|
539
100
|
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
contains_many_uni 'bodies', ResourceBody
|
548
|
-
end
|
549
|
-
|
550
|
-
# A resource defaults sets defaults for a resource type. This class inherits from AbstractResource
|
551
|
-
# but does only support the :regular form (this is intentional to be able to produce better error messages
|
552
|
-
# when illegal forms are applied to a model.
|
553
|
-
#
|
554
|
-
class ResourceDefaultsExpression < AbstractResource
|
555
|
-
contains_one_uni 'type_ref', QualifiedReference
|
556
|
-
contains_many_uni 'operations', AttributeOperation
|
557
|
-
end
|
558
|
-
|
559
|
-
# A resource override overrides already set values.
|
560
|
-
#
|
561
|
-
class ResourceOverrideExpression < Expression
|
562
|
-
contains_one_uni 'resources', Expression, :lowerBound => 1
|
563
|
-
contains_many_uni 'operations', AttributeOperation
|
564
|
-
end
|
565
|
-
|
566
|
-
# A selector entry describes a map from matching_expr to value_expr.
|
567
|
-
#
|
568
|
-
class SelectorEntry < Positioned
|
569
|
-
contains_one_uni 'matching_expr', Expression, :lowerBound => 1
|
570
|
-
contains_one_uni 'value_expr', Expression, :lowerBound => 1
|
571
|
-
end
|
572
|
-
|
573
|
-
# A selector expression represents a mapping from a left_expr to a matching SelectorEntry.
|
574
|
-
#
|
575
|
-
class SelectorExpression < Expression
|
576
|
-
contains_one_uni 'left_expr', Expression, :lowerBound => 1
|
577
|
-
contains_many_uni 'selectors', SelectorEntry
|
578
|
-
end
|
579
|
-
|
580
|
-
# A named access expression looks up a named part. (e.g. $a.b)
|
581
|
-
#
|
582
|
-
class NamedAccessExpression < BinaryExpression; end
|
583
|
-
|
584
|
-
# A Program is the top level construct returned by the parser
|
585
|
-
# it contains the parsed result in the body, and has a reference to the full source text,
|
586
|
-
# and its origin. The line_offset's is an array with the start offset of each line.
|
587
|
-
#
|
588
|
-
class Program < PopsObject
|
589
|
-
contains_one_uni 'body', Expression
|
590
|
-
has_many 'definitions', Definition
|
591
|
-
has_attr 'source_text', String
|
592
|
-
has_attr 'source_ref', String
|
593
|
-
has_many_attr 'line_offsets', Integer
|
594
|
-
has_attr 'locator', Object, :lowerBound => 1, :transient => true
|
595
|
-
|
596
|
-
module ClassModule
|
597
|
-
def locator
|
598
|
-
unless result = getLocator
|
599
|
-
setLocator(result = Puppet::Pops::Parser::Locator.locator(source_text, source_ref(), line_offsets))
|
101
|
+
class Program < PopsObject
|
102
|
+
module ClassModule
|
103
|
+
def locator
|
104
|
+
unless result = getLocator
|
105
|
+
setLocator(result = Puppet::Pops::Parser::Locator.locator(source_text, source_ref(), line_offsets))
|
106
|
+
end
|
107
|
+
result
|
600
108
|
end
|
601
|
-
result
|
602
109
|
end
|
603
110
|
end
|
604
111
|
|
605
112
|
end
|
113
|
+
|
606
114
|
end
|