puppet 3.6.2-x86-mingw32 → 3.7.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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 +308 -150
- 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
@@ -50,6 +50,7 @@ class Puppet::Pops::Model::ModelLabelProvider < Puppet::Pops::LabelProvider
|
|
50
50
|
def label_VariableExpression o ; "Variable" end
|
51
51
|
def label_TextExpression o ; "Expression in Interpolated String" end
|
52
52
|
def label_UnaryMinusExpression o ; "Unary Minus" end
|
53
|
+
def label_UnfoldExpression o ; "Unfold" end
|
53
54
|
def label_BlockExpression o ; "Block Expression" end
|
54
55
|
def label_ConcatenatedString o ; "Double Quoted String" end
|
55
56
|
def label_HeredocExpression o ; "'@(#{o.syntax})' expression" end
|
@@ -83,7 +84,8 @@ class Puppet::Pops::Model::ModelLabelProvider < Puppet::Pops::LabelProvider
|
|
83
84
|
def label_Hash o ; "Hash" end
|
84
85
|
def label_QualifiedName o ; "Name" end
|
85
86
|
def label_QualifiedReference o ; "Type-Name" end
|
86
|
-
def
|
87
|
+
def label_PAnyType o ; "#{Puppet::Pops::Types::TypeCalculator.string(o)}-Type" end
|
88
|
+
def label_ReservedWord o ; "Reserved Word '#{o.word}'" end
|
87
89
|
|
88
90
|
def label_PResourceType o
|
89
91
|
if o.title
|
@@ -94,7 +96,7 @@ class Puppet::Pops::Model::ModelLabelProvider < Puppet::Pops::LabelProvider
|
|
94
96
|
end
|
95
97
|
|
96
98
|
def label_Class o
|
97
|
-
if o <= Puppet::Pops::Types::
|
99
|
+
if o <= Puppet::Pops::Types::PAnyType
|
98
100
|
simple_name = o.name.split('::').last
|
99
101
|
simple_name[1..-5] + "-Type"
|
100
102
|
else
|
@@ -0,0 +1,576 @@
|
|
1
|
+
#
|
2
|
+
# The Puppet Pops Metamodel
|
3
|
+
#
|
4
|
+
# This module contains a formal description of the Puppet Pops (*P*uppet *OP*eration instruction*S*).
|
5
|
+
# It describes a Metamodel containing DSL instructions, a description of PuppetType and related
|
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.
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'rgen/metamodel_builder'
|
23
|
+
|
24
|
+
module Puppet::Pops::Model
|
25
|
+
extend RGen::MetamodelBuilder::ModuleExtension
|
26
|
+
|
27
|
+
# A base class for modeled objects that makes them Visitable, and Adaptable.
|
28
|
+
#
|
29
|
+
class PopsObject < RGen::MetamodelBuilder::MMBase
|
30
|
+
abstract
|
31
|
+
end
|
32
|
+
|
33
|
+
# A Positioned object has an offset measured in an opaque unit (representing characters) from the start
|
34
|
+
# of a source text (starting
|
35
|
+
# from 0), and a length measured in the same opaque unit. The resolution of the opaque unit requires the
|
36
|
+
# aid of a Locator instance that knows about the measure. This information is stored in the model's
|
37
|
+
# root node - a Program.
|
38
|
+
#
|
39
|
+
# The offset and length are optional if the source of the model is not from parsed text.
|
40
|
+
#
|
41
|
+
class Positioned < PopsObject
|
42
|
+
abstract
|
43
|
+
has_attr 'offset', Integer
|
44
|
+
has_attr 'length', Integer
|
45
|
+
end
|
46
|
+
|
47
|
+
# @abstract base class for expressions
|
48
|
+
class Expression < Positioned
|
49
|
+
abstract
|
50
|
+
end
|
51
|
+
|
52
|
+
# A Nop - the "no op" expression.
|
53
|
+
# @note not really needed since the evaluator can evaluate nil with the meaning of NoOp
|
54
|
+
# @todo deprecate? May be useful if there is the need to differentiate between nil and Nop when transforming model.
|
55
|
+
#
|
56
|
+
class Nop < Expression
|
57
|
+
end
|
58
|
+
|
59
|
+
# A binary expression is abstract and has a left and a right expression. The order of evaluation
|
60
|
+
# and semantics are determined by the concrete subclass.
|
61
|
+
#
|
62
|
+
class BinaryExpression < Expression
|
63
|
+
abstract
|
64
|
+
#
|
65
|
+
# @!attribute [rw] left_expr
|
66
|
+
# @return [Expression]
|
67
|
+
contains_one_uni 'left_expr', Expression, :lowerBound => 1
|
68
|
+
contains_one_uni 'right_expr', Expression, :lowerBound => 1
|
69
|
+
end
|
70
|
+
|
71
|
+
# An unary expression is abstract and contains one expression. The semantics are determined by
|
72
|
+
# a concrete subclass.
|
73
|
+
#
|
74
|
+
class UnaryExpression < Expression
|
75
|
+
abstract
|
76
|
+
contains_one_uni 'expr', Expression, :lowerBound => 1
|
77
|
+
end
|
78
|
+
|
79
|
+
# A class that simply evaluates to the contained expression.
|
80
|
+
# It is of value in order to preserve user entered parentheses in transformations, and
|
81
|
+
# transformations from model to source.
|
82
|
+
#
|
83
|
+
class ParenthesizedExpression < UnaryExpression; end
|
84
|
+
|
85
|
+
# A boolean not expression, reversing the truth of the unary expr.
|
86
|
+
#
|
87
|
+
class NotExpression < UnaryExpression; end
|
88
|
+
|
89
|
+
# An arithmetic expression reversing the polarity of the numeric unary expr.
|
90
|
+
#
|
91
|
+
class UnaryMinusExpression < UnaryExpression; end
|
92
|
+
|
93
|
+
# Unfolds an array (a.k.a 'splat')
|
94
|
+
class UnfoldExpression < UnaryExpression; end
|
95
|
+
|
96
|
+
OpAssignment = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
97
|
+
:literals => [:'=', :'+=', :'-='],
|
98
|
+
:name => 'OpAssignment')
|
99
|
+
|
100
|
+
# An assignment expression assigns a value to the lval() of the left_expr.
|
101
|
+
#
|
102
|
+
class AssignmentExpression < BinaryExpression
|
103
|
+
has_attr 'operator', OpAssignment, :lowerBound => 1
|
104
|
+
end
|
105
|
+
|
106
|
+
OpArithmetic = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
107
|
+
:literals => [:'+', :'-', :'*', :'%', :'/', :'<<', :'>>' ],
|
108
|
+
:name => 'OpArithmetic')
|
109
|
+
|
110
|
+
# An arithmetic expression applies an arithmetic operator on left and right expressions.
|
111
|
+
#
|
112
|
+
class ArithmeticExpression < BinaryExpression
|
113
|
+
has_attr 'operator', OpArithmetic, :lowerBound => 1
|
114
|
+
end
|
115
|
+
|
116
|
+
OpRelationship = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
117
|
+
:literals => [:'->', :'<-', :'~>', :'<~'],
|
118
|
+
:name => 'OpRelationship')
|
119
|
+
|
120
|
+
# A relationship expression associates the left and right expressions
|
121
|
+
#
|
122
|
+
class RelationshipExpression < BinaryExpression
|
123
|
+
has_attr 'operator', OpRelationship, :lowerBound => 1
|
124
|
+
end
|
125
|
+
|
126
|
+
# A binary expression, that accesses the value denoted by right in left. i.e. typically
|
127
|
+
# expressed concretely in a language as left[right].
|
128
|
+
#
|
129
|
+
class AccessExpression < Expression
|
130
|
+
contains_one_uni 'left_expr', Expression, :lowerBound => 1
|
131
|
+
contains_many_uni 'keys', Expression, :lowerBound => 1
|
132
|
+
end
|
133
|
+
|
134
|
+
OpComparison = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
135
|
+
:literals => [:'==', :'!=', :'<', :'>', :'<=', :'>=' ],
|
136
|
+
:name => 'OpComparison')
|
137
|
+
|
138
|
+
# A comparison expression compares left and right using a comparison operator.
|
139
|
+
#
|
140
|
+
class ComparisonExpression < BinaryExpression
|
141
|
+
has_attr 'operator', OpComparison, :lowerBound => 1
|
142
|
+
end
|
143
|
+
|
144
|
+
OpMatch = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
145
|
+
:literals => [:'!~', :'=~'],
|
146
|
+
:name => 'OpMatch')
|
147
|
+
|
148
|
+
# A match expression matches left and right using a matching operator.
|
149
|
+
#
|
150
|
+
class MatchExpression < BinaryExpression
|
151
|
+
has_attr 'operator', OpMatch, :lowerBound => 1
|
152
|
+
end
|
153
|
+
|
154
|
+
# An 'in' expression checks if left is 'in' right
|
155
|
+
#
|
156
|
+
class InExpression < BinaryExpression; end
|
157
|
+
|
158
|
+
# A boolean expression applies a logical connective operator (and, or) to left and right expressions.
|
159
|
+
#
|
160
|
+
class BooleanExpression < BinaryExpression
|
161
|
+
abstract
|
162
|
+
end
|
163
|
+
|
164
|
+
# An and expression applies the logical connective operator and to left and right expression
|
165
|
+
# and does not evaluate the right expression if the left expression is false.
|
166
|
+
#
|
167
|
+
class AndExpression < BooleanExpression; end
|
168
|
+
|
169
|
+
# An or expression applies the logical connective operator or to the left and right expression
|
170
|
+
# and does not evaluate the right expression if the left expression is true
|
171
|
+
#
|
172
|
+
class OrExpression < BooleanExpression; end
|
173
|
+
|
174
|
+
# A literal list / array containing 0:M expressions.
|
175
|
+
#
|
176
|
+
class LiteralList < Expression
|
177
|
+
contains_many_uni 'values', Expression
|
178
|
+
end
|
179
|
+
|
180
|
+
# A Keyed entry has a key and a value expression. It is typically used as an entry in a Hash.
|
181
|
+
#
|
182
|
+
class KeyedEntry < Positioned
|
183
|
+
contains_one_uni 'key', Expression, :lowerBound => 1
|
184
|
+
contains_one_uni 'value', Expression, :lowerBound => 1
|
185
|
+
end
|
186
|
+
|
187
|
+
# A literal hash is a collection of KeyedEntry objects
|
188
|
+
#
|
189
|
+
class LiteralHash < Expression
|
190
|
+
contains_many_uni 'entries', KeyedEntry
|
191
|
+
end
|
192
|
+
|
193
|
+
# A block contains a list of expressions
|
194
|
+
#
|
195
|
+
class BlockExpression < Expression
|
196
|
+
contains_many_uni 'statements', Expression
|
197
|
+
end
|
198
|
+
|
199
|
+
# A case option entry in a CaseStatement
|
200
|
+
#
|
201
|
+
class CaseOption < Expression
|
202
|
+
contains_many_uni 'values', Expression, :lowerBound => 1
|
203
|
+
contains_one_uni 'then_expr', Expression, :lowerBound => 1
|
204
|
+
end
|
205
|
+
|
206
|
+
# A case expression has a test, a list of options (multi values => block map).
|
207
|
+
# One CaseOption may contain a LiteralDefault as value. This option will be picked if nothing
|
208
|
+
# else matched.
|
209
|
+
#
|
210
|
+
class CaseExpression < Expression
|
211
|
+
contains_one_uni 'test', Expression, :lowerBound => 1
|
212
|
+
contains_many_uni 'options', CaseOption
|
213
|
+
end
|
214
|
+
|
215
|
+
# A query expression is an expression that is applied to some collection.
|
216
|
+
# The contained optional expression may contain different types of relational expressions depending
|
217
|
+
# on what the query is applied to.
|
218
|
+
#
|
219
|
+
class QueryExpression < Expression
|
220
|
+
abstract
|
221
|
+
contains_one_uni 'expr', Expression, :lowerBound => 0
|
222
|
+
end
|
223
|
+
|
224
|
+
# An exported query is a special form of query that searches for exported objects.
|
225
|
+
#
|
226
|
+
class ExportedQuery < QueryExpression
|
227
|
+
end
|
228
|
+
|
229
|
+
# A virtual query is a special form of query that searches for virtual objects.
|
230
|
+
#
|
231
|
+
class VirtualQuery < QueryExpression
|
232
|
+
end
|
233
|
+
|
234
|
+
OpAttribute = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
235
|
+
:literals => [:'=>', :'+>', ],
|
236
|
+
:name => 'OpAttribute')
|
237
|
+
|
238
|
+
class AbstractAttributeOperation < Positioned
|
239
|
+
end
|
240
|
+
|
241
|
+
# An attribute operation sets or appends a value to a named attribute.
|
242
|
+
#
|
243
|
+
class AttributeOperation < AbstractAttributeOperation
|
244
|
+
has_attr 'attribute_name', String, :lowerBound => 1
|
245
|
+
has_attr 'operator', OpAttribute, :lowerBound => 1
|
246
|
+
contains_one_uni 'value_expr', Expression, :lowerBound => 1
|
247
|
+
end
|
248
|
+
|
249
|
+
# An attribute operation containing an expression that must evaluate to a Hash
|
250
|
+
#
|
251
|
+
class AttributesOperation < AbstractAttributeOperation
|
252
|
+
contains_one_uni 'expr', Expression, :lowerBound => 1
|
253
|
+
end
|
254
|
+
|
255
|
+
# An object that collects stored objects from the central cache and returns
|
256
|
+
# them to the current host. Operations may optionally be applied.
|
257
|
+
#
|
258
|
+
class CollectExpression < Expression
|
259
|
+
contains_one_uni 'type_expr', Expression, :lowerBound => 1
|
260
|
+
contains_one_uni 'query', QueryExpression, :lowerBound => 1
|
261
|
+
contains_many_uni 'operations', AttributeOperation
|
262
|
+
end
|
263
|
+
|
264
|
+
class Parameter < Positioned
|
265
|
+
has_attr 'name', String, :lowerBound => 1
|
266
|
+
contains_one_uni 'value', Expression
|
267
|
+
contains_one_uni 'type_expr', Expression, :lowerBound => 0
|
268
|
+
has_attr 'captures_rest', Boolean
|
269
|
+
end
|
270
|
+
|
271
|
+
# Abstract base class for definitions.
|
272
|
+
#
|
273
|
+
class Definition < Expression
|
274
|
+
abstract
|
275
|
+
end
|
276
|
+
|
277
|
+
# Abstract base class for named and parameterized definitions.
|
278
|
+
class NamedDefinition < Definition
|
279
|
+
abstract
|
280
|
+
has_attr 'name', String, :lowerBound => 1
|
281
|
+
contains_many_uni 'parameters', Parameter
|
282
|
+
contains_one_uni 'body', Expression
|
283
|
+
end
|
284
|
+
|
285
|
+
# A resource type definition (a 'define' in the DSL).
|
286
|
+
#
|
287
|
+
class ResourceTypeDefinition < NamedDefinition
|
288
|
+
end
|
289
|
+
|
290
|
+
# A node definition matches hosts using Strings, or Regular expressions. It may inherit from
|
291
|
+
# a parent node (also using a String or Regular expression).
|
292
|
+
#
|
293
|
+
class NodeDefinition < Definition
|
294
|
+
contains_one_uni 'parent', Expression
|
295
|
+
contains_many_uni 'host_matches', Expression, :lowerBound => 1
|
296
|
+
contains_one_uni 'body', Expression
|
297
|
+
end
|
298
|
+
|
299
|
+
class LocatableExpression < Expression
|
300
|
+
has_many_attr 'line_offsets', Integer
|
301
|
+
has_attr 'locator', Object, :lowerBound => 1, :transient => true
|
302
|
+
end
|
303
|
+
|
304
|
+
# Contains one expression which has offsets reported virtually (offset against the Program's
|
305
|
+
# overall locator).
|
306
|
+
#
|
307
|
+
class SubLocatedExpression < Expression
|
308
|
+
contains_one_uni 'expr', Expression, :lowerBound => 1
|
309
|
+
|
310
|
+
# line offset index for contained expressions
|
311
|
+
has_many_attr 'line_offsets', Integer
|
312
|
+
|
313
|
+
# Number of preceding lines (before the line_offsets)
|
314
|
+
has_attr 'leading_line_count', Integer
|
315
|
+
|
316
|
+
# The offset of the leading source line (i.e. size of "left margin").
|
317
|
+
has_attr 'leading_line_offset', Integer
|
318
|
+
|
319
|
+
# The locator for the sub-locatable's children (not for the sublocator itself)
|
320
|
+
# The locator is not serialized and is recreated on demand from the indexing information
|
321
|
+
# in self.
|
322
|
+
#
|
323
|
+
has_attr 'locator', Object, :lowerBound => 1, :transient => true
|
324
|
+
end
|
325
|
+
|
326
|
+
# A heredoc is a wrapper around a LiteralString or a ConcatenatedStringExpression with a specification
|
327
|
+
# of syntax. The expectation is that "syntax" has meaning to a validator. A syntax of nil or '' means
|
328
|
+
# "unspecified syntax".
|
329
|
+
#
|
330
|
+
class HeredocExpression < Expression
|
331
|
+
has_attr 'syntax', String
|
332
|
+
contains_one_uni 'text_expr', Expression, :lowerBound => 1
|
333
|
+
end
|
334
|
+
|
335
|
+
# A class definition
|
336
|
+
#
|
337
|
+
class HostClassDefinition < NamedDefinition
|
338
|
+
has_attr 'parent_class', String
|
339
|
+
end
|
340
|
+
|
341
|
+
# i.e {|parameters| body }
|
342
|
+
class LambdaExpression < Expression
|
343
|
+
contains_many_uni 'parameters', Parameter
|
344
|
+
contains_one_uni 'body', Expression
|
345
|
+
end
|
346
|
+
|
347
|
+
# If expression. If test is true, the then_expr part should be evaluated, else the (optional)
|
348
|
+
# else_expr. An 'elsif' is simply an else_expr = IfExpression, and 'else' is simply else == Block.
|
349
|
+
# a 'then' is typically a Block.
|
350
|
+
#
|
351
|
+
class IfExpression < Expression
|
352
|
+
contains_one_uni 'test', Expression, :lowerBound => 1
|
353
|
+
contains_one_uni 'then_expr', Expression, :lowerBound => 1
|
354
|
+
contains_one_uni 'else_expr', Expression
|
355
|
+
end
|
356
|
+
|
357
|
+
# An if expression with boolean reversed test.
|
358
|
+
#
|
359
|
+
class UnlessExpression < IfExpression
|
360
|
+
end
|
361
|
+
|
362
|
+
# An abstract call.
|
363
|
+
#
|
364
|
+
class CallExpression < Expression
|
365
|
+
abstract
|
366
|
+
# A bit of a crutch; functions are either procedures (void return) or has an rvalue
|
367
|
+
# this flag tells the evaluator that it is a failure to call a function that is void/procedure
|
368
|
+
# where a value is expected.
|
369
|
+
#
|
370
|
+
has_attr 'rval_required', Boolean, :defaultValueLiteral => "false"
|
371
|
+
contains_one_uni 'functor_expr', Expression, :lowerBound => 1
|
372
|
+
contains_many_uni 'arguments', Expression
|
373
|
+
contains_one_uni 'lambda', Expression
|
374
|
+
end
|
375
|
+
|
376
|
+
# A function call where the functor_expr should evaluate to something callable.
|
377
|
+
#
|
378
|
+
class CallFunctionExpression < CallExpression; end
|
379
|
+
|
380
|
+
# A function call where the given functor_expr should evaluate to the name
|
381
|
+
# of a function.
|
382
|
+
#
|
383
|
+
class CallNamedFunctionExpression < CallExpression; end
|
384
|
+
|
385
|
+
# A method/function call where the function expr is a NamedAccess and with support for
|
386
|
+
# an optional lambda block
|
387
|
+
#
|
388
|
+
class CallMethodExpression < CallExpression
|
389
|
+
end
|
390
|
+
|
391
|
+
# Abstract base class for literals.
|
392
|
+
#
|
393
|
+
class Literal < Expression
|
394
|
+
abstract
|
395
|
+
end
|
396
|
+
|
397
|
+
# A literal value is an abstract value holder. The type of the contained value is
|
398
|
+
# determined by the concrete subclass.
|
399
|
+
#
|
400
|
+
class LiteralValue < Literal
|
401
|
+
abstract
|
402
|
+
end
|
403
|
+
|
404
|
+
# A Regular Expression Literal.
|
405
|
+
#
|
406
|
+
class LiteralRegularExpression < LiteralValue
|
407
|
+
has_attr 'value', Object, :lowerBound => 1, :transient => true
|
408
|
+
has_attr 'pattern', String, :lowerBound => 1
|
409
|
+
end
|
410
|
+
|
411
|
+
# A Literal String
|
412
|
+
#
|
413
|
+
class LiteralString < LiteralValue
|
414
|
+
has_attr 'value', String, :lowerBound => 1
|
415
|
+
end
|
416
|
+
|
417
|
+
class LiteralNumber < LiteralValue
|
418
|
+
abstract
|
419
|
+
end
|
420
|
+
|
421
|
+
# A literal number has a radix of decimal (10), octal (8), or hex (16) to enable string conversion with the input radix.
|
422
|
+
# By default, a radix of 10 is used.
|
423
|
+
#
|
424
|
+
class LiteralInteger < LiteralNumber
|
425
|
+
has_attr 'radix', Integer, :lowerBound => 1, :defaultValueLiteral => "10"
|
426
|
+
has_attr 'value', Integer, :lowerBound => 1
|
427
|
+
end
|
428
|
+
|
429
|
+
class LiteralFloat < LiteralNumber
|
430
|
+
has_attr 'value', Float, :lowerBound => 1
|
431
|
+
end
|
432
|
+
|
433
|
+
# The DSL `undef`.
|
434
|
+
#
|
435
|
+
class LiteralUndef < Literal; end
|
436
|
+
|
437
|
+
# The DSL `default`
|
438
|
+
class LiteralDefault < Literal; end
|
439
|
+
|
440
|
+
# DSL `true` or `false`
|
441
|
+
class LiteralBoolean < LiteralValue
|
442
|
+
has_attr 'value', Boolean, :lowerBound => 1
|
443
|
+
end
|
444
|
+
|
445
|
+
# A text expression is an interpolation of an expression. If the embedded expression is
|
446
|
+
# a QualifiedName, it is taken as a variable name and resolved. All other expressions are evaluated.
|
447
|
+
# The result is transformed to a string.
|
448
|
+
#
|
449
|
+
class TextExpression < UnaryExpression; end
|
450
|
+
|
451
|
+
# An interpolated/concatenated string. The contained segments are expressions. Verbatim sections
|
452
|
+
# should be LiteralString instances, and interpolated expressions should either be
|
453
|
+
# TextExpression instances (if QualifiedNames should be turned into variables), or any other expression
|
454
|
+
# if such treatment is not needed.
|
455
|
+
#
|
456
|
+
class ConcatenatedString < Expression
|
457
|
+
contains_many_uni 'segments', Expression
|
458
|
+
end
|
459
|
+
|
460
|
+
# A DSL NAME (one or multiple parts separated by '::').
|
461
|
+
#
|
462
|
+
class QualifiedName < LiteralValue
|
463
|
+
has_attr 'value', String, :lowerBound => 1
|
464
|
+
end
|
465
|
+
|
466
|
+
# Represents a parsed reserved word
|
467
|
+
class ReservedWord < LiteralValue
|
468
|
+
has_attr 'word', String, :lowerBound => 1
|
469
|
+
end
|
470
|
+
|
471
|
+
# A DSL CLASSREF (one or multiple parts separated by '::' where (at least) the first part starts with an upper case letter).
|
472
|
+
#
|
473
|
+
class QualifiedReference < LiteralValue
|
474
|
+
has_attr 'value', String, :lowerBound => 1
|
475
|
+
end
|
476
|
+
|
477
|
+
# A Variable expression looks up value of expr (some kind of name) in scope.
|
478
|
+
# The expression is typically a QualifiedName, or QualifiedReference.
|
479
|
+
#
|
480
|
+
class VariableExpression < UnaryExpression; end
|
481
|
+
|
482
|
+
# Epp start
|
483
|
+
class EppExpression < Expression
|
484
|
+
# EPP can be specified without giving any parameter specification.
|
485
|
+
# However, the parameters of the lambda in that case are the empty
|
486
|
+
# array, which is the same as when the parameters are explicity
|
487
|
+
# specified as empty. This attribute tracks that difference.
|
488
|
+
has_attr 'parameters_specified', Boolean
|
489
|
+
contains_one_uni 'body', Expression
|
490
|
+
end
|
491
|
+
|
492
|
+
# A string to render
|
493
|
+
class RenderStringExpression < LiteralString
|
494
|
+
end
|
495
|
+
|
496
|
+
# An expression to evluate and render
|
497
|
+
class RenderExpression < UnaryExpression
|
498
|
+
end
|
499
|
+
|
500
|
+
# A resource body describes one resource instance
|
501
|
+
#
|
502
|
+
class ResourceBody < Positioned
|
503
|
+
contains_one_uni 'title', Expression
|
504
|
+
contains_many_uni 'operations', AbstractAttributeOperation
|
505
|
+
end
|
506
|
+
|
507
|
+
ResourceFormEnum = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
508
|
+
:literals => [:regular, :virtual, :exported ],
|
509
|
+
:name => 'ResourceFormEnum')
|
510
|
+
|
511
|
+
# An abstract resource describes the form of the resource (regular, virtual or exported)
|
512
|
+
# and adds convenience methods to ask if it is virtual or exported.
|
513
|
+
# All derived classes may not support all forms, and these needs to be validated
|
514
|
+
#
|
515
|
+
class AbstractResource < Expression
|
516
|
+
abstract
|
517
|
+
has_attr 'form', ResourceFormEnum, :lowerBound => 1, :defaultValueLiteral => "regular"
|
518
|
+
has_attr 'virtual', Boolean, :derived => true
|
519
|
+
has_attr 'exported', Boolean, :derived => true
|
520
|
+
end
|
521
|
+
|
522
|
+
# A resource expression is used to instantiate one or many resource. Resources may optionally
|
523
|
+
# be virtual or exported, an exported resource is always virtual.
|
524
|
+
#
|
525
|
+
class ResourceExpression < AbstractResource
|
526
|
+
contains_one_uni 'type_name', Expression, :lowerBound => 1
|
527
|
+
contains_many_uni 'bodies', ResourceBody
|
528
|
+
end
|
529
|
+
|
530
|
+
# A resource defaults sets defaults for a resource type. This class inherits from AbstractResource
|
531
|
+
# but does only support the :regular form (this is intentional to be able to produce better error messages
|
532
|
+
# when illegal forms are applied to a model.
|
533
|
+
#
|
534
|
+
class ResourceDefaultsExpression < AbstractResource
|
535
|
+
contains_one_uni 'type_ref', Expression
|
536
|
+
contains_many_uni 'operations', AbstractAttributeOperation
|
537
|
+
end
|
538
|
+
|
539
|
+
# A resource override overrides already set values.
|
540
|
+
#
|
541
|
+
class ResourceOverrideExpression < AbstractResource
|
542
|
+
contains_one_uni 'resources', Expression, :lowerBound => 1
|
543
|
+
contains_many_uni 'operations', AbstractAttributeOperation
|
544
|
+
end
|
545
|
+
|
546
|
+
# A selector entry describes a map from matching_expr to value_expr.
|
547
|
+
#
|
548
|
+
class SelectorEntry < Positioned
|
549
|
+
contains_one_uni 'matching_expr', Expression, :lowerBound => 1
|
550
|
+
contains_one_uni 'value_expr', Expression, :lowerBound => 1
|
551
|
+
end
|
552
|
+
|
553
|
+
# A selector expression represents a mapping from a left_expr to a matching SelectorEntry.
|
554
|
+
#
|
555
|
+
class SelectorExpression < Expression
|
556
|
+
contains_one_uni 'left_expr', Expression, :lowerBound => 1
|
557
|
+
contains_many_uni 'selectors', SelectorEntry
|
558
|
+
end
|
559
|
+
|
560
|
+
# A named access expression looks up a named part. (e.g. $a.b)
|
561
|
+
#
|
562
|
+
class NamedAccessExpression < BinaryExpression; end
|
563
|
+
|
564
|
+
# A Program is the top level construct returned by the parser
|
565
|
+
# it contains the parsed result in the body, and has a reference to the full source text,
|
566
|
+
# and its origin. The line_offset's is an array with the start offset of each line.
|
567
|
+
#
|
568
|
+
class Program < PopsObject
|
569
|
+
contains_one_uni 'body', Expression
|
570
|
+
has_many 'definitions', Definition
|
571
|
+
has_attr 'source_text', String
|
572
|
+
has_attr 'source_ref', String
|
573
|
+
has_many_attr 'line_offsets', Integer
|
574
|
+
has_attr 'locator', Object, :lowerBound => 1, :transient => true
|
575
|
+
end
|
576
|
+
end
|