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
@@ -110,6 +110,10 @@ class Puppet::Pops::Model::ModelTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
110
110
|
[o.attribute_name, o.operator, do_dump(o.value_expr)]
|
111
111
|
end
|
112
112
|
|
113
|
+
def dump_AttributesOperation o
|
114
|
+
['* =>', do_dump(o.expr)]
|
115
|
+
end
|
116
|
+
|
113
117
|
def dump_LiteralList o
|
114
118
|
["[]"] + o.values.collect {|x| do_dump(x)}
|
115
119
|
end
|
@@ -182,8 +186,15 @@ class Puppet::Pops::Model::ModelTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
182
186
|
['-', do_dump(o.expr)]
|
183
187
|
end
|
184
188
|
|
189
|
+
def dump_UnfoldExpression o
|
190
|
+
['unfold', do_dump(o.expr)]
|
191
|
+
end
|
192
|
+
|
185
193
|
def dump_BlockExpression o
|
186
|
-
["block"]
|
194
|
+
result = ["block", :indent]
|
195
|
+
o.statements.each {|x| result << :break; result << do_dump(x) }
|
196
|
+
result << :dedent << :break
|
197
|
+
result
|
187
198
|
end
|
188
199
|
|
189
200
|
# Interpolated strings are shown as (cat seg0 seg1 ... segN)
|
@@ -238,7 +249,8 @@ class Puppet::Pops::Model::ModelTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
238
249
|
end
|
239
250
|
|
240
251
|
def dump_ResourceOverrideExpression o
|
241
|
-
|
252
|
+
form = o.form == :regular ? '' : o.form.to_s + "-"
|
253
|
+
result = [form+"override", do_dump(o.resources), :indent]
|
242
254
|
o.operations.each do |p|
|
243
255
|
result << :break << do_dump(p)
|
244
256
|
end
|
@@ -246,11 +258,20 @@ class Puppet::Pops::Model::ModelTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
246
258
|
result
|
247
259
|
end
|
248
260
|
|
261
|
+
def dump_ReservedWord o
|
262
|
+
[ 'reserved', o.word ]
|
263
|
+
end
|
264
|
+
|
249
265
|
# Produces parameters as name, or (= name value)
|
250
266
|
def dump_Parameter o
|
251
|
-
|
252
|
-
|
267
|
+
name_prefix = o.captures_rest ? '*' : ''
|
268
|
+
name_part = "#{name_prefix}#{o.name}"
|
269
|
+
if o.value && o.type_expr
|
270
|
+
["=t", do_dump(o.type_expr), name_part, do_dump(o.value)]
|
271
|
+
elsif o.value
|
253
272
|
["=", name_part, do_dump(o.value)]
|
273
|
+
elsif o.type_expr
|
274
|
+
["t", do_dump(o.type_expr), name_part]
|
254
275
|
else
|
255
276
|
name_part
|
256
277
|
end
|
@@ -345,7 +366,8 @@ class Puppet::Pops::Model::ModelTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
345
366
|
end
|
346
367
|
|
347
368
|
def dump_ResourceDefaultsExpression o
|
348
|
-
|
369
|
+
form = o.form == :regular ? '' : o.form.to_s + "-"
|
370
|
+
result = [form+"resource-defaults", do_dump(o.type_ref), :indent]
|
349
371
|
o.operations.each do |p|
|
350
372
|
result << :break << do_dump(p)
|
351
373
|
end
|
@@ -20,6 +20,7 @@ token NUMBER
|
|
20
20
|
token HEREDOC SUBLOCATE
|
21
21
|
token RENDER_STRING RENDER_EXPR EPP_START EPP_END EPP_END_TRIM
|
22
22
|
token FUNCTION
|
23
|
+
token PRIVATE ATTR TYPE
|
23
24
|
token LOW
|
24
25
|
|
25
26
|
prechigh
|
@@ -28,15 +29,14 @@ prechigh
|
|
28
29
|
left PIPE
|
29
30
|
left LPAREN
|
30
31
|
left RPAREN
|
31
|
-
left AT ATAT
|
32
32
|
left DOT
|
33
|
-
left CALL
|
34
33
|
nonassoc EPP_START
|
35
34
|
left LBRACK LISTSTART
|
36
35
|
left RBRACK
|
37
36
|
left QMARK
|
38
37
|
left LCOLLECT LLCOLLECT
|
39
38
|
right NOT
|
39
|
+
nonassoc SPLAT
|
40
40
|
nonassoc UMINUS
|
41
41
|
left IN
|
42
42
|
left MATCH NOMATCH
|
@@ -47,13 +47,12 @@ prechigh
|
|
47
47
|
left GREATEREQUAL GREATERTHAN LESSTHAN LESSEQUAL
|
48
48
|
left AND
|
49
49
|
left OR
|
50
|
-
right APPENDS DELETES EQUALS
|
51
50
|
left LBRACE
|
52
51
|
left SELBRACE
|
53
52
|
left RBRACE
|
53
|
+
right AT ATAT
|
54
|
+
right APPENDS DELETES EQUALS
|
54
55
|
left IN_EDGE OUT_EDGE IN_EDGE_SUB OUT_EDGE_SUB
|
55
|
-
left TITLE_COLON
|
56
|
-
left CASE_COLON
|
57
56
|
left FARROW
|
58
57
|
left COMMA
|
59
58
|
nonassoc RENDER_EXPR
|
@@ -62,44 +61,137 @@ prechigh
|
|
62
61
|
preclow
|
63
62
|
|
64
63
|
rule
|
65
|
-
# Produces [Model::
|
64
|
+
# Produces [Model::Program] with a body containing what was parsed
|
66
65
|
program
|
67
|
-
: statements
|
66
|
+
: statements { result = create_program(Factory.block_or_expression(*val[0])) }
|
68
67
|
| epp_expression { result = create_program(Factory.block_or_expression(*val[0])) }
|
69
|
-
|
|
68
|
+
| { result = create_empty_program() }
|
70
69
|
|
71
70
|
# Produces a semantic model (non validated, but semantically adjusted).
|
72
71
|
statements
|
73
72
|
: syntactic_statements { result = transform_calls(val[0]) }
|
74
73
|
|
75
|
-
#
|
76
|
-
#
|
74
|
+
# Collects sequence of elements into a list that the statements rule can transform
|
75
|
+
# (Needed because language supports function calls without parentheses around arguments).
|
77
76
|
# Produces Array<Model::Expression>
|
77
|
+
#
|
78
78
|
syntactic_statements
|
79
79
|
: syntactic_statement { result = [val[0]]}
|
80
80
|
| syntactic_statements SEMIC syntactic_statement { result = val[0].push val[2] }
|
81
81
|
| syntactic_statements syntactic_statement { result = val[0].push val[1] }
|
82
82
|
|
83
83
|
# Produce a single expression or Array of expression
|
84
|
+
# This exists to handle multiple arguments to non parenthesized function call. If e is expression,
|
85
|
+
# the a program can consists of e [e,e,e] where the first may be a name of a function to call.
|
86
|
+
#
|
84
87
|
syntactic_statement
|
85
|
-
:
|
86
|
-
| syntactic_statement COMMA
|
88
|
+
: assignment =LOW { result = val[0] }
|
89
|
+
| syntactic_statement COMMA assignment =LOW { result = aryfy(val[0]).push val[2] }
|
90
|
+
|
91
|
+
# Assignment (is right recursive since assignment is right associative)
|
92
|
+
assignment
|
93
|
+
: relationship =LOW
|
94
|
+
| relationship EQUALS assignment { result = val[0].set(val[2]) ; loc result, val[1] }
|
95
|
+
| relationship APPENDS assignment { result = val[0].plus_set(val[2]) ; loc result, val[1] }
|
96
|
+
| relationship DELETES assignment { result = val[0].minus_set(val[2]); loc result, val[1] }
|
97
|
+
|
98
|
+
assignments
|
99
|
+
: assignment { result = [val[0]] }
|
100
|
+
| assignments COMMA assignment { result = val[0].push(val[2]) }
|
101
|
+
|
102
|
+
relationship
|
103
|
+
: resource =LOW
|
104
|
+
| relationship IN_EDGE resource { result = val[0].relop(val[1][:value], val[2]); loc result, val[1] }
|
105
|
+
| relationship IN_EDGE_SUB resource { result = val[0].relop(val[1][:value], val[2]); loc result, val[1] }
|
106
|
+
| relationship OUT_EDGE resource { result = val[0].relop(val[1][:value], val[2]); loc result, val[1] }
|
107
|
+
| relationship OUT_EDGE_SUB resource { result = val[0].relop(val[1][:value], val[2]); loc result, val[1] }
|
108
|
+
|
109
|
+
#-- RESOURCE
|
110
|
+
#
|
111
|
+
resource
|
112
|
+
: expression = LOW
|
87
113
|
|
88
|
-
|
89
|
-
|
114
|
+
#---VIRTUAL
|
115
|
+
| AT resource {
|
116
|
+
result = val[1]
|
117
|
+
unless Factory.set_resource_form(result, :virtual)
|
118
|
+
# This is equivalent to a syntax error - additional semantic restrictions apply
|
119
|
+
error val[0], "Virtual (@) can only be applied to a Resource Expression"
|
120
|
+
end
|
121
|
+
# relocate the result
|
122
|
+
loc result, val[0], val[1]
|
123
|
+
}
|
90
124
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
125
|
+
#---EXPORTED
|
126
|
+
| ATAT resource {
|
127
|
+
result = val[1]
|
128
|
+
unless Factory.set_resource_form(result, :exported)
|
129
|
+
# This is equivalent to a syntax error - additional semantic restrictions apply
|
130
|
+
error val[0], "Exported (@@) can only be applied to a Resource Expression"
|
131
|
+
end
|
132
|
+
# relocate the result
|
133
|
+
loc result, val[0], val[1]
|
134
|
+
}
|
97
135
|
|
98
|
-
#---
|
136
|
+
#---RESOURCE TITLED 3x and 4x
|
137
|
+
| resource LBRACE expression COLON attribute_operations additional_resource_bodies RBRACE {
|
138
|
+
bodies = [Factory.RESOURCE_BODY(val[2], val[4])] + val[5]
|
139
|
+
result = Factory.RESOURCE(val[0], bodies)
|
140
|
+
loc result, val[0], val[6]
|
141
|
+
}
|
142
|
+
|
143
|
+
#---CLASS RESOURCE
|
144
|
+
| CLASS LBRACE resource_bodies endsemi RBRACE {
|
145
|
+
result = Factory.RESOURCE(Factory.fqn(token_text(val[0])), val[2])
|
146
|
+
loc result, val[0], val[4]
|
147
|
+
}
|
148
|
+
|
149
|
+
# --RESOURCE 3X Expression
|
150
|
+
# Handles both 3x overrides and defaults (i.e. single resource_body without title colon)
|
151
|
+
# Slated for possible deprecation since it requires transformation and mix static/evaluation check
|
152
|
+
#
|
153
|
+
| resource LBRACE attribute_operations endcomma RBRACE {
|
154
|
+
result = case Factory.resource_shape(val[0])
|
155
|
+
when :resource, :class
|
156
|
+
# This catches deprecated syntax.
|
157
|
+
# If the attribute operations does not include +>, then the found expression
|
158
|
+
# is actually a LEFT followed by LITERAL_HASH
|
159
|
+
#
|
160
|
+
unless tmp = transform_resource_wo_title(val[0], val[2])
|
161
|
+
error val[1], "Syntax error resource body without title or hash with +>"
|
162
|
+
end
|
163
|
+
tmp
|
164
|
+
when :defaults
|
165
|
+
Factory.RESOURCE_DEFAULTS(val[0], val[2])
|
166
|
+
when :override
|
167
|
+
# This was only done for override in original - TODO should it be here at all
|
168
|
+
Factory.RESOURCE_OVERRIDE(val[0], val[2])
|
169
|
+
else
|
170
|
+
error val[0], "Expression is not valid as a resource, resource-default, or resource-override"
|
171
|
+
end
|
172
|
+
loc result, val[0], val[4]
|
173
|
+
}
|
174
|
+
|
175
|
+
resource_body
|
176
|
+
: expression COLON attribute_operations endcomma { result = Factory.RESOURCE_BODY(val[0], val[2]) }
|
177
|
+
|
178
|
+
resource_bodies
|
179
|
+
: resource_body =HIGH { result = [val[0]] }
|
180
|
+
| resource_bodies SEMIC resource_body =HIGH { result = val[0].push val[2] }
|
181
|
+
|
182
|
+
# This is a rule for the intermediate state where RACC has seen enough tokens to understand that
|
183
|
+
# what is expressed is a Resource Expression, it now has to get to the finishing line
|
184
|
+
#
|
185
|
+
additional_resource_bodies
|
186
|
+
: endcomma { result = [] }
|
187
|
+
| endcomma SEMIC { result = [] }
|
188
|
+
| endcomma SEMIC resource_bodies endsemi { result = val[2] }
|
189
|
+
|
190
|
+
#-- EXPRESSION
|
99
191
|
#
|
100
|
-
# Produces Model::Expression
|
101
192
|
expression
|
102
|
-
:
|
193
|
+
: primary_expression
|
194
|
+
| call_function_expression
|
103
195
|
| expression LBRACK expressions RBRACK =LBRACK { result = val[0][*val[2]] ; loc result, val[0], val[3] }
|
104
196
|
| expression IN expression { result = val[0].in val[2] ; loc result, val[1] }
|
105
197
|
| expression MATCH expression { result = val[0] =~ val[2] ; loc result, val[1] }
|
@@ -112,6 +204,7 @@ expression
|
|
112
204
|
| expression LSHIFT expression { result = val[0] << val[2] ; loc result, val[1] }
|
113
205
|
| expression RSHIFT expression { result = val[0] >> val[2] ; loc result, val[1] }
|
114
206
|
| MINUS expression =UMINUS { result = val[1].minus() ; loc result, val[0] }
|
207
|
+
| TIMES expression =SPLAT { result = val[1].unfold() ; loc result, val[0] }
|
115
208
|
| expression NOTEQUAL expression { result = val[0].ne val[2] ; loc result, val[1] }
|
116
209
|
| expression ISEQUAL expression { result = val[0] == val[2] ; loc result, val[1] }
|
117
210
|
| expression GREATERTHAN expression { result = val[0] > val[2] ; loc result, val[1] }
|
@@ -121,28 +214,22 @@ expression
|
|
121
214
|
| NOT expression { result = val[1].not ; loc result, val[0] }
|
122
215
|
| expression AND expression { result = val[0].and val[2] ; loc result, val[1] }
|
123
216
|
| expression OR expression { result = val[0].or val[2] ; loc result, val[1] }
|
124
|
-
| expression EQUALS expression { result = val[0].set(val[2]) ; loc result, val[1] }
|
125
|
-
| expression APPENDS expression { result = val[0].plus_set(val[2]) ; loc result, val[1] }
|
126
|
-
| expression DELETES expression { result = val[0].minus_set(val[2]); loc result, val[1] }
|
127
217
|
| expression QMARK selector_entries { result = val[0].select(*val[2]) ; loc result, val[0] }
|
128
|
-
| LPAREN
|
218
|
+
| LPAREN assignment RPAREN { result = val[1].paren() ; loc result, val[0] }
|
219
|
+
|
129
220
|
|
130
221
|
#---EXPRESSIONS
|
131
|
-
# (e.
|
222
|
+
# (i.e. "argument list")
|
132
223
|
#
|
133
224
|
# This expression list can not contain function calls without parentheses around arguments
|
134
225
|
# Produces Array<Model::Expression>
|
226
|
+
#
|
135
227
|
expressions
|
136
228
|
: expression { result = [val[0]] }
|
137
229
|
| expressions COMMA expression { result = val[0].push(val[2]) }
|
138
230
|
|
139
|
-
# These go through a chain of left recursion, ending with primary_expression
|
140
|
-
higher_precedence
|
141
|
-
: call_function_expression
|
142
|
-
|
143
231
|
primary_expression
|
144
|
-
:
|
145
|
-
| variable
|
232
|
+
: variable
|
146
233
|
| call_method_with_lambda_expression
|
147
234
|
| collection_expression
|
148
235
|
| case_expression
|
@@ -152,61 +239,54 @@ primary_expression
|
|
152
239
|
| hostclass_expression
|
153
240
|
| node_definition_expression
|
154
241
|
| epp_render_expression
|
155
|
-
|
|
156
|
-
|
157
|
-
# Allways have the same value
|
158
|
-
literal_expression
|
159
|
-
: array
|
160
|
-
| boolean
|
161
|
-
| default
|
242
|
+
| reserved_word
|
243
|
+
| array
|
162
244
|
| hash
|
163
245
|
| regex
|
164
|
-
|
|
165
|
-
| number
|
246
|
+
| quotedtext
|
166
247
|
| type
|
167
|
-
|
|
248
|
+
| NUMBER { result = Factory.NUMBER(val[0][:value]) ; loc result, val[0] }
|
249
|
+
| BOOLEAN { result = Factory.literal(val[0][:value]) ; loc result, val[0] }
|
250
|
+
| DEFAULT { result = Factory.literal(:default) ; loc result, val[0] }
|
251
|
+
| UNDEF { result = Factory.literal(:undef) ; loc result, val[0] }
|
252
|
+
| NAME { result = Factory.QNAME_OR_NUMBER(val[0][:value]) ; loc result, val[0] }
|
168
253
|
|
169
|
-
text_or_name
|
170
|
-
: name { result = val[0] }
|
171
|
-
| quotedtext { result = val[0] }
|
172
254
|
|
173
255
|
#---CALL FUNCTION
|
174
256
|
#
|
175
257
|
# Produces Model::CallNamedFunction
|
176
258
|
|
177
259
|
call_function_expression
|
178
|
-
:
|
260
|
+
: expression LPAREN assignments endcomma RPAREN {
|
179
261
|
result = Factory.CALL_NAMED(val[0], true, val[2])
|
180
262
|
loc result, val[0], val[4]
|
181
263
|
}
|
182
|
-
|
|
264
|
+
| expression LPAREN RPAREN {
|
183
265
|
result = Factory.CALL_NAMED(val[0], true, [])
|
184
266
|
loc result, val[0], val[2]
|
185
267
|
}
|
186
|
-
|
|
268
|
+
| expression LPAREN assignments endcomma RPAREN lambda {
|
187
269
|
result = Factory.CALL_NAMED(val[0], true, val[2])
|
188
270
|
loc result, val[0], val[4]
|
189
271
|
result.lambda = val[5]
|
190
272
|
}
|
191
|
-
|
|
273
|
+
| expression LPAREN RPAREN lambda {
|
192
274
|
result = Factory.CALL_NAMED(val[0], true, [])
|
193
275
|
loc result, val[0], val[2]
|
194
276
|
result.lambda = val[3]
|
195
277
|
}
|
196
|
-
| primary_expression = LOW { result = val[0] }
|
197
278
|
|
198
279
|
#---CALL METHOD
|
199
280
|
#
|
200
281
|
call_method_with_lambda_expression
|
201
282
|
: call_method_expression =LOW { result = val[0] }
|
202
|
-
| call_method_expression lambda
|
283
|
+
| call_method_expression lambda { result = val[0]; val[0].lambda = val[1] }
|
203
284
|
|
204
285
|
call_method_expression
|
205
|
-
: named_access LPAREN
|
286
|
+
: named_access LPAREN assignments RPAREN { result = Factory.CALL_METHOD(val[0], val[2]); loc result, val[1], val[3] }
|
206
287
|
| named_access LPAREN RPAREN { result = Factory.CALL_METHOD(val[0], []); loc result, val[1], val[3] }
|
207
288
|
| named_access =LOW { result = Factory.CALL_METHOD(val[0], []); loc result, val[0] }
|
208
289
|
|
209
|
-
# TODO: It may be of value to access named elements of types too
|
210
290
|
named_access
|
211
291
|
: expression DOT NAME {
|
212
292
|
result = val[0].dot(Factory.fqn(val[2][:value]))
|
@@ -215,31 +295,25 @@ call_method_with_lambda_expression
|
|
215
295
|
|
216
296
|
#---LAMBDA
|
217
297
|
#
|
218
|
-
# This is a temporary switch while experimenting with concrete syntax
|
219
|
-
# One should be picked for inclusion in puppet.
|
220
|
-
|
221
|
-
# Lambda with parameters to the left of the body
|
222
298
|
lambda
|
223
299
|
: lambda_parameter_list lambda_rest {
|
224
|
-
result = Factory.LAMBDA(val[0], val[1])
|
225
|
-
|
300
|
+
result = Factory.LAMBDA(val[0][:value], val[1][:value])
|
301
|
+
loc result, val[0][:start], val[1][:end]
|
226
302
|
}
|
227
303
|
|
228
304
|
lambda_rest
|
229
|
-
: LBRACE statements RBRACE
|
230
|
-
| LBRACE RBRACE
|
305
|
+
: LBRACE statements RBRACE { result = {:end => val[2], :value =>val[1] } }
|
306
|
+
| LBRACE RBRACE { result = {:end => val[1], :value => nil } }
|
307
|
+
|
231
308
|
|
232
|
-
# Produces Array<Model::Parameter>
|
233
309
|
lambda_parameter_list
|
234
|
-
: PIPE PIPE { result = [] }
|
235
|
-
| PIPE parameters endcomma PIPE { result = val[1] }
|
310
|
+
: PIPE PIPE { result = {:start => val[0], :value => [] } }
|
311
|
+
| PIPE parameters endcomma PIPE { result = {:start => val[0], :value => val[1] } }
|
236
312
|
|
237
313
|
#---CONDITIONALS
|
238
|
-
#
|
239
314
|
|
240
315
|
#--IF
|
241
316
|
#
|
242
|
-
# Produces Model::IfExpression
|
243
317
|
if_expression
|
244
318
|
: IF if_part {
|
245
319
|
result = val[1]
|
@@ -274,8 +348,6 @@ if_expression
|
|
274
348
|
|
275
349
|
#--UNLESS
|
276
350
|
#
|
277
|
-
# Changed from Puppet 3x where there is no else part on unless
|
278
|
-
#
|
279
351
|
unless_expression
|
280
352
|
: UNLESS expression LBRACE statements RBRACE unless_else {
|
281
353
|
result = Factory.UNLESS(val[1], Factory.block_or_expression(*val[3]), val[5])
|
@@ -301,7 +373,6 @@ unless_expression
|
|
301
373
|
|
302
374
|
#--- CASE EXPRESSION
|
303
375
|
#
|
304
|
-
# Produces Model::CaseExpression
|
305
376
|
case_expression
|
306
377
|
: CASE expression LBRACE case_options RBRACE {
|
307
378
|
result = Factory.CASE(val[1], *val[3])
|
@@ -311,20 +382,17 @@ case_expression
|
|
311
382
|
# Produces Array<Model::CaseOption>
|
312
383
|
case_options
|
313
384
|
: case_option { result = [val[0]] }
|
314
|
-
| case_options case_option
|
385
|
+
| case_options case_option { result = val[0].push val[1] }
|
315
386
|
|
316
387
|
# Produced Model::CaseOption (aka When)
|
317
388
|
case_option
|
318
|
-
: expressions
|
319
|
-
result = Factory.WHEN(val[0], val[3])
|
320
|
-
loc result, val[1], val[4]
|
321
|
-
}
|
322
|
-
| expressions case_colon LBRACE RBRACE = LOW {
|
323
|
-
result = Factory.WHEN(val[0], nil)
|
324
|
-
loc result, val[1], val[3]
|
389
|
+
: expressions COLON LBRACE options_statements RBRACE {
|
390
|
+
result = Factory.WHEN(val[0], val[3]); loc result, val[1], val[4]
|
325
391
|
}
|
326
392
|
|
327
|
-
|
393
|
+
options_statements
|
394
|
+
: nil
|
395
|
+
| statements
|
328
396
|
|
329
397
|
# This special construct is required or racc will produce the wrong result when the selector entry
|
330
398
|
# LHS is generalized to any expression (LBRACE looks like a hash). Thus it is not possible to write
|
@@ -348,108 +416,11 @@ case_expression
|
|
348
416
|
selector_entry
|
349
417
|
: expression FARROW expression { result = Factory.MAP(val[0], val[2]) ; loc result, val[1] }
|
350
418
|
|
351
|
-
#---RESOURCE
|
352
|
-
#
|
353
|
-
# Produces [Model::ResourceExpression, Model::ResourceDefaultsExpression]
|
354
|
-
|
355
|
-
# The resource expression parses a generalized syntax and then selects the correct
|
356
|
-
# resulting model based on the combinatoin of the LHS and what follows.
|
357
|
-
# It also handled exported and virtual resources, and the class case
|
358
|
-
#
|
359
|
-
resource_expression
|
360
|
-
: expression =LOW {
|
361
|
-
result = val[0]
|
362
|
-
}
|
363
|
-
| at expression LBRACE resourceinstances endsemi RBRACE {
|
364
|
-
result = case Factory.resource_shape(val[1])
|
365
|
-
when :resource, :class
|
366
|
-
tmp = Factory.RESOURCE(Factory.fqn(token_text(val[1])), val[3])
|
367
|
-
tmp.form = val[0]
|
368
|
-
tmp
|
369
|
-
when :defaults
|
370
|
-
error val[1], "A resource default can not be virtual or exported"
|
371
|
-
when :override
|
372
|
-
error val[1], "A resource override can not be virtual or exported"
|
373
|
-
else
|
374
|
-
error val[1], "Expression is not valid as a resource, resource-default, or resource-override"
|
375
|
-
end
|
376
|
-
loc result, val[1], val[4]
|
377
|
-
}
|
378
|
-
| at expression LBRACE attribute_operations endcomma RBRACE {
|
379
|
-
result = case Factory.resource_shape(val[1])
|
380
|
-
when :resource, :class, :defaults, :override
|
381
|
-
error val[1], "Defaults are not virtualizable"
|
382
|
-
else
|
383
|
-
error val[1], "Expression is not valid as a resource, resource-default, or resource-override"
|
384
|
-
end
|
385
|
-
}
|
386
|
-
| expression LBRACE resourceinstances endsemi RBRACE {
|
387
|
-
result = case Factory.resource_shape(val[0])
|
388
|
-
when :resource, :class
|
389
|
-
Factory.RESOURCE(Factory.fqn(token_text(val[0])), val[2])
|
390
|
-
when :defaults
|
391
|
-
error val[1], "A resource default can not specify a resource name"
|
392
|
-
when :override
|
393
|
-
error val[1], "A resource override does not allow override of name of resource"
|
394
|
-
else
|
395
|
-
error val[1], "Expression is not valid as a resource, resource-default, or resource-override"
|
396
|
-
end
|
397
|
-
loc result, val[0], val[4]
|
398
|
-
}
|
399
|
-
| expression LBRACE attribute_operations endcomma RBRACE {
|
400
|
-
result = case Factory.resource_shape(val[0])
|
401
|
-
when :resource, :class
|
402
|
-
# This catches deprecated syntax.
|
403
|
-
# If the attribute operations does not include +>, then the found expression
|
404
|
-
# is actually a LEFT followed by LITERAL_HASH
|
405
|
-
#
|
406
|
-
unless tmp = transform_resource_wo_title(val[0], val[2])
|
407
|
-
error val[1], "Syntax error resource body without title or hash with +>"
|
408
|
-
end
|
409
|
-
tmp
|
410
|
-
when :defaults
|
411
|
-
Factory.RESOURCE_DEFAULTS(val[0], val[2])
|
412
|
-
when :override
|
413
|
-
# This was only done for override in original - TODO shuld it be here at all
|
414
|
-
Factory.RESOURCE_OVERRIDE(val[0], val[2])
|
415
|
-
else
|
416
|
-
error val[0], "Expression is not valid as a resource, resource-default, or resource-override"
|
417
|
-
end
|
418
|
-
loc result, val[0], val[4]
|
419
|
-
}
|
420
|
-
| at CLASS LBRACE resourceinstances endsemi RBRACE {
|
421
|
-
result = Factory.RESOURCE(Factory.fqn(token_text(val[1])), val[3])
|
422
|
-
result.form = val[0]
|
423
|
-
loc result, val[1], val[5]
|
424
|
-
}
|
425
|
-
| CLASS LBRACE resourceinstances endsemi RBRACE {
|
426
|
-
result = Factory.RESOURCE(Factory.fqn(token_text(val[0])), val[2])
|
427
|
-
loc result, val[0], val[4]
|
428
|
-
}
|
429
|
-
|
430
|
-
resourceinst
|
431
|
-
: expression title_colon attribute_operations endcomma { result = Factory.RESOURCE_BODY(val[0], val[2]) }
|
432
|
-
|
433
|
-
title_colon : COLON =TITLE_COLON { result = val[0] }
|
434
|
-
|
435
|
-
resourceinstances
|
436
|
-
: resourceinst { result = [val[0]] }
|
437
|
-
| resourceinstances SEMIC resourceinst { result = val[0].push val[2] }
|
438
|
-
|
439
|
-
# Produces Symbol corresponding to resource form
|
440
|
-
#
|
441
|
-
at
|
442
|
-
: AT { result = :virtual }
|
443
|
-
| AT AT { result = :exported }
|
444
|
-
| ATAT { result = :exported }
|
445
|
-
|
446
419
|
#---COLLECTION
|
447
420
|
#
|
448
421
|
# A Collection is a predicate applied to a set of objects with an implied context (used variables are
|
449
422
|
# attributes of the object.
|
450
|
-
# i.e. this is equivalent
|
451
|
-
#
|
452
|
-
# Produces Model::CollectExpression
|
423
|
+
# i.e. this is equivalent to source.select(QUERY).apply(ATTRIBUTE_OPERATIONS)
|
453
424
|
#
|
454
425
|
collection_expression
|
455
426
|
: expression collect_query LBRACE attribute_operations endcomma RBRACE {
|
@@ -469,11 +440,7 @@ collection_expression
|
|
469
440
|
: nil
|
470
441
|
| expression
|
471
442
|
|
472
|
-
#---ATTRIBUTE OPERATIONS
|
473
|
-
#
|
474
|
-
# (Not an expression)
|
475
|
-
#
|
476
|
-
# Produces Array<Model::AttributeOperation>
|
443
|
+
#---ATTRIBUTE OPERATIONS (Not an expression)
|
477
444
|
#
|
478
445
|
attribute_operations
|
479
446
|
: { result = [] }
|
@@ -486,7 +453,7 @@ attribute_operations
|
|
486
453
|
attribute_name
|
487
454
|
: NAME
|
488
455
|
| keyword
|
489
|
-
| BOOLEAN
|
456
|
+
# | BOOLEAN
|
490
457
|
|
491
458
|
# In this version, illegal combinations are validated instead of producing syntax errors
|
492
459
|
# (Can give nicer error message "+> is not applicable to...")
|
@@ -501,6 +468,9 @@ attribute_operations
|
|
501
468
|
result = Factory.ATTRIBUTE_OP(val[0][:value], :'+>', val[2])
|
502
469
|
loc result, val[0], val[2]
|
503
470
|
}
|
471
|
+
| TIMES FARROW expression {
|
472
|
+
result = Factory.ATTRIBUTES_OP(val[2]) ; loc result, val[0], val[2]
|
473
|
+
}
|
504
474
|
|
505
475
|
#---DEFINE
|
506
476
|
#
|
@@ -557,13 +527,13 @@ hostclass_expression
|
|
557
527
|
# Produces Model::NodeDefinition
|
558
528
|
#
|
559
529
|
node_definition_expression
|
560
|
-
: NODE hostnames nodeparent LBRACE statements RBRACE {
|
561
|
-
result = add_definition(Factory.NODE(val[1], val[
|
562
|
-
loc result, val[0], val[
|
530
|
+
: NODE hostnames endcomma nodeparent LBRACE statements RBRACE {
|
531
|
+
result = add_definition(Factory.NODE(val[1], val[3], val[5]))
|
532
|
+
loc result, val[0], val[6]
|
563
533
|
}
|
564
|
-
| NODE hostnames nodeparent LBRACE RBRACE {
|
565
|
-
result = add_definition(Factory.NODE(val[1], val[
|
566
|
-
loc result, val[0], val[
|
534
|
+
| NODE hostnames endcomma nodeparent LBRACE RBRACE {
|
535
|
+
result = add_definition(Factory.NODE(val[1], val[3], nil))
|
536
|
+
loc result, val[0], val[5]
|
567
537
|
}
|
568
538
|
|
569
539
|
# Hostnames is not a list of names, it is a list of name matchers (including a Regexp).
|
@@ -578,14 +548,18 @@ node_definition_expression
|
|
578
548
|
# Produces a LiteralExpression (string, :default, or regexp)
|
579
549
|
# String with interpolation is validated for better error message
|
580
550
|
hostname
|
581
|
-
: dotted_name
|
582
|
-
| quotedtext
|
551
|
+
: dotted_name
|
552
|
+
| quotedtext
|
583
553
|
| DEFAULT { result = Factory.literal(:default); loc result, val[0] }
|
584
554
|
| regex
|
585
555
|
|
586
556
|
dotted_name
|
587
|
-
:
|
588
|
-
| dotted_name DOT
|
557
|
+
: name_or_number { result = Factory.literal(val[0][:value]); loc result, val[0] }
|
558
|
+
| dotted_name DOT name_or_number { result = Factory.concat(val[0], '.', val[2][:value]); loc result, val[0], val[2] }
|
559
|
+
|
560
|
+
name_or_number
|
561
|
+
: NAME
|
562
|
+
| NUMBER
|
589
563
|
|
590
564
|
# Produces Expression, since hostname is an Expression
|
591
565
|
nodeparent
|
@@ -594,8 +568,7 @@ node_definition_expression
|
|
594
568
|
|
595
569
|
#---FUNCTION DEFINITION
|
596
570
|
#
|
597
|
-
function_definition
|
598
|
-
: FUNCTION { result = Factory.QNAME(val[0][:value]) ; loc result, val[0] }
|
571
|
+
#function_definition
|
599
572
|
# For now the function word will just be reserved, in the future it will
|
600
573
|
# produce a function definition
|
601
574
|
# FUNCTION classname parameter_list LBRACE opt_statements RBRACE {
|
@@ -607,7 +580,7 @@ function_definition
|
|
607
580
|
# Produces String
|
608
581
|
# TODO: The error that "class" is not a valid classname is bad - classname rule is also used for other things
|
609
582
|
classname
|
610
|
-
: NAME
|
583
|
+
: NAME
|
611
584
|
| CLASS { error val[0], "'class' is not a valid classname" }
|
612
585
|
|
613
586
|
# Produces Array<Model::Parameter>
|
@@ -623,32 +596,48 @@ parameters
|
|
623
596
|
|
624
597
|
# Produces Model::Parameter
|
625
598
|
parameter
|
599
|
+
: untyped_parameter
|
600
|
+
| typed_parameter
|
601
|
+
|
602
|
+
untyped_parameter
|
603
|
+
: regular_parameter
|
604
|
+
| splat_parameter
|
605
|
+
|
606
|
+
regular_parameter
|
626
607
|
: VARIABLE EQUALS expression { result = Factory.PARAM(val[0][:value], val[2]) ; loc result, val[0] }
|
627
608
|
| VARIABLE { result = Factory.PARAM(val[0][:value]); loc result, val[0] }
|
628
609
|
|
629
|
-
|
630
|
-
|
610
|
+
splat_parameter
|
611
|
+
: TIMES regular_parameter { result = val[1]; val[1].captures_rest() }
|
631
612
|
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
613
|
+
typed_parameter
|
614
|
+
: parameter_type untyped_parameter { val[1].type_expr(val[0]) ; result = val[1] }
|
615
|
+
|
616
|
+
parameter_type
|
617
|
+
: type { result = val[0] }
|
618
|
+
| type LBRACK expressions RBRACK { result = val[0][*val[2]] ; loc result, val[0], val[3] }
|
636
619
|
|
637
620
|
#--VARIABLE
|
638
621
|
#
|
639
622
|
variable
|
640
623
|
: VARIABLE { result = Factory.fqn(val[0][:value]).var ; loc result, val[0] }
|
641
624
|
|
625
|
+
#---RESERVED WORDS
|
626
|
+
#
|
627
|
+
reserved_word
|
628
|
+
: FUNCTION { result = Factory.RESERVED(val[0][:value]) ; loc result, val[0] }
|
629
|
+
| PRIVATE { result = Factory.RESERVED(val[0][:value]) ; loc result, val[0] }
|
630
|
+
| TYPE { result = Factory.RESERVED(val[0][:value]) ; loc result, val[0] }
|
631
|
+
| ATTR { result = Factory.RESERVED(val[0][:value]) ; loc result, val[0] }
|
632
|
+
|
642
633
|
#---LITERALS (dynamic and static)
|
643
634
|
#
|
644
635
|
|
645
636
|
array
|
646
|
-
:
|
647
|
-
|
|
648
|
-
| LBRACK
|
649
|
-
|
|
650
|
-
| LISTSTART expressions COMMA RBRACK { result = Factory.LIST(val[1]); loc result, val[0], val[3] }
|
651
|
-
| LISTSTART RBRACK { result = Factory.literal([]) ; loc result, val[0] }
|
637
|
+
: LISTSTART assignments endcomma RBRACK { result = Factory.LIST(val[1]); loc result, val[0], val[3] }
|
638
|
+
| LISTSTART RBRACK { result = Factory.literal([]) ; loc result, val[0] }
|
639
|
+
| LBRACK assignments endcomma RBRACK { result = Factory.LIST(val[1]); loc result, val[0], val[3] }
|
640
|
+
| LBRACK RBRACK { result = Factory.literal([]) ; loc result, val[0] }
|
652
641
|
|
653
642
|
hash
|
654
643
|
: LBRACE hashpairs RBRACE { result = Factory.HASH(val[1]); loc result, val[0], val[2] }
|
@@ -660,7 +649,7 @@ hash
|
|
660
649
|
| hashpairs COMMA hashpair { result = val[0].push val[2] }
|
661
650
|
|
662
651
|
hashpair
|
663
|
-
:
|
652
|
+
: assignment FARROW assignment { result = Factory.KEY_ENTRY(val[0], val[2]); loc result, val[1] }
|
664
653
|
|
665
654
|
quotedtext
|
666
655
|
: string
|
@@ -676,7 +665,7 @@ dqpre : DQPRE { result = Factory.literal(val[0][:valu
|
|
676
665
|
dqpost : DQPOST { result = Factory.literal(val[0][:value]); loc result, val[0] }
|
677
666
|
dqmid : DQMID { result = Factory.literal(val[0][:value]); loc result, val[0] }
|
678
667
|
dqrval : text_expression dqtail { result = [val[0]] + val[1] }
|
679
|
-
text_expression :
|
668
|
+
text_expression : assignment { result = Factory.TEXT(val[0]) }
|
680
669
|
|
681
670
|
dqtail
|
682
671
|
: dqpost { result = [val[0]] }
|
@@ -690,7 +679,11 @@ sublocated_text
|
|
690
679
|
| SUBLOCATE dq_string { result = Factory.SUBLOCATE(val[0], val[1]); loc result, val[0] }
|
691
680
|
|
692
681
|
epp_expression
|
693
|
-
: EPP_START epp_parameters_list
|
682
|
+
: EPP_START epp_parameters_list optional_statements { result = Factory.EPP(val[1], val[2]); loc result, val[0] }
|
683
|
+
|
684
|
+
optional_statements
|
685
|
+
:
|
686
|
+
| statements
|
694
687
|
|
695
688
|
epp_parameters_list
|
696
689
|
: =LOW{ result = nil }
|
@@ -706,16 +699,7 @@ epp_end
|
|
706
699
|
: EPP_END
|
707
700
|
| EPP_END_TRIM
|
708
701
|
|
709
|
-
number : NUMBER { result = Factory.NUMBER(val[0][:value]) ; loc result, val[0] }
|
710
|
-
name : NAME { result = Factory.QNAME_OR_NUMBER(val[0][:value]) ; loc result, val[0] }
|
711
702
|
type : CLASSREF { result = Factory.QREF(val[0][:value]) ; loc result, val[0] }
|
712
|
-
undef : UNDEF { result = Factory.literal(:undef); loc result, val[0] }
|
713
|
-
default : DEFAULT { result = Factory.literal(:default); loc result, val[0] }
|
714
|
-
|
715
|
-
# Assumes lexer produces a Boolean value for booleans, or this will go wrong and produce a literal string
|
716
|
-
# with the text 'true'.
|
717
|
-
#TODO: could be changed to a specific boolean literal factory method to prevent this possible glitch.
|
718
|
-
boolean : BOOLEAN { result = Factory.literal(val[0][:value]) ; loc result, val[0] }
|
719
703
|
|
720
704
|
regex
|
721
705
|
: REGEX { result = Factory.literal(val[0][:value]); loc result, val[0] }
|
@@ -745,6 +729,10 @@ keyword
|
|
745
729
|
| OR
|
746
730
|
| UNDEF
|
747
731
|
| UNLESS
|
732
|
+
| TYPE
|
733
|
+
| ATTR
|
734
|
+
| FUNCTION
|
735
|
+
| PRIVATE
|
748
736
|
|
749
737
|
nil
|
750
738
|
: { result = nil}
|