puppet 3.4.3 → 3.5.0.rc1
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.
- data/CONTRIBUTING.md +6 -6
- data/Gemfile +22 -16
- data/LICENSE +1 -1
- data/README.md +33 -11
- data/Rakefile +1 -1
- data/conf/auth.conf +4 -0
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/control +6 -6
- data/ext/ips/transforms +1 -1
- data/ext/nagios/naggen +1 -1
- data/ext/project_data.yaml +21 -1
- data/ext/puppet-test +3 -3
- data/ext/redhat/puppet.spec.erb +28 -2
- data/ext/suse/puppet.spec +1 -1
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/service/daemon.rb +99 -20
- data/lib/hiera_puppet.rb +2 -2
- data/lib/puppet.rb +68 -5
- data/lib/puppet/agent.rb +5 -1
- data/lib/puppet/application.rb +20 -11
- data/lib/puppet/application/agent.rb +1 -1
- data/lib/puppet/application/apply.rb +61 -41
- data/lib/puppet/application/cert.rb +3 -3
- data/lib/puppet/application/device.rb +7 -8
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +3 -3
- data/lib/puppet/application/kick.rb +2 -2
- data/lib/puppet/application/master.rb +1 -1
- data/lib/puppet/application/queue.rb +9 -9
- data/lib/puppet/application/resource.rb +2 -2
- data/lib/puppet/bindings.rb +6 -6
- data/lib/puppet/configurer.rb +17 -14
- data/lib/puppet/configurer/fact_handler.rb +1 -1
- data/lib/puppet/confine/any.rb +26 -0
- data/lib/puppet/confine/exists.rb +1 -1
- data/lib/puppet/confiner.rb +1 -0
- data/lib/puppet/context.rb +55 -0
- data/lib/puppet/context/trusted_information.rb +56 -0
- data/lib/puppet/defaults.rb +97 -26
- data/lib/puppet/environments.rb +187 -0
- data/lib/puppet/error.rb +2 -1
- data/lib/puppet/external/pson/common.rb +1 -1
- data/lib/puppet/external/pson/pure/generator.rb +1 -1
- data/lib/puppet/external/pson/pure/parser.rb +1 -1
- data/lib/puppet/face/config.rb +73 -15
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/help.rb +2 -1
- data/lib/puppet/face/help/action.erb +1 -0
- data/lib/puppet/face/help/face.erb +1 -0
- data/lib/puppet/face/help/global.erb +1 -0
- data/lib/puppet/face/help/man.erb +9 -8
- data/lib/puppet/face/module/list.rb +13 -7
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/parser.rb +11 -5
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +2 -2
- data/lib/puppet/feature/libuser.rb +1 -1
- data/lib/puppet/feature/msgpack.rb +2 -0
- data/lib/puppet/feature/rails.rb +2 -2
- data/lib/puppet/file_bucket/dipper.rb +9 -9
- data/lib/puppet/file_bucket/file.rb +9 -5
- data/lib/puppet/file_serving/base.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +1 -1
- data/lib/puppet/file_serving/configuration/parser.rb +3 -3
- data/lib/puppet/file_serving/content.rb +2 -2
- data/lib/puppet/file_serving/fileset.rb +4 -4
- data/lib/puppet/file_serving/metadata.rb +69 -15
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_system.rb +361 -1
- data/lib/puppet/file_system/file18.rb +3 -3
- data/lib/puppet/file_system/file19.rb +3 -3
- data/lib/puppet/file_system/file19windows.rb +18 -23
- data/lib/puppet/file_system/file_impl.rb +145 -0
- data/lib/puppet/file_system/memory_file.rb +23 -9
- data/lib/puppet/file_system/memory_impl.rb +64 -0
- data/lib/puppet/forge.rb +4 -3
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/graph/relationship_graph.rb +7 -7
- data/lib/puppet/indirector.rb +1 -0
- data/lib/puppet/indirector/catalog/compiler.rb +3 -30
- data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
- data/lib/puppet/indirector/catalog/static_compiler.rb +3 -7
- data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/face.rb +3 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +25 -15
- data/lib/puppet/indirector/file_metadata/file.rb +1 -1
- data/lib/puppet/indirector/file_server.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +4 -4
- data/lib/puppet/indirector/key/file.rb +8 -5
- data/lib/puppet/indirector/ldap.rb +1 -1
- data/lib/puppet/indirector/memory.rb +4 -0
- data/lib/puppet/indirector/msgpack.rb +82 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +3 -3
- data/lib/puppet/indirector/node/msgpack.rb +7 -0
- data/lib/puppet/indirector/node/yaml.rb +15 -0
- data/lib/puppet/indirector/queue.rb +3 -2
- data/lib/puppet/indirector/report/msgpack.rb +11 -0
- data/lib/puppet/indirector/request.rb +17 -20
- data/lib/puppet/indirector/resource/rest.rb +1 -1
- data/lib/puppet/indirector/resource_type/parser.rb +3 -13
- data/lib/puppet/indirector/rest.rb +6 -7
- data/lib/puppet/indirector/ssl_file.rb +7 -7
- data/lib/puppet/indirector/yaml.rb +9 -13
- data/lib/puppet/metatype/manager.rb +12 -7
- data/lib/puppet/module.rb +14 -9
- data/lib/puppet/module_tool.rb +21 -26
- data/lib/puppet/module_tool/applications/application.rb +1 -1
- data/lib/puppet/module_tool/applications/generator.rb +2 -1
- data/lib/puppet/module_tool/applications/installer.rb +9 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +10 -7
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +11 -8
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/contents_description.rb +2 -0
- data/lib/puppet/module_tool/dependency.rb +4 -5
- data/lib/puppet/module_tool/errors.rb +2 -0
- data/lib/puppet/module_tool/install_directory.rb +3 -0
- data/lib/puppet/module_tool/metadata.rb +3 -5
- data/lib/puppet/module_tool/modulefile.rb +3 -0
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -1
- data/lib/puppet/module_tool/skeleton.rb +3 -0
- data/lib/puppet/module_tool/tar.rb +3 -0
- data/lib/puppet/network/auth_config_parser.rb +1 -1
- data/lib/puppet/network/authconfig.rb +5 -2
- data/lib/puppet/network/authentication.rb +7 -2
- data/lib/puppet/network/authorization.rb +2 -2
- data/lib/puppet/network/format_support.rb +4 -0
- data/lib/puppet/network/formats.rb +9 -14
- data/lib/puppet/network/http.rb +11 -0
- data/lib/puppet/network/http/api.rb +0 -2
- data/lib/puppet/network/http/api/v1.rb +146 -11
- data/lib/puppet/network/http/api/v2.rb +32 -0
- data/lib/puppet/network/http/api/v2/authorization.rb +13 -0
- data/lib/puppet/network/http/api/v2/environments.rb +21 -0
- data/lib/puppet/network/http/connection.rb +94 -37
- data/lib/puppet/network/http/error.rb +69 -0
- data/lib/puppet/network/http/handler.rb +28 -196
- data/lib/puppet/network/http/issues.rb +9 -0
- data/lib/puppet/network/http/memory_response.rb +13 -0
- data/lib/puppet/network/http/rack/rest.rb +10 -18
- data/lib/puppet/network/http/request.rb +56 -0
- data/lib/puppet/network/http/response.rb +11 -0
- data/lib/puppet/network/http/route.rb +91 -0
- data/lib/puppet/network/http/webrick.rb +1 -1
- data/lib/puppet/network/http/webrick/rest.rb +7 -12
- data/lib/puppet/network/http_pool.rb +3 -3
- data/lib/puppet/network/rights.rb +4 -4
- data/lib/puppet/node.rb +23 -14
- data/lib/puppet/node/environment.rb +149 -125
- data/lib/puppet/node/facts.rb +6 -5
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/block_expression.rb +1 -6
- data/lib/puppet/parser/ast/collexpr.rb +54 -2
- data/lib/puppet/parser/ast/lambda.rb +9 -0
- data/lib/puppet/parser/ast/leaf.rb +15 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +168 -0
- data/lib/puppet/parser/code_merger.rb +13 -0
- data/lib/puppet/parser/collector.rb +1 -1
- data/lib/puppet/parser/compiler.rb +28 -30
- data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
- data/lib/puppet/parser/e_parser_adapter.rb +0 -1
- data/lib/puppet/parser/files.rb +12 -7
- data/lib/puppet/parser/functions.rb +36 -29
- data/lib/puppet/parser/functions/collect.rb +1 -1
- data/lib/puppet/parser/functions/defined.rb +40 -16
- data/lib/puppet/parser/functions/each.rb +55 -41
- data/lib/puppet/parser/functions/epp.rb +41 -0
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +68 -16
- data/lib/puppet/parser/functions/generate.rb +1 -1
- data/lib/puppet/parser/functions/include.rb +3 -2
- data/lib/puppet/parser/functions/inline_epp.rb +79 -0
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +127 -27
- data/lib/puppet/parser/functions/map.rb +64 -12
- data/lib/puppet/parser/functions/reduce.rb +40 -16
- data/lib/puppet/parser/functions/select.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +42 -23
- data/lib/puppet/parser/grammar.ra +3 -0
- data/lib/puppet/parser/lexer.rb +10 -9
- data/lib/puppet/parser/parser.rb +15 -12
- data/lib/puppet/parser/parser_factory.rb +26 -1
- data/lib/puppet/parser/parser_support.rb +13 -4
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/scope.rb +246 -97
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +13 -2
- data/lib/puppet/pops.rb +15 -1
- data/lib/puppet/pops/adapters.rb +64 -32
- data/lib/puppet/pops/binder/binder.rb +122 -150
- data/lib/puppet/pops/binder/binder_issues.rb +1 -21
- data/lib/puppet/pops/binder/bindings_checker.rb +0 -20
- data/lib/puppet/pops/binder/bindings_composer.rb +4 -70
- data/lib/puppet/pops/binder/bindings_factory.rb +16 -58
- data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -3
- data/lib/puppet/pops/binder/bindings_loader.rb +13 -4
- data/lib/puppet/pops/binder/bindings_model.rb +17 -31
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +2 -20
- data/lib/puppet/pops/binder/config/binder_config.rb +8 -40
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +2 -43
- data/lib/puppet/pops/binder/config/issues.rb +1 -21
- data/lib/puppet/pops/binder/injector.rb +86 -7
- data/lib/puppet/pops/binder/injector_entry.rb +6 -2
- data/lib/puppet/pops/binder/key_factory.rb +7 -1
- data/lib/puppet/pops/binder/lookup.rb +191 -0
- data/lib/puppet/pops/binder/producers.rb +5 -5
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +2 -3
- data/lib/puppet/pops/binder/system_bindings.rb +4 -16
- data/lib/puppet/pops/containment.rb +72 -5
- data/lib/puppet/pops/evaluator/access_operator.rb +548 -0
- data/lib/puppet/pops/evaluator/closure.rb +57 -0
- data/lib/puppet/pops/evaluator/compare_operator.rb +168 -0
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +87 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1069 -0
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +156 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +489 -0
- data/lib/puppet/pops/issue_reporter.rb +8 -4
- data/lib/puppet/pops/issues.rb +199 -4
- data/lib/puppet/pops/label_provider.rb +5 -0
- data/lib/puppet/pops/model/ast_transformer.rb +55 -31
- data/lib/puppet/pops/model/ast_tree_dumper.rb +9 -1
- data/lib/puppet/pops/model/factory.rb +265 -111
- data/lib/puppet/pops/model/model.rb +179 -140
- data/lib/puppet/pops/model/model_label_provider.rb +38 -9
- data/lib/puppet/pops/model/model_tree_dumper.rb +38 -13
- data/lib/puppet/pops/parser/code_merger.rb +17 -0
- data/lib/puppet/pops/parser/egrammar.ra +110 -61
- data/lib/puppet/pops/parser/eparser.rb +1415 -1092
- data/lib/puppet/pops/parser/epp_parser.rb +51 -0
- data/lib/puppet/pops/parser/epp_support.rb +247 -0
- data/lib/puppet/pops/parser/evaluating_parser.rb +53 -15
- data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
- data/lib/puppet/pops/parser/interpolation_support.rb +227 -0
- data/lib/puppet/pops/parser/lexer.rb +83 -192
- data/lib/puppet/pops/parser/lexer2.rb +684 -0
- data/lib/puppet/pops/parser/lexer_support.rb +107 -0
- data/lib/puppet/pops/parser/locatable.rb +23 -0
- data/lib/puppet/pops/parser/locator.rb +291 -0
- data/lib/puppet/pops/parser/makefile +1 -8
- data/lib/puppet/pops/parser/parser_support.rb +76 -48
- data/lib/puppet/pops/parser/slurp_support.rb +95 -0
- data/lib/puppet/pops/patterns.rb +13 -4
- data/lib/puppet/pops/types/class_loader.rb +2 -2
- data/lib/puppet/pops/types/enumeration.rb +34 -0
- data/lib/puppet/pops/types/type_calculator.rb +983 -58
- data/lib/puppet/pops/types/type_factory.rb +203 -15
- data/lib/puppet/pops/types/type_parser.rb +355 -12
- data/lib/puppet/pops/types/types.rb +314 -24
- data/lib/puppet/pops/utils.rb +23 -7
- data/lib/puppet/pops/validation.rb +14 -8
- data/lib/puppet/pops/validation/checker3_1.rb +17 -12
- data/lib/puppet/pops/validation/checker4_0.rb +514 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +31 -0
- data/lib/puppet/pops/visitor.rb +146 -4
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider.rb +47 -26
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/augeas/augeas.rb +11 -11
- data/lib/puppet/provider/cron/crontab.rb +10 -1
- data/lib/puppet/provider/exec.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +2 -2
- data/lib/puppet/provider/file/windows.rb +15 -9
- data/lib/puppet/provider/group/aix.rb +2 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +3 -3
- data/lib/puppet/provider/mount.rb +7 -0
- data/lib/puppet/provider/mount/parsed.rb +0 -1
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +1 -1
- data/lib/puppet/provider/package/appdmg.rb +1 -4
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +1 -1
- data/lib/puppet/provider/package/blastwave.rb +1 -1
- data/lib/puppet/provider/package/fink.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +3 -3
- data/lib/puppet/provider/package/openbsd.rb +6 -4
- data/lib/puppet/provider/package/pacman.rb +58 -5
- data/lib/puppet/provider/package/pip.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +25 -10
- data/lib/puppet/provider/package/pkgin.rb +48 -23
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +1 -1
- data/lib/puppet/provider/package/portupgrade.rb +7 -7
- data/lib/puppet/provider/package/rpm.rb +16 -8
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/selboolean/getsetsebool.rb +1 -1
- data/lib/puppet/provider/selmodule/semodule.rb +5 -5
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +3 -3
- data/lib/puppet/provider/service/daemontools.rb +20 -20
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/freebsd.rb +3 -3
- data/lib/puppet/provider/service/gentoo.rb +2 -2
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +4 -4
- data/lib/puppet/provider/service/redhat.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +4 -4
- data/lib/puppet/provider/service/service.rb +3 -4
- data/lib/puppet/provider/service/smf.rb +1 -1
- data/lib/puppet/provider/service/src.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +4 -4
- data/lib/puppet/provider/service/upstart.rb +22 -7
- data/lib/puppet/provider/service/windows.rb +7 -7
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +3 -3
- data/lib/puppet/provider/user/aix.rb +5 -5
- data/lib/puppet/provider/user/directoryservice.rb +8 -5
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -2
- data/lib/puppet/provider/user/useradd.rb +19 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +187 -0
- data/lib/puppet/provider/zone/solaris.rb +4 -4
- data/lib/puppet/rails.rb +16 -11
- data/lib/puppet/rails/benchmark.rb +1 -1
- data/lib/puppet/rails/resource.rb +5 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/report.rb +1 -1
- data/lib/puppet/relationship.rb +10 -5
- data/lib/puppet/reports/http.rb +8 -2
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +4 -4
- data/lib/puppet/resource.rb +37 -44
- data/lib/puppet/resource/catalog.rb +18 -20
- data/lib/puppet/resource/status.rb +7 -6
- data/lib/puppet/resource/type.rb +6 -5
- data/lib/puppet/resource/type_collection.rb +2 -2
- data/lib/puppet/run.rb +9 -8
- data/lib/puppet/settings.rb +395 -244
- data/lib/puppet/settings/base_setting.rb +10 -4
- data/lib/puppet/settings/config_file.rb +81 -44
- data/lib/puppet/settings/directory_setting.rb +1 -2
- data/lib/puppet/settings/file_setting.rb +12 -5
- data/lib/puppet/settings/ini_file.rb +171 -0
- data/lib/puppet/ssl/base.rb +4 -0
- data/lib/puppet/ssl/certificate_authority.rb +16 -11
- data/lib/puppet/ssl/certificate_authority/interface.rb +3 -2
- data/lib/puppet/ssl/certificate_factory.rb +50 -5
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
- data/lib/puppet/ssl/certificate_revocation_list.rb +3 -1
- data/lib/puppet/ssl/host.rb +9 -8
- data/lib/puppet/ssl/inventory.rb +1 -1
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/status.rb +8 -7
- data/lib/puppet/test/test_helper.rb +35 -4
- data/lib/puppet/transaction/event.rb +6 -5
- data/lib/puppet/transaction/report.rb +10 -10
- data/lib/puppet/type.rb +1 -3
- data/lib/puppet/type/augeas.rb +2 -1
- data/lib/puppet/type/cron.rb +41 -11
- data/lib/puppet/type/exec.rb +5 -5
- data/lib/puppet/type/file.rb +42 -4
- data/lib/puppet/type/file/content.rb +5 -6
- data/lib/puppet/type/file/ensure.rb +3 -3
- data/lib/puppet/type/file/source.rb +12 -6
- data/lib/puppet/type/file/target.rb +5 -5
- data/lib/puppet/type/k5login.rb +4 -4
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/package.rb +79 -3
- data/lib/puppet/type/resources.rb +34 -5
- data/lib/puppet/type/selboolean.rb +1 -1
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -1
- data/lib/puppet/type/sshkey.rb +2 -1
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +4 -1
- data/lib/puppet/type/yumrepo.rb +219 -344
- data/lib/puppet/type/zone.rb +15 -5
- data/lib/puppet/util.rb +14 -13
- data/lib/puppet/util/adsi.rb +19 -3
- data/lib/puppet/util/autoload.rb +27 -24
- data/lib/puppet/util/backups.rb +6 -6
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/colors.rb +4 -12
- data/lib/puppet/util/command_line.rb +2 -2
- data/lib/puppet/util/command_line/trollop.rb +3 -3
- data/lib/puppet/util/docs.rb +2 -2
- data/lib/puppet/util/errors.rb +8 -1
- data/lib/puppet/util/execution.rb +12 -5
- data/lib/puppet/util/filetype.rb +5 -5
- data/lib/puppet/util/inifile.rb +19 -4
- data/lib/puppet/util/instrumentation/data.rb +5 -0
- data/lib/puppet/util/instrumentation/indirection_probe.rb +6 -1
- data/lib/puppet/util/instrumentation/listener.rb +6 -1
- data/lib/puppet/util/json_lockfile.rb +4 -1
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/lockfile.rb +10 -6
- data/lib/puppet/util/log.rb +6 -1
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/metric.rb +9 -4
- data/lib/puppet/util/nagios_maker.rb +26 -1
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/network_device/transport/ssh.rb +3 -3
- data/lib/puppet/util/plugins.rb +1 -1
- data/lib/puppet/util/profiler.rb +13 -1
- data/lib/puppet/util/pson.rb +1 -1
- data/lib/puppet/util/queue/stomp.rb +2 -2
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +19 -19
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/retryaction.rb +1 -1
- data/lib/puppet/util/selinux.rb +2 -2
- data/lib/puppet/util/storage.rb +3 -3
- data/lib/puppet/util/symbolic_file_mode.rb +1 -1
- data/lib/puppet/util/tag_set.rb +15 -3
- data/lib/puppet/util/tagging.rb +12 -17
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +1 -1
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +20 -4
- data/lib/puppet/util/windows/registry.rb +2 -2
- data/lib/puppet/vendor/safe_yaml/CHANGES.md +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppetx.rb +1 -21
- data/lib/puppetx/puppet/syntax_checker.rb +1 -1
- data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +9 -11
- data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
- data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
- data/spec/fixtures/{unit/pops/binder/hiera2/yaml_backend/empty/common.yaml → integration/node/environment/sitedir/03_empty.pp} +0 -0
- data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
- data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +3 -12
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/{awesome/lib/puppetx/awesome → awesome2/lib/puppetx/awesome2}/echo_scheme_handler.rb +2 -2
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
- data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +2 -2
- data/spec/fixtures/unit/provider/service/systemd/{list_units → list_units_services} +0 -1
- data/spec/integration/agent/logging_spec.rb +1 -1
- data/spec/integration/application/apply_spec.rb +78 -3
- data/spec/integration/application/doc_spec.rb +3 -2
- data/spec/integration/configurer_spec.rb +5 -3
- data/spec/integration/directory_environments_spec.rb +50 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +4 -5
- data/spec/integration/network/authconfig_spec.rb +4 -4
- data/spec/integration/network/formats_spec.rb +1 -1
- data/spec/integration/node/environment_spec.rb +67 -15
- data/spec/integration/node/facts_spec.rb +1 -1
- data/spec/integration/node_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +100 -60
- data/spec/integration/parser/compiler_spec.rb +102 -13
- data/spec/integration/parser/future_compiler_spec.rb +416 -0
- data/spec/integration/parser/parser_spec.rb +44 -105
- data/spec/integration/parser/scope_spec.rb +614 -528
- data/spec/integration/provider/cron/crontab_spec.rb +21 -0
- data/spec/integration/provider/mount_spec.rb +15 -2
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/resource/type_collection_spec.rb +3 -4
- data/spec/integration/ssl/autosign_spec.rb +1 -1
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/host_spec.rb +1 -1
- data/spec/integration/transaction_spec.rb +13 -13
- data/spec/integration/type/exec_spec.rb +2 -2
- data/spec/integration/type/file_spec.rb +114 -41
- data/spec/integration/type/nagios_spec.rb +80 -0
- data/spec/integration/type/tidy_spec.rb +2 -2
- data/spec/integration/util/execution_spec.rb +17 -0
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/settings_spec.rb +1 -1
- data/spec/integration/util/windows/security_spec.rb +27 -2
- data/spec/lib/matchers/include.rb +27 -0
- data/spec/lib/matchers/include_spec.rb +32 -0
- data/spec/lib/matchers/json.rb +135 -79
- data/spec/lib/matchers/match_tokens2.rb +74 -0
- data/spec/lib/matchers/resource.rb +35 -0
- data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
- data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
- data/spec/lib/puppet/indirector_testing.rb +12 -2
- data/spec/lib/puppet_spec/files.rb +1 -0
- data/spec/lib/puppet_spec/matchers.rb +5 -0
- data/spec/lib/puppet_spec/modules.rb +1 -1
- data/spec/lib/puppet_spec/scope.rb +14 -0
- data/spec/shared_behaviours/file_server_terminus.rb +2 -2
- data/spec/spec_helper.rb +47 -17
- data/spec/unit/agent_spec.rb +8 -1
- data/spec/unit/application/agent_spec.rb +5 -4
- data/spec/unit/application/apply_spec.rb +34 -15
- data/spec/unit/application/device_spec.rb +27 -32
- data/spec/unit/application/doc_spec.rb +4 -4
- data/spec/unit/application/filebucket_spec.rb +1 -1
- data/spec/unit/application/master_spec.rb +2 -2
- data/spec/unit/application_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +5 -16
- data/spec/unit/configurer_spec.rb +2 -2
- data/spec/unit/confine/exists_spec.rb +5 -5
- data/spec/unit/context/trusted_information_spec.rb +124 -0
- data/spec/unit/context_spec.rb +74 -0
- data/spec/unit/environments_spec.rb +126 -0
- data/spec/unit/face/config_spec.rb +31 -16
- data/spec/unit/face/module/build_spec.rb +1 -0
- data/spec/unit/face/module/install_spec.rb +21 -104
- data/spec/unit/face/module/list_spec.rb +52 -36
- data/spec/unit/face/module/uninstall_spec.rb +18 -25
- data/spec/unit/face/parser_spec.rb +39 -23
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/base_spec.rb +9 -13
- data/spec/unit/file_serving/configuration/parser_spec.rb +8 -2
- data/spec/unit/file_serving/configuration_spec.rb +7 -7
- data/spec/unit/file_serving/content_spec.rb +7 -12
- data/spec/unit/file_serving/fileset_spec.rb +49 -53
- data/spec/unit/file_serving/metadata_spec.rb +83 -32
- data/spec/unit/file_serving/mount/file_spec.rb +10 -10
- data/spec/unit/file_system/tempfile_spec.rb +3 -3
- data/spec/unit/file_system_spec.rb +508 -0
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/hiera/scope_spec.rb +6 -2
- data/spec/unit/hiera_puppet_spec.rb +13 -6
- data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +42 -11
- data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
- data/spec/unit/indirector/facts/facter_spec.rb +5 -5
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
- data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
- data/spec/unit/indirector/file_server_spec.rb +4 -4
- data/spec/unit/indirector/json_spec.rb +6 -6
- data/spec/unit/indirector/key/file_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +191 -0
- data/spec/unit/indirector/node/active_record_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +16 -7
- data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
- data/spec/unit/indirector/node/plain_spec.rb +1 -1
- data/spec/unit/indirector/queue_spec.rb +1 -1
- data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
- data/spec/unit/indirector/request_spec.rb +16 -8
- data/spec/unit/indirector/rest_spec.rb +0 -4
- data/spec/unit/indirector/ssl_file_spec.rb +12 -11
- data/spec/unit/indirector/yaml_spec.rb +4 -4
- data/spec/unit/man_spec.rb +32 -0
- data/spec/unit/module_spec.rb +60 -46
- data/spec/unit/module_tool/applications/checksummer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +53 -16
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +26 -25
- data/spec/unit/module_tool/tar_spec.rb +1 -1
- data/spec/unit/module_tool_spec.rb +17 -90
- data/spec/unit/network/authconfig_spec.rb +3 -4
- data/spec/unit/network/authentication_spec.rb +20 -6
- data/spec/unit/network/authorization_spec.rb +11 -1
- data/spec/unit/network/formats_spec.rb +32 -9
- data/spec/unit/network/http/api/v1_spec.rb +365 -62
- data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
- data/spec/unit/network/http/api/v2/environments_spec.rb +42 -0
- data/spec/unit/network/http/api/v2_spec.rb +14 -0
- data/spec/unit/network/http/connection_spec.rb +39 -5
- data/spec/unit/network/http/error_spec.rb +30 -0
- data/spec/unit/network/http/handler_spec.rb +69 -419
- data/spec/unit/network/http/rack/rest_spec.rb +20 -28
- data/spec/unit/network/http/route_spec.rb +75 -0
- data/spec/unit/network/http/webrick/rest_spec.rb +21 -58
- data/spec/unit/network/http_pool_spec.rb +3 -3
- data/spec/unit/network/rights_spec.rb +2 -2
- data/spec/unit/node/environment_spec.rb +108 -89
- data/spec/unit/node/facts_spec.rb +5 -12
- data/spec/unit/node_spec.rb +22 -22
- data/spec/unit/parser/ast/collection_spec.rb +1 -1
- data/spec/unit/parser/ast/leaf_spec.rb +2 -0
- data/spec/unit/parser/ast/resource_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +5 -3
- data/spec/unit/parser/files_spec.rb +40 -50
- data/spec/unit/parser/functions/defined_spec.rb +80 -18
- data/spec/unit/parser/functions/epp_spec.rb +88 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +4 -1
- data/spec/unit/parser/functions/generate_spec.rb +6 -2
- data/spec/unit/parser/functions/hiera_array_spec.rb +5 -2
- data/spec/unit/parser/functions/hiera_hash_spec.rb +4 -1
- data/spec/unit/parser/functions/hiera_include_spec.rb +6 -3
- data/spec/unit/parser/functions/hiera_spec.rb +5 -2
- data/spec/unit/parser/functions/include_spec.rb +0 -1
- data/spec/unit/parser/functions/inline_epp_spec.rb +82 -0
- data/spec/unit/parser/functions/lookup_spec.rb +66 -16
- data/spec/unit/parser/functions_spec.rb +25 -91
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/filter_spec.rb +56 -0
- data/spec/unit/parser/methods/map_spec.rb +94 -5
- data/spec/unit/parser/methods/reduce_spec.rb +10 -0
- data/spec/unit/parser/methods/shared.rb +2 -18
- data/spec/unit/parser/methods/slice_spec.rb +39 -1
- data/spec/unit/parser/parser_spec.rb +14 -10
- data/spec/unit/parser/resource_spec.rb +3 -9
- data/spec/unit/parser/scope_spec.rb +81 -78
- data/spec/unit/parser/type_loader_spec.rb +0 -4
- data/spec/unit/pops/benchmark_spec.rb +142 -0
- data/spec/unit/pops/binder/binder_spec.rb +15 -34
- data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -41
- data/spec/unit/pops/binder/bindings_composer_spec.rb +6 -31
- data/spec/unit/pops/binder/config/binder_config_spec.rb +5 -18
- data/spec/unit/pops/binder/injector_spec.rb +76 -81
- data/spec/unit/pops/evaluator/access_ops_spec.rb +376 -0
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +256 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1045 -0
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
- data/spec/unit/pops/evaluator/variables_spec.rb +194 -0
- data/spec/unit/pops/factory_spec.rb +6 -29
- data/spec/unit/pops/issues_spec.rb +1 -1
- data/spec/unit/pops/model/ast_transformer_spec.rb +6 -9
- data/spec/unit/pops/model/model_spec.rb +2 -2
- data/spec/unit/pops/parser/epp_parser_spec.rb +86 -0
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +4 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +428 -0
- data/spec/unit/pops/parser/lexer_spec.rb +25 -86
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +29 -4
- data/spec/unit/pops/parser/parse_calls_spec.rb +10 -6
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -9
- data/spec/unit/pops/parser/parse_containers_spec.rb +43 -12
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +73 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +14 -0
- data/spec/unit/pops/parser/parser_spec.rb +3 -1
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +4 -4
- data/spec/unit/pops/transformer/transform_calls_spec.rb +41 -6
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +0 -9
- data/spec/unit/pops/transformer/transform_containers_spec.rb +12 -4
- data/spec/unit/pops/types/enumeration_spec.rb +50 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1171 -196
- data/spec/unit/pops/types/type_factory_spec.rb +108 -4
- data/spec/unit/pops/types/type_parser_spec.rb +114 -10
- data/spec/unit/pops/validator/validator_spec.rb +36 -1
- data/spec/unit/provider/augeas/augeas_spec.rb +39 -16
- data/spec/unit/provider/cron/parsed_spec.rb +27 -31
- data/spec/unit/provider/file/posix_spec.rb +2 -2
- data/spec/unit/provider/group/windows_adsi_spec.rb +1 -0
- data/spec/unit/provider/mount_spec.rb +12 -1
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +1 -1
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/gem_spec.rb +12 -0
- data/spec/unit/provider/package/msi_spec.rb +4 -0
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +36 -7
- data/spec/unit/provider/package/pkgin_spec.rb +57 -55
- data/spec/unit/provider/package/rpm_spec.rb +51 -6
- data/spec/unit/provider/service/base_spec.rb +4 -4
- data/spec/unit/provider/service/daemontools_spec.rb +8 -13
- data/spec/unit/provider/service/freebsd_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_spec.rb +24 -24
- data/spec/unit/provider/service/init_spec.rb +15 -15
- data/spec/unit/provider/service/openbsd_spec.rb +16 -16
- data/spec/unit/provider/service/openrc_spec.rb +20 -20
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +5 -8
- data/spec/unit/provider/service/src_spec.rb +4 -4
- data/spec/unit/provider/service/systemd_spec.rb +24 -14
- data/spec/unit/provider/service/upstart_spec.rb +12 -4
- data/spec/unit/provider/service/windows_spec.rb +1 -1
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +21 -23
- data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
- data/spec/unit/provider/user/useradd_spec.rb +43 -15
- data/spec/unit/provider/user/windows_adsi_spec.rb +1 -0
- data/spec/unit/provider/yumrepo/inifile_spec.rb +105 -0
- data/spec/unit/provider/zone/solaris_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +120 -62
- data/spec/unit/rails/host_spec.rb +1 -1
- data/spec/unit/rails/param_value_spec.rb +4 -0
- data/spec/unit/relationship_spec.rb +4 -4
- data/spec/unit/reports/http_spec.rb +14 -3
- data/spec/unit/reports/rrdgraph_spec.rb +0 -1
- data/spec/unit/reports/store_spec.rb +2 -2
- data/spec/unit/resource/catalog_spec.rb +17 -29
- data/spec/unit/resource/status_spec.rb +1 -1
- data/spec/unit/resource/type_collection_spec.rb +28 -47
- data/spec/unit/resource/type_spec.rb +12 -23
- data/spec/unit/resource_spec.rb +54 -93
- data/spec/unit/run_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/config_file_spec.rb +68 -15
- data/spec/unit/settings/file_setting_spec.rb +2 -2
- data/spec/unit/settings/ini_file_spec.rb +184 -0
- data/spec/unit/settings_spec.rb +137 -79
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +3 -1
- data/spec/unit/ssl/certificate_authority_spec.rb +11 -9
- data/spec/unit/ssl/certificate_factory_spec.rb +19 -4
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +1 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +101 -72
- data/spec/unit/ssl/host_spec.rb +8 -20
- data/spec/unit/ssl/inventory_spec.rb +2 -2
- data/spec/unit/ssl/key_spec.rb +4 -4
- data/spec/unit/status_spec.rb +6 -4
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -11
- data/spec/unit/transaction/event_spec.rb +2 -2
- data/spec/unit/transaction/report_spec.rb +24 -15
- data/spec/unit/transaction/resource_harness_spec.rb +1 -1
- data/spec/unit/type/cron_spec.rb +39 -1
- data/spec/unit/type/file/content_spec.rb +4 -5
- data/spec/unit/type/file/ctime_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +5 -4
- data/spec/unit/type/file/mtime_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +30 -7
- data/spec/unit/type/file_spec.rb +8 -8
- data/spec/unit/type/k5login_spec.rb +3 -3
- data/spec/unit/type/nagios_spec.rb +6 -0
- data/spec/unit/type/package/package_settings_spec.rb +135 -0
- data/spec/unit/type/package_spec.rb +13 -1
- data/spec/unit/type/resources_spec.rb +155 -0
- data/spec/unit/type/service_spec.rb +3 -3
- data/spec/unit/type/ssh_authorized_key_spec.rb +96 -93
- data/spec/unit/type/sshkey_spec.rb +39 -30
- data/spec/unit/type/tidy_spec.rb +19 -12
- data/spec/unit/type/user_spec.rb +47 -2
- data/spec/unit/type/whit_spec.rb +2 -2
- data/spec/unit/type/yumrepo_spec.rb +32 -177
- data/spec/unit/type/zone_spec.rb +2 -2
- data/spec/unit/type_spec.rb +11 -0
- data/spec/unit/util/adsi_spec.rb +48 -1
- data/spec/unit/util/autoload_spec.rb +24 -39
- data/spec/unit/util/backups_spec.rb +25 -28
- data/spec/unit/util/checksums_spec.rb +1 -3
- data/spec/unit/util/colors_spec.rb +14 -0
- data/spec/unit/util/docs_spec.rb +9 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/filetype_spec.rb +7 -7
- data/spec/unit/util/instrumentation/data_spec.rb +3 -1
- data/spec/unit/util/instrumentation/indirection_probe_spec.rb +2 -0
- data/spec/unit/util/instrumentation/listener_spec.rb +3 -2
- data/spec/unit/util/json_lockfile_spec.rb +25 -4
- data/spec/unit/util/lockfile_spec.rb +49 -7
- data/spec/unit/util/log/destinations_spec.rb +1 -0
- data/spec/unit/util/log_spec.rb +1 -1
- data/spec/unit/util/metric_spec.rb +1 -1
- data/spec/unit/util/pidlock_spec.rb +6 -6
- data/spec/unit/util/pson_spec.rb +2 -2
- data/spec/unit/util/rdoc/parser_spec.rb +32 -29
- data/spec/unit/util/resource_template_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +5 -5
- data/spec/unit/util/storage_spec.rb +4 -4
- data/spec/unit/util/tag_set_spec.rb +1 -1
- data/spec/unit/util/watcher_spec.rb +1 -4
- data/spec/unit/util/yaml_spec.rb +2 -2
- data/spec/unit/util_spec.rb +7 -7
- data/tasks/benchmark.rake +0 -1
- data/tasks/parallel.rake +408 -0
- data/tasks/yard.rake +59 -0
- metadata +2889 -2782
- checksums.yaml +0 -7
- data/README_DEVELOPER.md +0 -809
- data/lib/puppet/file_system/file.rb +0 -271
- data/lib/puppet/network/http/rack/httphandler.rb +0 -13
- data/lib/puppet/pops/binder/hiera2.rb +0 -10
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +0 -148
- data/lib/puppet/pops/binder/hiera2/config.rb +0 -69
- data/lib/puppet/pops/binder/hiera2/config_checker.rb +0 -68
- data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +0 -36
- data/lib/puppet/pops/binder/hiera2/issues.rb +0 -67
- data/lib/puppet/pops/binder/hiera2/json_backend.rb +0 -18
- data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +0 -21
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +0 -67
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +0 -92
- data/lib/puppet/pops/parser/grammar.ra +0 -746
- data/lib/puppet/provider/port/parsed.rb +0 -173
- data/lib/puppet/type/port.rb +0 -119
- data/lib/puppetx/puppet/hiera2_backend.rb +0 -31
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +0 -18
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +0 -8
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +0 -10
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +0 -11
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +0 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +0 -13
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +0 -4
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +0 -11
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +0 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +0 -9
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +0 -2
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +0 -11
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +0 -9
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +0 -9
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +0 -5
- data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +0 -10
- data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +0 -8
- data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +0 -1
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +0 -7
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +0 -4
- data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +0 -2
- data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +0 -8
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +0 -1
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +0 -2
- data/spec/unit/file_system/file_spec.rb +0 -486
- data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +0 -74
- data/spec/unit/pops/binder/hiera2/config_spec.rb +0 -61
- data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +0 -33
@@ -8,7 +8,11 @@ class Puppet::Pops::Model::AstTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
8
8
|
AST = Puppet::Parser::AST
|
9
9
|
Model = Puppet::Pops::Model
|
10
10
|
|
11
|
-
def
|
11
|
+
def dump_LiteralFloat o
|
12
|
+
o.value.to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
def dump_LiteralInteger o
|
12
16
|
case o.radix
|
13
17
|
when 10
|
14
18
|
o.value.to_s
|
@@ -21,6 +25,10 @@ class Puppet::Pops::Model::AstTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
21
25
|
end
|
22
26
|
end
|
23
27
|
|
28
|
+
def dump_Expression(o)
|
29
|
+
"(pops-expression #{Puppet::Pops::Model::ModelTreeDumper.new().dump(o.value)})"
|
30
|
+
end
|
31
|
+
|
24
32
|
def dump_Factory o
|
25
33
|
do_dump(o.current)
|
26
34
|
end
|
@@ -15,11 +15,20 @@ class Puppet::Pops::Model::Factory
|
|
15
15
|
|
16
16
|
# Shared build_visitor, since there are many instances of Factory being used
|
17
17
|
@@build_visitor = Puppet::Pops::Visitor.new(self, "build")
|
18
|
+
@@interpolation_visitor = Puppet::Pops::Visitor.new(self, "interpolate")
|
19
|
+
|
18
20
|
# Initialize a factory with a single object, or a class with arguments applied to build of
|
19
21
|
# created instance
|
20
22
|
#
|
21
|
-
def initialize
|
22
|
-
@current =
|
23
|
+
def initialize o, *args
|
24
|
+
@current = case o
|
25
|
+
when Model::PopsObject
|
26
|
+
o
|
27
|
+
when Puppet::Pops::Model::Factory
|
28
|
+
o.current
|
29
|
+
else
|
30
|
+
build(o, *args)
|
31
|
+
end
|
23
32
|
end
|
24
33
|
|
25
34
|
# Polymorphic build
|
@@ -27,7 +36,17 @@ class Puppet::Pops::Model::Factory
|
|
27
36
|
begin
|
28
37
|
@@build_visitor.visit_this(self, o, *args)
|
29
38
|
rescue =>e
|
30
|
-
#
|
39
|
+
# debug here when in trouble...
|
40
|
+
raise e
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Polymorphic interpolate
|
45
|
+
def interpolate()
|
46
|
+
begin
|
47
|
+
@@interpolation_visitor.visit_this_0(self, current)
|
48
|
+
rescue =>e
|
49
|
+
# debug here when in trouble...
|
31
50
|
raise e
|
32
51
|
end
|
33
52
|
end
|
@@ -103,6 +122,12 @@ class Puppet::Pops::Model::Factory
|
|
103
122
|
o
|
104
123
|
end
|
105
124
|
|
125
|
+
def build_HeredocExpression(o, name, expr)
|
126
|
+
o.syntax = name
|
127
|
+
o.text_expr = build(expr)
|
128
|
+
o
|
129
|
+
end
|
130
|
+
|
106
131
|
# @param name [String] a valid classname
|
107
132
|
# @param parameters [Array<Model::Parameter>] may be empty
|
108
133
|
# @param parent_class_name [String, nil] a valid classname referencing a parent class, optional.
|
@@ -115,20 +140,6 @@ class Puppet::Pops::Model::Factory
|
|
115
140
|
o
|
116
141
|
end
|
117
142
|
|
118
|
-
# # @param name [String] a valid classname
|
119
|
-
# # @param parameters [Array<Model::Parameter>] may be empty
|
120
|
-
# # @param body [Array<Expression>, Expression, nil] expression that constitute the body
|
121
|
-
# # @return [Model::HostClassDefinition] configured from the parameters
|
122
|
-
# #
|
123
|
-
# def build_ResourceTypeDefinition(o, name, parameters, body)
|
124
|
-
# build_NamedDefinition(o, name, parameters, body)
|
125
|
-
# o.name = name
|
126
|
-
# parameters.each {|p| o.addParameters(build(p)) }
|
127
|
-
# b = f_build_body(body)
|
128
|
-
# o.body = b.current if b
|
129
|
-
# o
|
130
|
-
# end
|
131
|
-
|
132
143
|
def build_ResourceOverrideExpression(o, resources, attribute_operations)
|
133
144
|
o.resources = build(resources)
|
134
145
|
attribute_operations.each {|ao| o.addOperations(build(ao)) }
|
@@ -136,8 +147,8 @@ class Puppet::Pops::Model::Factory
|
|
136
147
|
end
|
137
148
|
|
138
149
|
def build_KeyedEntry(o, k, v)
|
139
|
-
o.key =
|
140
|
-
o.value =
|
150
|
+
o.key = to_ops(k)
|
151
|
+
o.value = to_ops(v)
|
141
152
|
o
|
142
153
|
end
|
143
154
|
|
@@ -151,21 +162,14 @@ class Puppet::Pops::Model::Factory
|
|
151
162
|
o
|
152
163
|
end
|
153
164
|
|
154
|
-
def
|
165
|
+
def build_LiteralFloat(o, val)
|
155
166
|
o.value = val
|
156
|
-
o.radix = radix
|
157
167
|
o
|
158
168
|
end
|
159
169
|
|
160
|
-
def
|
161
|
-
o.
|
162
|
-
|
163
|
-
o
|
164
|
-
end
|
165
|
-
|
166
|
-
def build_ImportExpression(o, files)
|
167
|
-
# The argument files has already been built
|
168
|
-
files.each {|f| o.addFiles(to_ops(f)) }
|
170
|
+
def build_LiteralInteger(o, val, radix)
|
171
|
+
o.value = val
|
172
|
+
o.radix = radix
|
169
173
|
o
|
170
174
|
end
|
171
175
|
|
@@ -201,15 +205,17 @@ class Puppet::Pops::Model::Factory
|
|
201
205
|
end
|
202
206
|
end
|
203
207
|
|
204
|
-
def
|
208
|
+
def build_LambdaExpression(o, parameters, body)
|
205
209
|
parameters.each {|p| o.addParameters(build(p)) }
|
206
210
|
b = f_build_body(body)
|
207
|
-
o.body = b
|
211
|
+
o.body = to_ops(b) if b
|
208
212
|
o
|
209
213
|
end
|
210
214
|
|
211
215
|
def build_NamedDefinition(o, name, parameters, body)
|
212
|
-
|
216
|
+
parameters.each {|p| o.addParameters(build(p)) }
|
217
|
+
b = f_build_body(body)
|
218
|
+
o.body = b.current if b
|
213
219
|
o.name = name
|
214
220
|
o
|
215
221
|
end
|
@@ -248,6 +254,11 @@ class Puppet::Pops::Model::Factory
|
|
248
254
|
o
|
249
255
|
end
|
250
256
|
|
257
|
+
def build_RenderStringExpression(o, string)
|
258
|
+
o.value = string;
|
259
|
+
o
|
260
|
+
end
|
261
|
+
|
251
262
|
def build_ResourceBody(o, title_expression, attribute_operations)
|
252
263
|
o.title = build(title_expression)
|
253
264
|
attribute_operations.each {|ao| o.addOperations(build(ao)) }
|
@@ -266,6 +277,24 @@ class Puppet::Pops::Model::Factory
|
|
266
277
|
o
|
267
278
|
end
|
268
279
|
|
280
|
+
# Builds a SubLocatedExpression - this wraps the expression in a sublocation configured
|
281
|
+
# from the given token
|
282
|
+
# A SubLocated holds its own locator that is used for subexpressions holding positions relative
|
283
|
+
# to what it describes.
|
284
|
+
#
|
285
|
+
def build_SubLocatedExpression(o, token, expression)
|
286
|
+
o.expr = build(expression)
|
287
|
+
o.offset = token.offset
|
288
|
+
o.length = token.length
|
289
|
+
locator = token.locator
|
290
|
+
o.locator = locator
|
291
|
+
o.leading_line_count = locator.leading_line_count
|
292
|
+
o.leading_line_offset = locator.leading_line_offset
|
293
|
+
# Index is held in sublocator's parent locator - needed to be able to reconstruct
|
294
|
+
o.line_offsets = locator.locator.line_index
|
295
|
+
o
|
296
|
+
end
|
297
|
+
|
269
298
|
def build_SelectorEntry(o, matching, value)
|
270
299
|
o.matching_expr = build(matching)
|
271
300
|
o.value_expr = build(value)
|
@@ -284,6 +313,17 @@ class Puppet::Pops::Model::Factory
|
|
284
313
|
o
|
285
314
|
end
|
286
315
|
|
316
|
+
def build_Program(o, body, definitions, locator)
|
317
|
+
o.body = to_ops(body)
|
318
|
+
# non containment
|
319
|
+
definitions.each { |d| o.addDefinitions(d) }
|
320
|
+
o.source_ref = locator.file
|
321
|
+
o.source_text = locator.string
|
322
|
+
o.line_offsets = locator.line_index
|
323
|
+
o.locator = locator
|
324
|
+
o
|
325
|
+
end
|
326
|
+
|
287
327
|
def build_QualifiedName(o, name)
|
288
328
|
o.value = name.to_s
|
289
329
|
o
|
@@ -398,6 +438,11 @@ class Puppet::Pops::Model::Factory
|
|
398
438
|
f_build_binary_op(Model::AssignmentExpression, :'+=', current, r)
|
399
439
|
end
|
400
440
|
|
441
|
+
# Assignment -=
|
442
|
+
def minus_set(r)
|
443
|
+
f_build_binary_op(Model::AssignmentExpression, :'-=', current, r)
|
444
|
+
end
|
445
|
+
|
401
446
|
def attributes(*args)
|
402
447
|
args.each {|a| current.addAttributes(build(a)) }
|
403
448
|
self
|
@@ -412,36 +457,20 @@ class Puppet::Pops::Model::Factory
|
|
412
457
|
end
|
413
458
|
end
|
414
459
|
|
415
|
-
def respond_to?(meth)
|
416
|
-
current.respond_to?(meth) || super
|
460
|
+
def respond_to?(meth, include_all=false)
|
461
|
+
current.respond_to?(meth, include_all) || super
|
417
462
|
end
|
418
463
|
|
419
464
|
# Records the position (start -> end) and computes the resulting length.
|
420
465
|
#
|
421
|
-
def record_position(
|
422
|
-
Puppet::Pops::
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
end
|
430
|
-
end
|
431
|
-
self
|
432
|
-
end
|
433
|
-
|
434
|
-
# Records the origin file of an element
|
435
|
-
# Does nothing if file is nil.
|
436
|
-
#
|
437
|
-
# @param file [String,nil] the file/path to the origin, may contain URI scheme of file: or some other URI scheme
|
438
|
-
# @return [Factory] returns self
|
439
|
-
#
|
440
|
-
def record_origin(file)
|
441
|
-
return self unless file
|
442
|
-
Puppet::Pops::Adapters::OriginAdapter.adapt(current) do |a|
|
443
|
-
a.origin = file
|
444
|
-
end
|
466
|
+
def record_position(start_locatable, end_locatable)
|
467
|
+
from = start_locatable.is_a?(Puppet::Pops::Model::Factory) ? start_locatable.current : start_locatable
|
468
|
+
to = end_locatable.is_a?(Puppet::Pops::Model::Factory) ? end_locatable.current : end_locatable
|
469
|
+
to = from if to.nil?
|
470
|
+
o = current
|
471
|
+
# record information directly in the Model::Positioned object
|
472
|
+
o.offset = from.offset
|
473
|
+
o.length ||= to.offset - from.offset + to.length
|
445
474
|
self
|
446
475
|
end
|
447
476
|
|
@@ -450,19 +479,6 @@ class Puppet::Pops::Model::Factory
|
|
450
479
|
Puppet::Pops::Adapters::SourcePosAdapter.adapt(current)
|
451
480
|
end
|
452
481
|
|
453
|
-
# Returns documentation string, or nil if not available
|
454
|
-
# @return [String, nil] associated documentation if available
|
455
|
-
def doc()
|
456
|
-
a = Puppet::Pops::Adapters::SourcePosAdapter.adapt(current)
|
457
|
-
return a.documentation if a
|
458
|
-
nil
|
459
|
-
end
|
460
|
-
|
461
|
-
def doc=(doc_string)
|
462
|
-
a = Puppet::Pops::Adapters::SourcePosAdapter.adapt(current)
|
463
|
-
a.documentation = doc_string
|
464
|
-
end
|
465
|
-
|
466
482
|
# Returns symbolic information about an expected share of a resource expression given the LHS of a resource expr.
|
467
483
|
#
|
468
484
|
# * `name { }` => `:resource`, create a resource of the given type
|
@@ -519,6 +535,11 @@ class Puppet::Pops::Model::Factory
|
|
519
535
|
|
520
536
|
def self.HASH(entries); new(Model::LiteralHash, *entries); end
|
521
537
|
|
538
|
+
# TODO_HEREDOC
|
539
|
+
def self.HEREDOC(name, expr); new(Model::HeredocExpression, name, expr); end
|
540
|
+
|
541
|
+
def self.SUBLOCATE(token, expr) new(Model::SubLocatedExpression, token, expr); end
|
542
|
+
|
522
543
|
def self.LIST(entries); new(Model::LiteralList, *entries); end
|
523
544
|
|
524
545
|
def self.PARAM(name, expr=nil); new(Model::Parameter, name, expr); end
|
@@ -544,7 +565,26 @@ class Puppet::Pops::Model::Factory
|
|
544
565
|
end
|
545
566
|
|
546
567
|
def self.TEXT(expr)
|
547
|
-
new(Model::TextExpression, expr)
|
568
|
+
new(Model::TextExpression, new(expr).interpolate)
|
569
|
+
end
|
570
|
+
|
571
|
+
# TODO_EPP
|
572
|
+
def self.RENDER_STRING(o)
|
573
|
+
new(Model::RenderStringExpression, o)
|
574
|
+
end
|
575
|
+
|
576
|
+
def self.RENDER_EXPR(expr)
|
577
|
+
new(Model::RenderExpression, expr)
|
578
|
+
end
|
579
|
+
|
580
|
+
def self.EPP(parameters, body)
|
581
|
+
see_scope = false
|
582
|
+
params = parameters
|
583
|
+
if parameters.nil?
|
584
|
+
params = []
|
585
|
+
see_scope = true
|
586
|
+
end
|
587
|
+
LAMBDA(params, new(Model::EppExpression, see_scope, body))
|
548
588
|
end
|
549
589
|
|
550
590
|
# TODO: This is the same a fqn factory method, don't know if callers to fqn and QNAME can live with the
|
@@ -554,11 +594,30 @@ class Puppet::Pops::Model::Factory
|
|
554
594
|
new(Model::QualifiedName, name)
|
555
595
|
end
|
556
596
|
|
557
|
-
|
597
|
+
def self.NUMBER(name_or_numeric)
|
598
|
+
if n_radix = Puppet::Pops::Utils.to_n_with_radix(name_or_numeric)
|
599
|
+
val, radix = n_radix
|
600
|
+
if val.is_a?(Float)
|
601
|
+
new(Model::LiteralFloat, val)
|
602
|
+
else
|
603
|
+
new(Model::LiteralInteger, val, radix)
|
604
|
+
end
|
605
|
+
else
|
606
|
+
# Bad number should already have been caught by lexer - this should never happen
|
607
|
+
raise ArgumentError, "Internal Error, NUMBER token does not contain a valid number, #{name_or_numeric}"
|
608
|
+
end
|
609
|
+
end
|
610
|
+
|
611
|
+
# Convert input string to either a qualified name, a LiteralInteger with radix, or a LiteralFloat
|
558
612
|
#
|
559
613
|
def self.QNAME_OR_NUMBER(name)
|
560
614
|
if n_radix = Puppet::Pops::Utils.to_n_with_radix(name)
|
561
|
-
|
615
|
+
val, radix = n_radix
|
616
|
+
if val.is_a?(Float)
|
617
|
+
new(Model::LiteralFloat, val)
|
618
|
+
else
|
619
|
+
new(Model::LiteralInteger, val, radix)
|
620
|
+
end
|
562
621
|
else
|
563
622
|
new(Model::QualifiedName, name)
|
564
623
|
end
|
@@ -576,13 +635,6 @@ class Puppet::Pops::Model::Factory
|
|
576
635
|
new(Model::ExportedQuery, query_expr)
|
577
636
|
end
|
578
637
|
|
579
|
-
# Used by regular grammar, egrammar creates an AccessExpression instead, and evaluation determines
|
580
|
-
# if access is to instances or something else.
|
581
|
-
#
|
582
|
-
def self.INSTANCE(type_name, name_expressions)
|
583
|
-
new(Model::InstanceReferences, type_name, name_expressions)
|
584
|
-
end
|
585
|
-
|
586
638
|
def self.ATTRIBUTE_OP(name, op, expr)
|
587
639
|
new(Model::AttributeOperation, name, op, expr)
|
588
640
|
end
|
@@ -599,11 +651,7 @@ class Puppet::Pops::Model::Factory
|
|
599
651
|
end
|
600
652
|
|
601
653
|
def self.COLLECT(type_expr, query_expr, attribute_operations)
|
602
|
-
new(Model::CollectExpression,
|
603
|
-
end
|
604
|
-
|
605
|
-
def self.IMPORT(files)
|
606
|
-
new(Model::ImportExpression, files)
|
654
|
+
new(Model::CollectExpression, type_expr, query_expr, attribute_operations)
|
607
655
|
end
|
608
656
|
|
609
657
|
def self.NAMED_ACCESS(type_name, bodies)
|
@@ -626,6 +674,10 @@ class Puppet::Pops::Model::Factory
|
|
626
674
|
new(Model::ResourceBody, resource_title, attribute_operations)
|
627
675
|
end
|
628
676
|
|
677
|
+
def self.PROGRAM(body, definitions, locator)
|
678
|
+
new(Model::Program, body, definitions, locator)
|
679
|
+
end
|
680
|
+
|
629
681
|
# Builds a BlockExpression if args size > 1, else the single expression/value in args
|
630
682
|
def self.block_or_expression(*args)
|
631
683
|
if args.size > 1
|
@@ -651,24 +703,41 @@ class Puppet::Pops::Model::Factory
|
|
651
703
|
o.nil? || o.is_a?(Puppet::Pops::Model::Nop)
|
652
704
|
end
|
653
705
|
|
706
|
+
STATEMENT_CALLS = {
|
707
|
+
'require' => true,
|
708
|
+
'realize' => true,
|
709
|
+
'include' => true,
|
710
|
+
'contain' => true,
|
711
|
+
|
712
|
+
'debug' => true,
|
713
|
+
'info' => true,
|
714
|
+
'notice' => true,
|
715
|
+
'warning' => true,
|
716
|
+
'error' => true,
|
717
|
+
|
718
|
+
'fail' => true,
|
719
|
+
}
|
720
|
+
# Returns true if the given name is a "statement keyword" (require, include, contain,
|
721
|
+
# error, notice, info, debug
|
722
|
+
#
|
723
|
+
def name_is_statement(name)
|
724
|
+
STATEMENT_CALLS[name]
|
725
|
+
end
|
726
|
+
|
654
727
|
# Transforms an array of expressions containing literal name expressions to calls if followed by an
|
655
|
-
# expression, or expression list.
|
728
|
+
# expression, or expression list.
|
656
729
|
#
|
657
730
|
def self.transform_calls(expressions)
|
658
731
|
expressions.reduce([]) do |memo, expr|
|
659
732
|
expr = expr.current if expr.is_a?(Puppet::Pops::Model::Factory)
|
660
733
|
name = memo[-1]
|
661
|
-
if name.is_a?
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
# This is needed because it is first parsed as a "statement" and the requirement changes as it becomes
|
669
|
-
# an argument to the name to call transform above.
|
670
|
-
expr.rval_required = true
|
671
|
-
end
|
734
|
+
if name.is_a?(Model::QualifiedName) && STATEMENT_CALLS[name.value]
|
735
|
+
memo[-1] = Puppet::Pops::Model::Factory.CALL_NAMED(name, false, expr.is_a?(Array) ? expr : [expr])
|
736
|
+
if expr.is_a?(Model::CallNamedFunctionExpression)
|
737
|
+
# Patch statement function call to expression style
|
738
|
+
# This is needed because it is first parsed as a "statement" and the requirement changes as it becomes
|
739
|
+
# an argument to the name to call transform above.
|
740
|
+
expr.rval_required = true
|
672
741
|
end
|
673
742
|
else
|
674
743
|
memo << expr
|
@@ -683,6 +752,20 @@ class Puppet::Pops::Model::Factory
|
|
683
752
|
|
684
753
|
end
|
685
754
|
|
755
|
+
# Transforms a left expression followed by an untitled resource (in the form of attribute_operations)
|
756
|
+
# @param left [Factory, Expression] the lhs followed what may be a hash
|
757
|
+
def self.transform_resource_wo_title(left, attribute_ops)
|
758
|
+
return nil unless attribute_ops.is_a? Array
|
759
|
+
# return nil if attribute_ops.find { |ao| ao.operator == :'+>' }
|
760
|
+
keyed_entries = attribute_ops.map do |ao|
|
761
|
+
return nil if ao.operator == :'+>'
|
762
|
+
KEY_ENTRY(ao.attribute_name, ao.value_expr)
|
763
|
+
end
|
764
|
+
result = block_or_expression(*transform_calls([left, HASH(keyed_entries)]))
|
765
|
+
result
|
766
|
+
end
|
767
|
+
|
768
|
+
|
686
769
|
# Building model equivalences of Ruby objects
|
687
770
|
# Allows passing regular ruby objects to the factory to produce instructions
|
688
771
|
# that when evaluated produce the same thing.
|
@@ -711,13 +794,13 @@ class Puppet::Pops::Model::Factory
|
|
711
794
|
end
|
712
795
|
|
713
796
|
def build_Fixnum(o)
|
714
|
-
x = Model::
|
797
|
+
x = Model::LiteralInteger.new
|
715
798
|
x.value = o;
|
716
799
|
x
|
717
800
|
end
|
718
801
|
|
719
802
|
def build_Float(o)
|
720
|
-
x = Model::
|
803
|
+
x = Model::LiteralFloat.new
|
721
804
|
x.value = o;
|
722
805
|
x
|
723
806
|
end
|
@@ -728,6 +811,13 @@ class Puppet::Pops::Model::Factory
|
|
728
811
|
x
|
729
812
|
end
|
730
813
|
|
814
|
+
def build_EppExpression(o, see_scope, body)
|
815
|
+
o.see_scope = see_scope
|
816
|
+
b = f_build_body(body)
|
817
|
+
o.body = b.current if b
|
818
|
+
o
|
819
|
+
end
|
820
|
+
|
731
821
|
# If building a factory, simply unwrap the model oject contained in the factory.
|
732
822
|
def build_Factory(o)
|
733
823
|
o.current
|
@@ -770,15 +860,6 @@ class Puppet::Pops::Model::Factory
|
|
770
860
|
o
|
771
861
|
end
|
772
862
|
|
773
|
-
# # @param rval_required [Boolean] if the call must produce a value
|
774
|
-
# def build_CallNamedFunctionExpression(o, name, rval_required, *args)
|
775
|
-
# build_CallExpression(o, name, rval_required, *args)
|
776
|
-
## o.functor_expr = build(name)
|
777
|
-
## o.rval_required = rval_required
|
778
|
-
## args.each {|x| o.addArguments(build(x)) }
|
779
|
-
# o
|
780
|
-
# end
|
781
|
-
|
782
863
|
def build_CallMethodExpression(o, functor, rval_required, lambda, *args)
|
783
864
|
build_CallExpression(o, functor, rval_required, *args)
|
784
865
|
o.lambda = lambda
|
@@ -805,12 +886,85 @@ class Puppet::Pops::Model::Factory
|
|
805
886
|
build(o.new(), *args)
|
806
887
|
end
|
807
888
|
|
889
|
+
def interpolate_Factory(o)
|
890
|
+
interpolate(o.current)
|
891
|
+
end
|
892
|
+
|
893
|
+
def interpolate_LiteralInteger(o)
|
894
|
+
# convert number to a variable
|
895
|
+
self.class.new(o).var
|
896
|
+
end
|
897
|
+
|
898
|
+
def interpolate_Object(o)
|
899
|
+
o
|
900
|
+
end
|
901
|
+
|
902
|
+
def interpolate_QualifiedName(o)
|
903
|
+
self.class.new(o).var
|
904
|
+
end
|
905
|
+
|
906
|
+
# rewrite left expression to variable if it is name, number, and recurse if it is an access expression
|
907
|
+
# this is for interpolation support in new lexer (${NAME}, ${NAME[}}, ${NUMBER}, ${NUMBER[]} - all
|
908
|
+
# other expressions requires variables to be preceded with $
|
909
|
+
#
|
910
|
+
def interpolate_AccessExpression(o)
|
911
|
+
if is_interop_rewriteable?(o.left_expr)
|
912
|
+
o.left_expr = to_ops(self.class.new(o.left_expr).interpolate)
|
913
|
+
end
|
914
|
+
o
|
915
|
+
end
|
916
|
+
|
917
|
+
def interpolate_NamedAccessExpression(o)
|
918
|
+
if is_interop_rewriteable?(o.left_expr)
|
919
|
+
o.left_expr = to_ops(self.class.new(o.left_expr).interpolate)
|
920
|
+
end
|
921
|
+
o
|
922
|
+
end
|
923
|
+
|
924
|
+
# Rewrite method calls on the form ${x.each ...} to ${$x.each}
|
925
|
+
def interpolate_CallMethodExpression(o)
|
926
|
+
if is_interop_rewriteable?(o.functor_expr)
|
927
|
+
o.functor_expr = to_ops(self.class.new(o.functor_expr).interpolate)
|
928
|
+
end
|
929
|
+
o
|
930
|
+
end
|
931
|
+
|
932
|
+
def is_interop_rewriteable?(o)
|
933
|
+
case o
|
934
|
+
when Model::AccessExpression, Model::QualifiedName,
|
935
|
+
Model::NamedAccessExpression, Model::CallMethodExpression
|
936
|
+
true
|
937
|
+
when Model::LiteralInteger
|
938
|
+
# Only decimal integers can represent variables, else it is a number
|
939
|
+
o.radix == 10
|
940
|
+
else
|
941
|
+
false
|
942
|
+
end
|
943
|
+
end
|
944
|
+
|
808
945
|
# Checks if the object is already a model object, or build it
|
809
946
|
def to_ops(o, *args)
|
810
|
-
|
947
|
+
case o
|
948
|
+
when Model::PopsObject
|
811
949
|
o
|
950
|
+
when Puppet::Pops::Model::Factory
|
951
|
+
o.current
|
812
952
|
else
|
813
953
|
build(o, *args)
|
814
954
|
end
|
815
955
|
end
|
956
|
+
|
957
|
+
def self.concat(*args)
|
958
|
+
new(args.map do |e|
|
959
|
+
e = e.current if e.is_a?(self)
|
960
|
+
case e
|
961
|
+
when Model::LiteralString
|
962
|
+
e.value
|
963
|
+
when String
|
964
|
+
e
|
965
|
+
else
|
966
|
+
raise ArgumentError, "can only concatenate strings, got #{e.class}"
|
967
|
+
end
|
968
|
+
end.join(''))
|
969
|
+
end
|
816
970
|
end
|