puppet 3.7.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/COMMITTERS.md +244 -0
- data/CONTRIBUTING.md +91 -0
- data/Gemfile +100 -0
- data/LICENSE +17 -0
- data/README.md +76 -0
- data/Rakefile +68 -0
- data/bin/extlookup2hiera +56 -0
- data/bin/puppet +8 -0
- data/conf/auth.conf +120 -0
- data/conf/fileserver.conf +42 -0
- data/conf/tagmail.conf +16 -0
- data/examples/hiera/README.md +91 -0
- data/examples/hiera/etc/hiera.yaml +15 -0
- data/examples/hiera/etc/hieradb/common.yaml +3 -0
- data/examples/hiera/etc/hieradb/dc1.yaml +6 -0
- data/examples/hiera/etc/hieradb/development.yaml +2 -0
- data/examples/hiera/etc/puppet.conf +3 -0
- data/examples/hiera/modules/data/manifests/common.pp +4 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +6 -0
- data/examples/hiera/modules/ntp/manifests/data.pp +4 -0
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +4 -0
- data/examples/hiera/modules/users/manifests/dc1.pp +4 -0
- data/examples/hiera/modules/users/manifests/development.pp +4 -0
- data/examples/hiera/site.pp +3 -0
- data/ext/README.environment +8 -0
- data/ext/autotest/Rakefile +8 -0
- data/ext/autotest/config +43 -0
- data/ext/autotest/readme.rst +16 -0
- data/ext/build_defaults.yaml +38 -0
- data/ext/cert_inspector +140 -0
- data/ext/dbfix.sql +132 -0
- data/ext/debian/README.Debian +8 -0
- data/ext/debian/README.source +2 -0
- data/ext/debian/TODO.Debian +1 -0
- data/ext/debian/changelog.erb +1122 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +144 -0
- data/ext/debian/copyright +361 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/fileserver.conf +41 -0
- data/ext/debian/puppet-common.dirs +13 -0
- data/ext/debian/puppet-common.install +4 -0
- data/ext/debian/puppet-common.lintian-overrides +5 -0
- data/ext/debian/puppet-common.manpages +35 -0
- data/ext/debian/puppet-common.postinst +35 -0
- data/ext/debian/puppet-common.postrm +33 -0
- data/ext/debian/puppet-el.dirs +1 -0
- data/ext/debian/puppet-el.emacsen-install +25 -0
- data/ext/debian/puppet-el.emacsen-remove +11 -0
- data/ext/debian/puppet-el.emacsen-startup +9 -0
- data/ext/debian/puppet-el.install +1 -0
- data/ext/debian/puppet-testsuite.install +2 -0
- data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
- data/ext/debian/puppet.conf +14 -0
- data/ext/debian/puppet.default +9 -0
- data/ext/debian/puppet.init +117 -0
- data/ext/debian/puppet.lintian-overrides +3 -0
- data/ext/debian/puppet.logrotate +12 -0
- data/ext/debian/puppet.postinst +20 -0
- data/ext/debian/puppet.postrm +20 -0
- data/ext/debian/puppet.preinst +20 -0
- data/ext/debian/puppetmaster-common.install +2 -0
- data/ext/debian/puppetmaster-common.manpages +2 -0
- data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
- data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
- data/ext/debian/puppetmaster-passenger.dirs +4 -0
- data/ext/debian/puppetmaster-passenger.postinst +162 -0
- data/ext/debian/puppetmaster-passenger.postrm +61 -0
- data/ext/debian/puppetmaster.README.debian +15 -0
- data/ext/debian/puppetmaster.default +14 -0
- data/ext/debian/puppetmaster.init +137 -0
- data/ext/debian/puppetmaster.lintian-overrides +3 -0
- data/ext/debian/puppetmaster.postinst +20 -0
- data/ext/debian/puppetmaster.postrm +5 -0
- data/ext/debian/puppetmaster.preinst +22 -0
- data/ext/debian/rules +129 -0
- data/ext/debian/source/format +1 -0
- data/ext/debian/source/options +1 -0
- data/ext/debian/vim-puppet.README.Debian +13 -0
- data/ext/debian/vim-puppet.dirs +3 -0
- data/ext/debian/vim-puppet.yaml +5 -0
- data/ext/debian/watch +2 -0
- data/ext/emacs/puppet-mode-init.el +6 -0
- data/ext/emacs/puppet-mode.el +434 -0
- data/ext/envpuppet +139 -0
- data/ext/envpuppet.bat +14 -0
- data/ext/freebsd/puppetd +26 -0
- data/ext/freebsd/puppetmasterd +26 -0
- data/ext/gentoo/conf.d/puppet +5 -0
- data/ext/gentoo/conf.d/puppetmaster +12 -0
- data/ext/gentoo/init.d/puppet +38 -0
- data/ext/gentoo/init.d/puppetmaster +51 -0
- data/ext/gentoo/puppet/fileserver.conf +41 -0
- data/ext/gentoo/puppet/puppet.conf +25 -0
- data/ext/ips/puppet-agent +44 -0
- data/ext/ips/puppet-master +44 -0
- data/ext/ips/puppet.conf +29 -0
- data/ext/ips/puppet.p5m.erb +12 -0
- data/ext/ips/puppetagent.xml +42 -0
- data/ext/ips/puppetmaster.xml +42 -0
- data/ext/ips/rules +19 -0
- data/ext/ips/transforms +34 -0
- data/ext/ldap/puppet.schema +24 -0
- data/ext/logcheck/puppet +23 -0
- data/ext/nagios/check_puppet.rb +123 -0
- data/ext/nagios/naggen +309 -0
- data/ext/osx/file_mapping.yaml +33 -0
- data/ext/osx/postflight.erb +109 -0
- data/ext/osx/preflight.erb +52 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/project_data.yaml +50 -0
- data/ext/puppet-load.rb +393 -0
- data/ext/puppet-nm-dispatcher +13 -0
- data/ext/puppet-test +566 -0
- data/ext/puppetlisten/puppetlisten.rb +75 -0
- data/ext/puppetlisten/puppetrun.rb +38 -0
- data/ext/pure_ruby_dsl/dsl_test.rb +7 -0
- data/ext/rack/config.ru +36 -0
- data/ext/rack/example-passenger-vhost.conf +57 -0
- data/ext/redhat/client.init +119 -0
- data/ext/redhat/client.sysconfig +11 -0
- data/ext/redhat/fileserver.conf +41 -0
- data/ext/redhat/logrotate +10 -0
- data/ext/redhat/puppet.conf +25 -0
- data/ext/redhat/puppet.spec.erb +860 -0
- data/ext/redhat/queue.init +105 -0
- data/ext/redhat/server.init +128 -0
- data/ext/redhat/server.sysconfig +13 -0
- data/ext/regexp_nodes/classes/databases +2 -0
- data/ext/regexp_nodes/classes/webservers +2 -0
- data/ext/regexp_nodes/environment/development +2 -0
- data/ext/regexp_nodes/parameters/service/prod +1 -0
- data/ext/regexp_nodes/parameters/service/qa +3 -0
- data/ext/regexp_nodes/parameters/service/sandbox +1 -0
- data/ext/regexp_nodes/regexp_nodes.rb +271 -0
- data/ext/solaris/pkginfo +6 -0
- data/ext/solaris/smf/puppetd.xml +77 -0
- data/ext/solaris/smf/puppetmasterd.xml +77 -0
- data/ext/solaris/smf/svc-puppetd +64 -0
- data/ext/solaris/smf/svc-puppetmasterd +60 -0
- data/ext/suse/client.init +144 -0
- data/ext/suse/puppet.spec +310 -0
- data/ext/suse/server.init +173 -0
- data/ext/systemd/puppet.service +12 -0
- data/ext/systemd/puppetmaster.service +11 -0
- data/ext/upload_facts.rb +119 -0
- data/ext/vim/README +3 -0
- data/ext/vim/ftdetect/puppet.vim +2 -0
- data/ext/vim/ftplugin/puppet.vim +94 -0
- data/ext/vim/indent/puppet.vim +76 -0
- data/ext/vim/syntax/puppet.vim +115 -0
- data/ext/windows/eventlog/Rakefile +32 -0
- data/ext/windows/eventlog/puppetres.dll +0 -0
- data/ext/windows/eventlog/puppetres.mc +18 -0
- data/ext/windows/service/daemon.bat +6 -0
- data/ext/windows/service/daemon.rb +175 -0
- data/ext/yaml_nodes.rb +105 -0
- data/install.rb +429 -0
- data/lib/hiera/backend/puppet_backend.rb +103 -0
- data/lib/hiera/scope.rb +60 -0
- data/lib/hiera_puppet.rb +87 -0
- data/lib/puppet.rb +277 -0
- data/lib/puppet/agent.rb +121 -0
- data/lib/puppet/agent/disabler.rb +53 -0
- data/lib/puppet/agent/locker.rb +43 -0
- data/lib/puppet/application.rb +516 -0
- data/lib/puppet/application/agent.rb +480 -0
- data/lib/puppet/application/apply.rb +299 -0
- data/lib/puppet/application/ca.rb +5 -0
- data/lib/puppet/application/catalog.rb +4 -0
- data/lib/puppet/application/cert.rb +277 -0
- data/lib/puppet/application/certificate.rb +15 -0
- data/lib/puppet/application/certificate_request.rb +7 -0
- data/lib/puppet/application/certificate_revocation_list.rb +7 -0
- data/lib/puppet/application/config.rb +4 -0
- data/lib/puppet/application/describe.rb +254 -0
- data/lib/puppet/application/device.rb +238 -0
- data/lib/puppet/application/doc.rb +273 -0
- data/lib/puppet/application/face_base.rb +250 -0
- data/lib/puppet/application/facts.rb +4 -0
- data/lib/puppet/application/file.rb +4 -0
- data/lib/puppet/application/filebucket.rb +184 -0
- data/lib/puppet/application/help.rb +4 -0
- data/lib/puppet/application/indirection_base.rb +4 -0
- data/lib/puppet/application/inspect.rb +179 -0
- data/lib/puppet/application/instrumentation_data.rb +7 -0
- data/lib/puppet/application/instrumentation_listener.rb +7 -0
- data/lib/puppet/application/instrumentation_probe.rb +7 -0
- data/lib/puppet/application/key.rb +4 -0
- data/lib/puppet/application/kick.rb +351 -0
- data/lib/puppet/application/man.rb +4 -0
- data/lib/puppet/application/master.rb +304 -0
- data/lib/puppet/application/module.rb +4 -0
- data/lib/puppet/application/node.rb +4 -0
- data/lib/puppet/application/parser.rb +5 -0
- data/lib/puppet/application/plugin.rb +3 -0
- data/lib/puppet/application/queue.rb +161 -0
- data/lib/puppet/application/report.rb +4 -0
- data/lib/puppet/application/resource.rb +228 -0
- data/lib/puppet/application/resource_type.rb +7 -0
- data/lib/puppet/application/secret_agent.rb +9 -0
- data/lib/puppet/application/status.rb +4 -0
- data/lib/puppet/bindings.rb +147 -0
- data/lib/puppet/coercion.rb +40 -0
- data/lib/puppet/configurer.rb +303 -0
- data/lib/puppet/configurer/downloader.rb +66 -0
- data/lib/puppet/configurer/downloader_factory.rb +34 -0
- data/lib/puppet/configurer/fact_handler.rb +37 -0
- data/lib/puppet/configurer/plugin_handler.rb +23 -0
- data/lib/puppet/confine.rb +80 -0
- data/lib/puppet/confine/any.rb +26 -0
- data/lib/puppet/confine/exists.rb +19 -0
- data/lib/puppet/confine/false.rb +19 -0
- data/lib/puppet/confine/feature.rb +17 -0
- data/lib/puppet/confine/true.rb +20 -0
- data/lib/puppet/confine/variable.rb +59 -0
- data/lib/puppet/confine_collection.rb +50 -0
- data/lib/puppet/confiner.rb +46 -0
- data/lib/puppet/context.rb +101 -0
- data/lib/puppet/context/trusted_information.rb +56 -0
- data/lib/puppet/daemon.rb +182 -0
- data/lib/puppet/data_binding.rb +12 -0
- data/lib/puppet/defaults.rb +2091 -0
- data/lib/puppet/dsl.rb +7 -0
- data/lib/puppet/dsl/resource_api.rb +120 -0
- data/lib/puppet/dsl/resource_type_api.rb +34 -0
- data/lib/puppet/environments.rb +367 -0
- data/lib/puppet/error.rb +62 -0
- data/lib/puppet/external/dot.rb +326 -0
- data/lib/puppet/external/nagios.rb +46 -0
- data/lib/puppet/external/nagios/base.rb +472 -0
- data/lib/puppet/external/nagios/grammar.ry +248 -0
- data/lib/puppet/external/nagios/makefile +9 -0
- data/lib/puppet/external/nagios/parser.rb +400 -0
- data/lib/puppet/external/pson/common.rb +385 -0
- data/lib/puppet/external/pson/pure.rb +15 -0
- data/lib/puppet/external/pson/pure/generator.rb +394 -0
- data/lib/puppet/external/pson/pure/parser.rb +318 -0
- data/lib/puppet/external/pson/version.rb +8 -0
- data/lib/puppet/face.rb +12 -0
- data/lib/puppet/face/ca.rb +254 -0
- data/lib/puppet/face/catalog.rb +130 -0
- data/lib/puppet/face/catalog/select.rb +49 -0
- data/lib/puppet/face/certificate.rb +160 -0
- data/lib/puppet/face/certificate_request.rb +53 -0
- data/lib/puppet/face/certificate_revocation_list.rb +58 -0
- data/lib/puppet/face/config.rb +119 -0
- data/lib/puppet/face/facts.rb +81 -0
- data/lib/puppet/face/file.rb +47 -0
- data/lib/puppet/face/file/download.rb +57 -0
- data/lib/puppet/face/file/store.rb +21 -0
- data/lib/puppet/face/help.rb +194 -0
- data/lib/puppet/face/help/action.erb +86 -0
- data/lib/puppet/face/help/face.erb +111 -0
- data/lib/puppet/face/help/global.erb +16 -0
- data/lib/puppet/face/help/man.erb +152 -0
- data/lib/puppet/face/instrumentation_data.rb +30 -0
- data/lib/puppet/face/instrumentation_listener.rb +98 -0
- data/lib/puppet/face/instrumentation_probe.rb +79 -0
- data/lib/puppet/face/key.rb +15 -0
- data/lib/puppet/face/man.rb +99 -0
- data/lib/puppet/face/module.rb +19 -0
- data/lib/puppet/face/module/build.rb +63 -0
- data/lib/puppet/face/module/changes.rb +41 -0
- data/lib/puppet/face/module/generate.rb +251 -0
- data/lib/puppet/face/module/install.rb +145 -0
- data/lib/puppet/face/module/list.rb +275 -0
- data/lib/puppet/face/module/search.rb +94 -0
- data/lib/puppet/face/module/uninstall.rb +78 -0
- data/lib/puppet/face/module/upgrade.rb +86 -0
- data/lib/puppet/face/node.rb +43 -0
- data/lib/puppet/face/node/clean.rb +159 -0
- data/lib/puppet/face/parser.rb +160 -0
- data/lib/puppet/face/plugin.rb +65 -0
- data/lib/puppet/face/report.rb +54 -0
- data/lib/puppet/face/resource.rb +53 -0
- data/lib/puppet/face/resource_type.rb +81 -0
- data/lib/puppet/face/secret_agent.rb +54 -0
- data/lib/puppet/face/status.rb +53 -0
- data/lib/puppet/feature/base.rb +94 -0
- data/lib/puppet/feature/cfacter.rb +14 -0
- data/lib/puppet/feature/eventlog.rb +5 -0
- data/lib/puppet/feature/external_facts.rb +5 -0
- data/lib/puppet/feature/libuser.rb +8 -0
- data/lib/puppet/feature/msgpack.rb +3 -0
- data/lib/puppet/feature/pe_license.rb +4 -0
- data/lib/puppet/feature/pson.rb +4 -0
- data/lib/puppet/feature/rack.rb +19 -0
- data/lib/puppet/feature/rails.rb +47 -0
- data/lib/puppet/feature/rdoc1.rb +16 -0
- data/lib/puppet/feature/rubygems.rb +7 -0
- data/lib/puppet/feature/selinux.rb +3 -0
- data/lib/puppet/feature/ssh.rb +3 -0
- data/lib/puppet/feature/stomp.rb +5 -0
- data/lib/puppet/feature/zlib.rb +5 -0
- data/lib/puppet/file_bucket.rb +4 -0
- data/lib/puppet/file_bucket/dipper.rb +119 -0
- data/lib/puppet/file_bucket/file.rb +157 -0
- data/lib/puppet/file_collection.rb +19 -0
- data/lib/puppet/file_collection/lookup.rb +10 -0
- data/lib/puppet/file_serving.rb +3 -0
- data/lib/puppet/file_serving/base.rb +95 -0
- data/lib/puppet/file_serving/configuration.rb +109 -0
- data/lib/puppet/file_serving/configuration/parser.rb +121 -0
- data/lib/puppet/file_serving/content.rb +45 -0
- data/lib/puppet/file_serving/fileset.rb +172 -0
- data/lib/puppet/file_serving/metadata.rb +199 -0
- data/lib/puppet/file_serving/mount.rb +39 -0
- data/lib/puppet/file_serving/mount/file.rb +121 -0
- data/lib/puppet/file_serving/mount/modules.rb +24 -0
- data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
- data/lib/puppet/file_serving/mount/plugins.rb +35 -0
- data/lib/puppet/file_serving/terminus_helper.rb +21 -0
- data/lib/puppet/file_serving/terminus_selector.rb +30 -0
- data/lib/puppet/file_system.rb +366 -0
- data/lib/puppet/file_system/file18.rb +5 -0
- data/lib/puppet/file_system/file19.rb +46 -0
- data/lib/puppet/file_system/file19windows.rb +107 -0
- data/lib/puppet/file_system/file_impl.rb +145 -0
- data/lib/puppet/file_system/memory_file.rb +71 -0
- data/lib/puppet/file_system/memory_impl.rb +78 -0
- data/lib/puppet/file_system/path_pattern.rb +97 -0
- data/lib/puppet/file_system/uniquefile.rb +190 -0
- data/lib/puppet/forge.rb +226 -0
- data/lib/puppet/forge/cache.rb +59 -0
- data/lib/puppet/forge/errors.rb +112 -0
- data/lib/puppet/forge/repository.rb +182 -0
- data/lib/puppet/functions.rb +555 -0
- data/lib/puppet/functions/assert_type.rb +59 -0
- 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/import.rb +7 -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/graph.rb +11 -0
- data/lib/puppet/graph/key.rb +26 -0
- data/lib/puppet/graph/prioritizer.rb +29 -0
- data/lib/puppet/graph/random_prioritizer.rb +16 -0
- data/lib/puppet/graph/rb_tree_map.rb +388 -0
- data/lib/puppet/graph/relationship_graph.rb +246 -0
- data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
- data/lib/puppet/graph/simple_graph.rb +566 -0
- data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
- data/lib/puppet/indirector.rb +61 -0
- data/lib/puppet/indirector/active_record.rb +29 -0
- data/lib/puppet/indirector/catalog/active_record.rb +39 -0
- data/lib/puppet/indirector/catalog/compiler.rb +182 -0
- data/lib/puppet/indirector/catalog/json.rb +6 -0
- data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
- data/lib/puppet/indirector/catalog/queue.rb +9 -0
- data/lib/puppet/indirector/catalog/rest.rb +6 -0
- data/lib/puppet/indirector/catalog/static_compiler.rb +214 -0
- data/lib/puppet/indirector/catalog/store_configs.rb +8 -0
- data/lib/puppet/indirector/catalog/yaml.rb +22 -0
- data/lib/puppet/indirector/certificate/ca.rb +9 -0
- data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/certificate/file.rb +9 -0
- data/lib/puppet/indirector/certificate/rest.rb +16 -0
- data/lib/puppet/indirector/certificate_request/ca.rb +22 -0
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/certificate_request/file.rb +8 -0
- data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
- data/lib/puppet/indirector/certificate_request/rest.rb +10 -0
- data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
- data/lib/puppet/indirector/certificate_revocation_list/rest.rb +10 -0
- data/lib/puppet/indirector/certificate_status.rb +4 -0
- data/lib/puppet/indirector/certificate_status/file.rb +91 -0
- data/lib/puppet/indirector/certificate_status/rest.rb +11 -0
- data/lib/puppet/indirector/code.rb +6 -0
- data/lib/puppet/indirector/couch.rb +78 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +7 -0
- data/lib/puppet/indirector/data_binding/none.rb +5 -0
- data/lib/puppet/indirector/direct_file_server.rb +19 -0
- data/lib/puppet/indirector/envelope.rb +11 -0
- data/lib/puppet/indirector/errors.rb +5 -0
- data/lib/puppet/indirector/exec.rb +38 -0
- data/lib/puppet/indirector/face.rb +139 -0
- data/lib/puppet/indirector/facts/active_record.rb +44 -0
- data/lib/puppet/indirector/facts/couch.rb +36 -0
- data/lib/puppet/indirector/facts/facter.rb +78 -0
- data/lib/puppet/indirector/facts/inventory_active_record.rb +110 -0
- data/lib/puppet/indirector/facts/inventory_service.rb +20 -0
- data/lib/puppet/indirector/facts/memory.rb +9 -0
- data/lib/puppet/indirector/facts/network_device.rb +24 -0
- data/lib/puppet/indirector/facts/rest.rb +8 -0
- data/lib/puppet/indirector/facts/store_configs.rb +8 -0
- data/lib/puppet/indirector/facts/yaml.rb +82 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +142 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
- data/lib/puppet/indirector/file_content.rb +5 -0
- data/lib/puppet/indirector/file_content/file.rb +7 -0
- data/lib/puppet/indirector/file_content/file_server.rb +7 -0
- data/lib/puppet/indirector/file_content/rest.rb +9 -0
- data/lib/puppet/indirector/file_content/selector.rb +30 -0
- data/lib/puppet/indirector/file_metadata.rb +5 -0
- data/lib/puppet/indirector/file_metadata/file.rb +22 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +9 -0
- data/lib/puppet/indirector/file_metadata/selector.rb +30 -0
- data/lib/puppet/indirector/file_server.rb +65 -0
- data/lib/puppet/indirector/hiera.rb +48 -0
- data/lib/puppet/indirector/indirection.rb +336 -0
- data/lib/puppet/indirector/instrumentation_data.rb +3 -0
- data/lib/puppet/indirector/instrumentation_data/local.rb +22 -0
- data/lib/puppet/indirector/instrumentation_data/rest.rb +8 -0
- data/lib/puppet/indirector/instrumentation_listener.rb +3 -0
- data/lib/puppet/indirector/instrumentation_listener/local.rb +26 -0
- data/lib/puppet/indirector/instrumentation_listener/rest.rb +8 -0
- data/lib/puppet/indirector/instrumentation_probe.rb +3 -0
- data/lib/puppet/indirector/instrumentation_probe/local.rb +27 -0
- data/lib/puppet/indirector/instrumentation_probe/rest.rb +8 -0
- data/lib/puppet/indirector/json.rb +76 -0
- data/lib/puppet/indirector/key/ca.rb +16 -0
- data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
- data/lib/puppet/indirector/key/file.rb +49 -0
- data/lib/puppet/indirector/key/memory.rb +6 -0
- data/lib/puppet/indirector/ldap.rb +79 -0
- data/lib/puppet/indirector/memory.rb +34 -0
- data/lib/puppet/indirector/msgpack.rb +82 -0
- data/lib/puppet/indirector/node/active_record.rb +22 -0
- data/lib/puppet/indirector/node/exec.rb +69 -0
- data/lib/puppet/indirector/node/ldap.rb +257 -0
- data/lib/puppet/indirector/node/memory.rb +10 -0
- data/lib/puppet/indirector/node/msgpack.rb +7 -0
- data/lib/puppet/indirector/node/plain.rb +20 -0
- data/lib/puppet/indirector/node/rest.rb +7 -0
- data/lib/puppet/indirector/node/store_configs.rb +8 -0
- data/lib/puppet/indirector/node/write_only_yaml.rb +32 -0
- data/lib/puppet/indirector/node/yaml.rb +22 -0
- data/lib/puppet/indirector/none.rb +9 -0
- data/lib/puppet/indirector/plain.rb +9 -0
- data/lib/puppet/indirector/queue.rb +80 -0
- data/lib/puppet/indirector/report/msgpack.rb +11 -0
- data/lib/puppet/indirector/report/processor.rb +59 -0
- data/lib/puppet/indirector/report/rest.rb +15 -0
- data/lib/puppet/indirector/report/yaml.rb +11 -0
- data/lib/puppet/indirector/request.rb +318 -0
- data/lib/puppet/indirector/resource/active_record.rb +104 -0
- data/lib/puppet/indirector/resource/ral.rb +64 -0
- data/lib/puppet/indirector/resource/rest.rb +17 -0
- data/lib/puppet/indirector/resource/store_configs.rb +13 -0
- data/lib/puppet/indirector/resource/validator.rb +8 -0
- data/lib/puppet/indirector/resource_type.rb +5 -0
- data/lib/puppet/indirector/resource_type/parser.rb +101 -0
- data/lib/puppet/indirector/resource_type/rest.rb +7 -0
- data/lib/puppet/indirector/rest.rb +267 -0
- data/lib/puppet/indirector/run/local.rb +15 -0
- data/lib/puppet/indirector/run/rest.rb +12 -0
- data/lib/puppet/indirector/ssl_file.rb +180 -0
- data/lib/puppet/indirector/status.rb +3 -0
- data/lib/puppet/indirector/status/local.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +9 -0
- data/lib/puppet/indirector/store_configs.rb +30 -0
- data/lib/puppet/indirector/terminus.rb +169 -0
- data/lib/puppet/indirector/yaml.rb +63 -0
- data/lib/puppet/interface.rb +235 -0
- data/lib/puppet/interface/action.rb +374 -0
- data/lib/puppet/interface/action_builder.rb +149 -0
- data/lib/puppet/interface/action_manager.rb +101 -0
- data/lib/puppet/interface/documentation.rb +342 -0
- data/lib/puppet/interface/face_collection.rb +125 -0
- data/lib/puppet/interface/option.rb +150 -0
- data/lib/puppet/interface/option_builder.rb +93 -0
- data/lib/puppet/interface/option_manager.rb +99 -0
- data/lib/puppet/loaders.rb +19 -0
- data/lib/puppet/metatype/manager.rb +184 -0
- data/lib/puppet/module.rb +339 -0
- data/lib/puppet/module_tool.rb +194 -0
- data/lib/puppet/module_tool/applications.rb +14 -0
- data/lib/puppet/module_tool/applications/application.rb +98 -0
- data/lib/puppet/module_tool/applications/builder.rb +148 -0
- data/lib/puppet/module_tool/applications/checksummer.rb +62 -0
- data/lib/puppet/module_tool/applications/installer.rb +353 -0
- data/lib/puppet/module_tool/applications/searcher.rb +29 -0
- data/lib/puppet/module_tool/applications/uninstaller.rb +117 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +100 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +279 -0
- data/lib/puppet/module_tool/checksums.rb +49 -0
- data/lib/puppet/module_tool/contents_description.rb +84 -0
- data/lib/puppet/module_tool/dependency.rb +42 -0
- data/lib/puppet/module_tool/errors.rb +11 -0
- data/lib/puppet/module_tool/errors/base.rb +15 -0
- data/lib/puppet/module_tool/errors/installer.rb +95 -0
- data/lib/puppet/module_tool/errors/shared.rb +188 -0
- data/lib/puppet/module_tool/errors/uninstaller.rb +45 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +63 -0
- data/lib/puppet/module_tool/install_directory.rb +45 -0
- data/lib/puppet/module_tool/installed_modules.rb +98 -0
- data/lib/puppet/module_tool/local_tarball.rb +90 -0
- data/lib/puppet/module_tool/metadata.rb +209 -0
- data/lib/puppet/module_tool/modulefile.rb +78 -0
- data/lib/puppet/module_tool/shared_behaviors.rb +180 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +79 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +18 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +7 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +12 -0
- data/lib/puppet/module_tool/tar.rb +17 -0
- data/lib/puppet/module_tool/tar/gnu.rb +19 -0
- data/lib/puppet/module_tool/tar/mini.rb +53 -0
- data/lib/puppet/network.rb +3 -0
- data/lib/puppet/network/auth_config_parser.rb +84 -0
- data/lib/puppet/network/authconfig.rb +76 -0
- data/lib/puppet/network/authentication.rb +35 -0
- data/lib/puppet/network/authorization.rb +34 -0
- data/lib/puppet/network/authstore.rb +282 -0
- data/lib/puppet/network/client_request.rb +29 -0
- data/lib/puppet/network/format.rb +110 -0
- data/lib/puppet/network/format_handler.rb +105 -0
- data/lib/puppet/network/format_support.rb +124 -0
- data/lib/puppet/network/formats.rb +216 -0
- data/lib/puppet/network/http.rb +20 -0
- data/lib/puppet/network/http/api.rb +2 -0
- data/lib/puppet/network/http/api/v1.rb +222 -0
- data/lib/puppet/network/http/api/v2.rb +32 -0
- data/lib/puppet/network/http/api/v2/authorization.rb +15 -0
- data/lib/puppet/network/http/api/v2/environments.rb +35 -0
- data/lib/puppet/network/http/compression.rb +114 -0
- data/lib/puppet/network/http/connection.rb +240 -0
- data/lib/puppet/network/http/error.rb +69 -0
- data/lib/puppet/network/http/factory.rb +44 -0
- data/lib/puppet/network/http/handler.rb +186 -0
- data/lib/puppet/network/http/issues.rb +11 -0
- data/lib/puppet/network/http/memory_response.rb +13 -0
- 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.rb +33 -0
- data/lib/puppet/network/http/rack/rest.rb +138 -0
- 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 +100 -0
- data/lib/puppet/network/http/session.rb +17 -0
- data/lib/puppet/network/http/site.rb +39 -0
- data/lib/puppet/network/http/webrick.rb +119 -0
- data/lib/puppet/network/http/webrick/rest.rb +104 -0
- data/lib/puppet/network/http_pool.rb +61 -0
- data/lib/puppet/network/resolver.rb +86 -0
- data/lib/puppet/network/rest_controller.rb +2 -0
- data/lib/puppet/network/rights.rb +219 -0
- data/lib/puppet/network/server.rb +39 -0
- data/lib/puppet/node.rb +184 -0
- data/lib/puppet/node/environment.rb +595 -0
- data/lib/puppet/node/facts.rb +155 -0
- data/lib/puppet/parameter.rb +585 -0
- data/lib/puppet/parameter/boolean.rb +15 -0
- data/lib/puppet/parameter/package_options.rb +31 -0
- data/lib/puppet/parameter/path.rb +57 -0
- data/lib/puppet/parameter/value.rb +93 -0
- data/lib/puppet/parameter/value_collection.rb +211 -0
- data/lib/puppet/parser.rb +7 -0
- data/lib/puppet/parser/ast.rb +129 -0
- data/lib/puppet/parser/ast/arithmetic_operator.rb +91 -0
- data/lib/puppet/parser/ast/astarray.rb +50 -0
- data/lib/puppet/parser/ast/asthash.rb +37 -0
- data/lib/puppet/parser/ast/block_expression.rb +40 -0
- data/lib/puppet/parser/ast/boolean_operator.rb +46 -0
- data/lib/puppet/parser/ast/branch.rb +22 -0
- data/lib/puppet/parser/ast/caseopt.rb +52 -0
- data/lib/puppet/parser/ast/casestatement.rb +41 -0
- data/lib/puppet/parser/ast/collection.rb +53 -0
- data/lib/puppet/parser/ast/collexpr.rb +109 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +38 -0
- data/lib/puppet/parser/ast/definition.rb +17 -0
- data/lib/puppet/parser/ast/else.rb +22 -0
- data/lib/puppet/parser/ast/function.rb +59 -0
- data/lib/puppet/parser/ast/hostclass.rb +29 -0
- data/lib/puppet/parser/ast/ifstatement.rb +34 -0
- data/lib/puppet/parser/ast/in_operator.rb +24 -0
- data/lib/puppet/parser/ast/lambda.rb +135 -0
- data/lib/puppet/parser/ast/leaf.rb +232 -0
- data/lib/puppet/parser/ast/match_operator.rb +28 -0
- data/lib/puppet/parser/ast/method_call.rb +77 -0
- data/lib/puppet/parser/ast/minus.rb +23 -0
- data/lib/puppet/parser/ast/node.rb +25 -0
- data/lib/puppet/parser/ast/nop.rb +11 -0
- data/lib/puppet/parser/ast/not.rb +19 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +252 -0
- data/lib/puppet/parser/ast/relationship.rb +47 -0
- data/lib/puppet/parser/ast/resource.rb +67 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +24 -0
- data/lib/puppet/parser/ast/resource_instance.rb +9 -0
- data/lib/puppet/parser/ast/resource_override.rb +62 -0
- data/lib/puppet/parser/ast/resource_reference.rb +28 -0
- data/lib/puppet/parser/ast/resourceparam.rb +27 -0
- data/lib/puppet/parser/ast/selector.rb +50 -0
- data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
- data/lib/puppet/parser/ast/vardef.rb +38 -0
- data/lib/puppet/parser/code_merger.rb +13 -0
- data/lib/puppet/parser/collector.rb +177 -0
- data/lib/puppet/parser/compiler.rb +626 -0
- data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
- data/lib/puppet/parser/files.rb +137 -0
- data/lib/puppet/parser/functions.rb +262 -0
- data/lib/puppet/parser/functions/assert_type.rb +31 -0
- data/lib/puppet/parser/functions/contain.rb +36 -0
- data/lib/puppet/parser/functions/create_resources.rb +82 -0
- data/lib/puppet/parser/functions/defined.rb +73 -0
- data/lib/puppet/parser/functions/digest.rb +5 -0
- data/lib/puppet/parser/functions/each.rb +48 -0
- data/lib/puppet/parser/functions/epp.rb +45 -0
- data/lib/puppet/parser/functions/extlookup.rb +153 -0
- data/lib/puppet/parser/functions/fail.rb +4 -0
- data/lib/puppet/parser/functions/file.rb +31 -0
- data/lib/puppet/parser/functions/filter.rb +44 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +21 -0
- data/lib/puppet/parser/functions/generate.rb +37 -0
- data/lib/puppet/parser/functions/hiera.rb +26 -0
- data/lib/puppet/parser/functions/hiera_array.rb +27 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +29 -0
- data/lib/puppet/parser/functions/hiera_include.rb +44 -0
- data/lib/puppet/parser/functions/include.rb +35 -0
- data/lib/puppet/parser/functions/inline_epp.rb +76 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/lookup.rb +144 -0
- data/lib/puppet/parser/functions/map.rb +43 -0
- data/lib/puppet/parser/functions/match.rb +28 -0
- data/lib/puppet/parser/functions/md5.rb +5 -0
- data/lib/puppet/parser/functions/realize.rb +14 -0
- data/lib/puppet/parser/functions/reduce.rb +71 -0
- data/lib/puppet/parser/functions/regsubst.rb +116 -0
- data/lib/puppet/parser/functions/require.rb +61 -0
- data/lib/puppet/parser/functions/search.rb +12 -0
- data/lib/puppet/parser/functions/sha1.rb +5 -0
- data/lib/puppet/parser/functions/shellquote.rb +61 -0
- data/lib/puppet/parser/functions/slice.rb +48 -0
- data/lib/puppet/parser/functions/split.rb +28 -0
- data/lib/puppet/parser/functions/sprintf.rb +36 -0
- data/lib/puppet/parser/functions/tag.rb +6 -0
- data/lib/puppet/parser/functions/tagged.rb +18 -0
- data/lib/puppet/parser/functions/template.rb +30 -0
- data/lib/puppet/parser/functions/versioncmp.rb +30 -0
- data/lib/puppet/parser/functions/with.rb +21 -0
- data/lib/puppet/parser/grammar.ra +806 -0
- data/lib/puppet/parser/lexer.rb +608 -0
- data/lib/puppet/parser/makefile +8 -0
- data/lib/puppet/parser/methods.rb +69 -0
- data/lib/puppet/parser/parser.rb +2559 -0
- data/lib/puppet/parser/parser_factory.rb +76 -0
- data/lib/puppet/parser/parser_support.rb +195 -0
- data/lib/puppet/parser/relationship.rb +62 -0
- data/lib/puppet/parser/resource.rb +277 -0
- data/lib/puppet/parser/resource/param.rb +25 -0
- data/lib/puppet/parser/scope.rb +906 -0
- data/lib/puppet/parser/templatewrapper.rb +127 -0
- data/lib/puppet/parser/type_loader.rb +152 -0
- data/lib/puppet/parser/yaml_trimmer.rb +7 -0
- data/lib/puppet/pops.rb +118 -0
- data/lib/puppet/pops/adaptable.rb +190 -0
- data/lib/puppet/pops/adapters.rb +109 -0
- data/lib/puppet/pops/binder/binder.rb +393 -0
- data/lib/puppet/pops/binder/binder_issues.rb +122 -0
- data/lib/puppet/pops/binder/bindings_checker.rb +197 -0
- data/lib/puppet/pops/binder/bindings_composer.rb +175 -0
- data/lib/puppet/pops/binder/bindings_factory.rb +805 -0
- data/lib/puppet/pops/binder/bindings_label_provider.rb +43 -0
- data/lib/puppet/pops/binder/bindings_loader.rb +88 -0
- data/lib/puppet/pops/binder/bindings_model.rb +68 -0
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +187 -0
- data/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
- data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
- data/lib/puppet/pops/binder/config/binder_config.rb +107 -0
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +142 -0
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
- data/lib/puppet/pops/binder/config/issues.rb +86 -0
- data/lib/puppet/pops/binder/injector.rb +767 -0
- data/lib/puppet/pops/binder/injector_entry.rb +57 -0
- data/lib/puppet/pops/binder/key_factory.rb +67 -0
- data/lib/puppet/pops/binder/lookup.rb +199 -0
- data/lib/puppet/pops/binder/producers.rb +826 -0
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +53 -0
- data/lib/puppet/pops/binder/system_bindings.rb +60 -0
- data/lib/puppet/pops/containment.rb +104 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +604 -0
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
- data/lib/puppet/pops/evaluator/callable_signature.rb +100 -0
- data/lib/puppet/pops/evaluator/closure.rb +228 -0
- data/lib/puppet/pops/evaluator/compare_operator.rb +172 -0
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +88 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1115 -0
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +157 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +573 -0
- data/lib/puppet/pops/functions/dispatch.rb +76 -0
- data/lib/puppet/pops/functions/dispatcher.rb +70 -0
- data/lib/puppet/pops/functions/function.rb +77 -0
- data/lib/puppet/pops/issue_reporter.rb +87 -0
- data/lib/puppet/pops/issues.rb +548 -0
- data/lib/puppet/pops/label_provider.rb +76 -0
- data/lib/puppet/pops/loader/base_loader.rb +102 -0
- data/lib/puppet/pops/loader/dependency_loader.rb +60 -0
- data/lib/puppet/pops/loader/gem_support.rb +49 -0
- data/lib/puppet/pops/loader/loader.rb +180 -0
- data/lib/puppet/pops/loader/loader_paths.rb +118 -0
- data/lib/puppet/pops/loader/module_loaders.rb +242 -0
- data/lib/puppet/pops/loader/null_loader.rb +44 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +34 -0
- data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
- data/lib/puppet/pops/loader/static_loader.rb +79 -0
- data/lib/puppet/pops/loader/uri_helper.rb +22 -0
- data/lib/puppet/pops/loaders.rb +240 -0
- data/lib/puppet/pops/model/ast_transformer.rb +643 -0
- data/lib/puppet/pops/model/ast_tree_dumper.rb +386 -0
- data/lib/puppet/pops/model/factory.rb +1040 -0
- data/lib/puppet/pops/model/model.rb +114 -0
- data/lib/puppet/pops/model/model_label_provider.rb +106 -0
- data/lib/puppet/pops/model/model_meta.rb +576 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +407 -0
- data/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/lib/puppet/pops/parser/code_merger.rb +17 -0
- data/lib/puppet/pops/parser/egrammar.ra +757 -0
- data/lib/puppet/pops/parser/eparser.rb +2655 -0
- 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 +140 -0
- data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
- data/lib/puppet/pops/parser/interpolation_support.rb +231 -0
- data/lib/puppet/pops/parser/lexer2.rb +696 -0
- data/lib/puppet/pops/parser/lexer_support.rb +113 -0
- data/lib/puppet/pops/parser/locatable.rb +23 -0
- data/lib/puppet/pops/parser/locator.rb +291 -0
- data/lib/puppet/pops/parser/parser_support.rb +213 -0
- data/lib/puppet/pops/parser/slurp_support.rb +95 -0
- data/lib/puppet/pops/patterns.rb +44 -0
- data/lib/puppet/pops/semantic_error.rb +17 -0
- data/lib/puppet/pops/types/class_loader.rb +129 -0
- data/lib/puppet/pops/types/enumeration.rb +34 -0
- data/lib/puppet/pops/types/type_calculator.rb +1698 -0
- data/lib/puppet/pops/types/type_factory.rb +432 -0
- data/lib/puppet/pops/types/type_parser.rb +475 -0
- data/lib/puppet/pops/types/types.rb +397 -0
- data/lib/puppet/pops/types/types_meta.rb +223 -0
- data/lib/puppet/pops/utils.rb +122 -0
- data/lib/puppet/pops/validation.rb +432 -0
- data/lib/puppet/pops/validation/checker4_0.rb +760 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +30 -0
- data/lib/puppet/pops/visitable.rb +6 -0
- data/lib/puppet/pops/visitor.rb +89 -0
- data/lib/puppet/property.rb +617 -0
- data/lib/puppet/property/boolean.rb +7 -0
- data/lib/puppet/property/ensure.rb +105 -0
- data/lib/puppet/property/keyvalue.rb +95 -0
- data/lib/puppet/property/list.rb +78 -0
- data/lib/puppet/property/ordered_list.rb +29 -0
- data/lib/puppet/provider.rb +651 -0
- data/lib/puppet/provider/aixobject.rb +392 -0
- data/lib/puppet/provider/augeas/augeas.rb +509 -0
- data/lib/puppet/provider/cisco.rb +9 -0
- data/lib/puppet/provider/command.rb +25 -0
- data/lib/puppet/provider/computer/computer.rb +20 -0
- data/lib/puppet/provider/confine.rb +6 -0
- data/lib/puppet/provider/cron/crontab.rb +260 -0
- data/lib/puppet/provider/exec.rb +100 -0
- data/lib/puppet/provider/exec/posix.rb +48 -0
- data/lib/puppet/provider/exec/shell.rb +25 -0
- data/lib/puppet/provider/exec/windows.rb +55 -0
- data/lib/puppet/provider/file/posix.rb +136 -0
- data/lib/puppet/provider/file/windows.rb +104 -0
- data/lib/puppet/provider/group/aix.rb +141 -0
- data/lib/puppet/provider/group/directoryservice.rb +12 -0
- data/lib/puppet/provider/group/groupadd.rb +85 -0
- data/lib/puppet/provider/group/ldap.rb +45 -0
- data/lib/puppet/provider/group/pw.rb +48 -0
- data/lib/puppet/provider/group/windows_adsi.rb +86 -0
- data/lib/puppet/provider/host/parsed.rb +44 -0
- data/lib/puppet/provider/interface/cisco.rb +27 -0
- data/lib/puppet/provider/ldap.rb +137 -0
- data/lib/puppet/provider/macauthorization/macauthorization.rb +309 -0
- data/lib/puppet/provider/mailalias/aliases.rb +39 -0
- data/lib/puppet/provider/maillist/mailman.rb +108 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +172 -0
- data/lib/puppet/provider/mount.rb +58 -0
- data/lib/puppet/provider/mount/parsed.rb +123 -0
- data/lib/puppet/provider/naginator.rb +63 -0
- data/lib/puppet/provider/nameservice.rb +292 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +588 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +33 -0
- data/lib/puppet/provider/nameservice/pw.rb +21 -0
- data/lib/puppet/provider/network_device.rb +68 -0
- data/lib/puppet/provider/package.rb +52 -0
- data/lib/puppet/provider/package/aix.rb +152 -0
- data/lib/puppet/provider/package/appdmg.rb +106 -0
- data/lib/puppet/provider/package/apple.rb +47 -0
- data/lib/puppet/provider/package/apt.rb +116 -0
- data/lib/puppet/provider/package/aptitude.rb +29 -0
- data/lib/puppet/provider/package/aptrpm.rb +83 -0
- data/lib/puppet/provider/package/blastwave.rb +111 -0
- data/lib/puppet/provider/package/dpkg.rb +165 -0
- data/lib/puppet/provider/package/fink.rb +79 -0
- data/lib/puppet/provider/package/freebsd.rb +47 -0
- data/lib/puppet/provider/package/gem.rb +135 -0
- data/lib/puppet/provider/package/hpux.rb +44 -0
- data/lib/puppet/provider/package/macports.rb +107 -0
- data/lib/puppet/provider/package/msi.rb +125 -0
- data/lib/puppet/provider/package/nim.rb +280 -0
- data/lib/puppet/provider/package/openbsd.rb +228 -0
- data/lib/puppet/provider/package/opkg.rb +76 -0
- data/lib/puppet/provider/package/pacman.rb +234 -0
- data/lib/puppet/provider/package/pip.rb +119 -0
- data/lib/puppet/provider/package/pkg.rb +190 -0
- data/lib/puppet/provider/package/pkgdmg.rb +149 -0
- data/lib/puppet/provider/package/pkgin.rb +87 -0
- data/lib/puppet/provider/package/pkgutil.rb +186 -0
- data/lib/puppet/provider/package/portage.rb +149 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/portupgrade.rb +241 -0
- data/lib/puppet/provider/package/rpm.rb +187 -0
- data/lib/puppet/provider/package/rug.rb +52 -0
- data/lib/puppet/provider/package/sun.rb +132 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +40 -0
- data/lib/puppet/provider/package/urpmi.rb +55 -0
- data/lib/puppet/provider/package/windows.rb +113 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +70 -0
- data/lib/puppet/provider/package/windows/msi_package.rb +62 -0
- data/lib/puppet/provider/package/windows/package.rb +92 -0
- data/lib/puppet/provider/package/yum.rb +199 -0
- data/lib/puppet/provider/package/yumhelper.py +159 -0
- data/lib/puppet/provider/package/zypper.rb +90 -0
- data/lib/puppet/provider/parsedfile.rb +459 -0
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +559 -0
- data/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
- data/lib/puppet/provider/selmodule/semodule.rb +134 -0
- data/lib/puppet/provider/service/base.rb +106 -0
- data/lib/puppet/provider/service/bsd.rb +51 -0
- data/lib/puppet/provider/service/daemontools.rb +194 -0
- data/lib/puppet/provider/service/debian.rb +64 -0
- data/lib/puppet/provider/service/freebsd.rb +143 -0
- data/lib/puppet/provider/service/gentoo.rb +45 -0
- data/lib/puppet/provider/service/init.rb +169 -0
- data/lib/puppet/provider/service/launchd.rb +353 -0
- data/lib/puppet/provider/service/openbsd.rb +342 -0
- data/lib/puppet/provider/service/openrc.rb +71 -0
- data/lib/puppet/provider/service/openwrt.rb +36 -0
- data/lib/puppet/provider/service/redhat.rb +67 -0
- data/lib/puppet/provider/service/runit.rb +111 -0
- data/lib/puppet/provider/service/service.rb +42 -0
- data/lib/puppet/provider/service/smf.rb +116 -0
- data/lib/puppet/provider/service/src.rb +120 -0
- data/lib/puppet/provider/service/systemd.rb +65 -0
- data/lib/puppet/provider/service/upstart.rb +355 -0
- data/lib/puppet/provider/service/windows.rb +106 -0
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +89 -0
- data/lib/puppet/provider/sshkey/parsed.rb +40 -0
- data/lib/puppet/provider/user/aix.rb +369 -0
- data/lib/puppet/provider/user/directoryservice.rb +685 -0
- data/lib/puppet/provider/user/hpux.rb +66 -0
- data/lib/puppet/provider/user/ldap.rb +128 -0
- data/lib/puppet/provider/user/pw.rb +97 -0
- data/lib/puppet/provider/user/user_role_add.rb +210 -0
- data/lib/puppet/provider/user/useradd.rb +231 -0
- data/lib/puppet/provider/user/windows_adsi.rb +99 -0
- data/lib/puppet/provider/vlan/cisco.rb +28 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +300 -0
- data/lib/puppet/provider/zfs/zfs.rb +83 -0
- data/lib/puppet/provider/zone/solaris.rb +361 -0
- data/lib/puppet/provider/zpool/zpool.rb +120 -0
- data/lib/puppet/rails.rb +139 -0
- data/lib/puppet/rails/benchmark.rb +63 -0
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
- data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
- data/lib/puppet/rails/database/schema.rb +136 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +10 -0
- data/lib/puppet/rails/host.rb +258 -0
- data/lib/puppet/rails/inventory_fact.rb +5 -0
- data/lib/puppet/rails/inventory_node.rb +43 -0
- data/lib/puppet/rails/param_name.rb +25 -0
- data/lib/puppet/rails/param_value.rb +74 -0
- data/lib/puppet/rails/puppet_tag.rb +10 -0
- data/lib/puppet/rails/resource.rb +235 -0
- data/lib/puppet/rails/resource_tag.rb +26 -0
- data/lib/puppet/rails/source_file.rb +8 -0
- data/lib/puppet/reference/configuration.rb +73 -0
- data/lib/puppet/reference/function.rb +17 -0
- data/lib/puppet/reference/indirection.rb +71 -0
- data/lib/puppet/reference/metaparameter.rb +44 -0
- data/lib/puppet/reference/providers.rb +119 -0
- data/lib/puppet/reference/report.rb +23 -0
- data/lib/puppet/reference/type.rb +116 -0
- data/lib/puppet/relationship.rb +103 -0
- data/lib/puppet/reports.rb +89 -0
- data/lib/puppet/reports/http.rb +31 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +128 -0
- data/lib/puppet/reports/store.rb +68 -0
- data/lib/puppet/reports/tagmail.rb +179 -0
- data/lib/puppet/resource.rb +610 -0
- data/lib/puppet/resource/catalog.rb +554 -0
- data/lib/puppet/resource/status.rb +155 -0
- data/lib/puppet/resource/type.rb +413 -0
- data/lib/puppet/resource/type_collection.rb +230 -0
- data/lib/puppet/resource/type_collection_helper.rb +7 -0
- data/lib/puppet/run.rb +109 -0
- data/lib/puppet/scheduler.rb +16 -0
- data/lib/puppet/scheduler/job.rb +53 -0
- data/lib/puppet/scheduler/scheduler.rb +44 -0
- data/lib/puppet/scheduler/splay_job.rb +32 -0
- data/lib/puppet/scheduler/timer.rb +13 -0
- data/lib/puppet/settings.rb +1392 -0
- data/lib/puppet/settings/array_setting.rb +17 -0
- data/lib/puppet/settings/autosign_setting.rb +22 -0
- data/lib/puppet/settings/base_setting.rb +195 -0
- data/lib/puppet/settings/boolean_setting.rb +32 -0
- data/lib/puppet/settings/config_file.rb +139 -0
- data/lib/puppet/settings/directory_setting.rb +12 -0
- data/lib/puppet/settings/duration_setting.rb +32 -0
- data/lib/puppet/settings/enum_setting.rb +16 -0
- data/lib/puppet/settings/environment_conf.rb +175 -0
- data/lib/puppet/settings/errors.rb +11 -0
- data/lib/puppet/settings/file_or_directory_setting.rb +34 -0
- data/lib/puppet/settings/file_setting.rb +234 -0
- data/lib/puppet/settings/ini_file.rb +171 -0
- data/lib/puppet/settings/path_setting.rb +8 -0
- data/lib/puppet/settings/priority_setting.rb +42 -0
- data/lib/puppet/settings/string_setting.rb +9 -0
- data/lib/puppet/settings/terminus_setting.rb +14 -0
- data/lib/puppet/settings/ttl_setting.rb +48 -0
- data/lib/puppet/settings/value_translator.rb +15 -0
- data/lib/puppet/ssl.rb +13 -0
- data/lib/puppet/ssl/base.rb +140 -0
- data/lib/puppet/ssl/certificate.rb +65 -0
- data/lib/puppet/ssl/certificate_authority.rb +517 -0
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +45 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +178 -0
- data/lib/puppet/ssl/certificate_factory.rb +219 -0
- data/lib/puppet/ssl/certificate_request.rb +299 -0
- data/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +110 -0
- data/lib/puppet/ssl/certificate_signer.rb +22 -0
- data/lib/puppet/ssl/configuration.rb +64 -0
- data/lib/puppet/ssl/digest.rb +20 -0
- data/lib/puppet/ssl/host.rb +372 -0
- data/lib/puppet/ssl/inventory.rb +55 -0
- data/lib/puppet/ssl/key.rb +59 -0
- data/lib/puppet/ssl/oids.rb +78 -0
- data/lib/puppet/ssl/validator.rb +60 -0
- data/lib/puppet/ssl/validator/default_validator.rb +154 -0
- data/lib/puppet/ssl/validator/no_validator.rb +20 -0
- data/lib/puppet/status.rb +45 -0
- data/lib/puppet/test/test_helper.rb +243 -0
- data/lib/puppet/transaction.rb +369 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
- data/lib/puppet/transaction/event.rb +107 -0
- data/lib/puppet/transaction/event_manager.rb +122 -0
- data/lib/puppet/transaction/report.rb +383 -0
- data/lib/puppet/transaction/resource_harness.rb +251 -0
- data/lib/puppet/type.rb +2452 -0
- data/lib/puppet/type/augeas.rb +201 -0
- data/lib/puppet/type/component.rb +77 -0
- data/lib/puppet/type/computer.rb +66 -0
- data/lib/puppet/type/cron.rb +488 -0
- data/lib/puppet/type/exec.rb +592 -0
- data/lib/puppet/type/file.rb +933 -0
- data/lib/puppet/type/file/checksum.rb +43 -0
- data/lib/puppet/type/file/content.rb +241 -0
- data/lib/puppet/type/file/ctime.rb +20 -0
- data/lib/puppet/type/file/ensure.rb +189 -0
- data/lib/puppet/type/file/group.rb +41 -0
- data/lib/puppet/type/file/mode.rb +168 -0
- data/lib/puppet/type/file/mtime.rb +18 -0
- data/lib/puppet/type/file/owner.rb +44 -0
- data/lib/puppet/type/file/selcontext.rb +124 -0
- data/lib/puppet/type/file/source.rb +259 -0
- data/lib/puppet/type/file/target.rb +87 -0
- data/lib/puppet/type/file/type.rb +19 -0
- data/lib/puppet/type/filebucket.rb +122 -0
- data/lib/puppet/type/group.rb +188 -0
- data/lib/puppet/type/host.rb +86 -0
- data/lib/puppet/type/interface.rb +116 -0
- data/lib/puppet/type/k5login.rb +88 -0
- data/lib/puppet/type/macauthorization.rb +167 -0
- data/lib/puppet/type/mailalias.rb +48 -0
- data/lib/puppet/type/maillist.rb +62 -0
- data/lib/puppet/type/mcx.rb +98 -0
- data/lib/puppet/type/mount.rb +286 -0
- data/lib/puppet/type/nagios_command.rb +3 -0
- data/lib/puppet/type/nagios_contact.rb +3 -0
- data/lib/puppet/type/nagios_contactgroup.rb +3 -0
- data/lib/puppet/type/nagios_host.rb +3 -0
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/nagios_hostescalation.rb +3 -0
- data/lib/puppet/type/nagios_hostextinfo.rb +3 -0
- data/lib/puppet/type/nagios_hostgroup.rb +3 -0
- data/lib/puppet/type/nagios_service.rb +3 -0
- data/lib/puppet/type/nagios_servicedependency.rb +3 -0
- data/lib/puppet/type/nagios_serviceescalation.rb +3 -0
- data/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
- data/lib/puppet/type/nagios_servicegroup.rb +3 -0
- data/lib/puppet/type/nagios_timeperiod.rb +3 -0
- data/lib/puppet/type/notify.rb +44 -0
- data/lib/puppet/type/package.rb +466 -0
- data/lib/puppet/type/resources.rb +187 -0
- data/lib/puppet/type/router.rb +17 -0
- data/lib/puppet/type/schedule.rb +469 -0
- data/lib/puppet/type/scheduled_task.rb +169 -0
- data/lib/puppet/type/selboolean.rb +26 -0
- data/lib/puppet/type/selmodule.rb +59 -0
- data/lib/puppet/type/service.rb +234 -0
- data/lib/puppet/type/ssh_authorized_key.rb +153 -0
- data/lib/puppet/type/sshkey.rb +73 -0
- data/lib/puppet/type/stage.rb +27 -0
- data/lib/puppet/type/tidy.rb +324 -0
- data/lib/puppet/type/user.rb +688 -0
- data/lib/puppet/type/vlan.rb +26 -0
- data/lib/puppet/type/whit.rb +34 -0
- data/lib/puppet/type/yumrepo.rb +363 -0
- data/lib/puppet/type/zfs.rb +150 -0
- data/lib/puppet/type/zone.rb +382 -0
- data/lib/puppet/type/zpool.rb +91 -0
- data/lib/puppet/util.rb +554 -0
- data/lib/puppet/util/autoload.rb +227 -0
- data/lib/puppet/util/backups.rb +86 -0
- data/lib/puppet/util/cacher.rb +74 -0
- data/lib/puppet/util/checksums.rb +202 -0
- data/lib/puppet/util/classgen.rb +236 -0
- data/lib/puppet/util/colors.rb +217 -0
- data/lib/puppet/util/command_line.rb +199 -0
- data/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
- data/lib/puppet/util/command_line/trollop.rb +824 -0
- data/lib/puppet/util/constant_inflector.rb +24 -0
- data/lib/puppet/util/diff.rb +79 -0
- data/lib/puppet/util/docs.rb +128 -0
- data/lib/puppet/util/errors.rb +106 -0
- data/lib/puppet/util/execution.rb +327 -0
- data/lib/puppet/util/execution_stub.rb +26 -0
- data/lib/puppet/util/feature.rb +97 -0
- data/lib/puppet/util/file_watcher.rb +28 -0
- data/lib/puppet/util/fileparsing.rb +376 -0
- data/lib/puppet/util/filetype.rb +303 -0
- data/lib/puppet/util/http_proxy.rb +65 -0
- data/lib/puppet/util/inifile.rb +341 -0
- data/lib/puppet/util/inline_docs.rb +26 -0
- data/lib/puppet/util/instance_loader.rb +81 -0
- data/lib/puppet/util/instrumentation.rb +152 -0
- data/lib/puppet/util/instrumentation/data.rb +46 -0
- data/lib/puppet/util/instrumentation/indirection_probe.rb +41 -0
- data/lib/puppet/util/instrumentation/instrumentable.rb +136 -0
- data/lib/puppet/util/instrumentation/listener.rb +72 -0
- data/lib/puppet/util/instrumentation/listeners/log.rb +23 -0
- data/lib/puppet/util/instrumentation/listeners/performance.rb +24 -0
- data/lib/puppet/util/json_lockfile.rb +44 -0
- data/lib/puppet/util/ldap.rb +2 -0
- data/lib/puppet/util/ldap/connection.rb +71 -0
- data/lib/puppet/util/ldap/generator.rb +42 -0
- data/lib/puppet/util/ldap/manager.rb +278 -0
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +12 -0
- data/lib/puppet/util/limits.rb +12 -0
- data/lib/puppet/util/lockfile.rb +66 -0
- data/lib/puppet/util/log.rb +343 -0
- data/lib/puppet/util/log/destination.rb +49 -0
- data/lib/puppet/util/log/destinations.rb +232 -0
- data/lib/puppet/util/log/rate_limited_logger.rb +40 -0
- data/lib/puppet/util/logging.rb +181 -0
- data/lib/puppet/util/metaid.rb +21 -0
- data/lib/puppet/util/methodhelper.rb +32 -0
- data/lib/puppet/util/metric.rb +210 -0
- data/lib/puppet/util/monkey_patches.rb +225 -0
- data/lib/puppet/util/monkey_patches/lines.rb +13 -0
- data/lib/puppet/util/nagios_maker.rb +85 -0
- data/lib/puppet/util/network_device.rb +17 -0
- data/lib/puppet/util/network_device/base.rb +27 -0
- data/lib/puppet/util/network_device/cisco.rb +4 -0
- data/lib/puppet/util/network_device/cisco/device.rb +267 -0
- data/lib/puppet/util/network_device/cisco/facts.rb +72 -0
- data/lib/puppet/util/network_device/cisco/interface.rb +82 -0
- data/lib/puppet/util/network_device/config.rb +93 -0
- data/lib/puppet/util/network_device/ipcalc.rb +68 -0
- data/lib/puppet/util/network_device/transport.rb +5 -0
- data/lib/puppet/util/network_device/transport/base.rb +26 -0
- data/lib/puppet/util/network_device/transport/ssh.rb +122 -0
- data/lib/puppet/util/network_device/transport/telnet.rb +44 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +62 -0
- data/lib/puppet/util/platform.rb +22 -0
- data/lib/puppet/util/plugins.rb +82 -0
- data/lib/puppet/util/posix.rb +137 -0
- data/lib/puppet/util/profiler.rb +53 -0
- 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 +48 -0
- data/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/lib/puppet/util/profiler/wall_clock.rb +35 -0
- data/lib/puppet/util/provider_features.rb +184 -0
- data/lib/puppet/util/pson.rb +13 -0
- data/lib/puppet/util/queue.rb +96 -0
- data/lib/puppet/util/queue/stomp.rb +60 -0
- data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
- data/lib/puppet/util/rails/collection_merger.rb +17 -0
- data/lib/puppet/util/rails/reference_serializer.rb +32 -0
- data/lib/puppet/util/rdoc.rb +96 -0
- data/lib/puppet/util/rdoc/code_objects.rb +334 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +910 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
- data/lib/puppet/util/rdoc/parser.rb +22 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
- data/lib/puppet/util/reference.rb +124 -0
- data/lib/puppet/util/resource_template.rb +61 -0
- data/lib/puppet/util/retryaction.rb +47 -0
- data/lib/puppet/util/rubygems.rb +75 -0
- data/lib/puppet/util/run_mode.rb +82 -0
- data/lib/puppet/util/selinux.rb +222 -0
- data/lib/puppet/util/ssl.rb +53 -0
- data/lib/puppet/util/storage.rb +89 -0
- data/lib/puppet/util/suidmanager.rb +191 -0
- data/lib/puppet/util/symbolic_file_mode.rb +144 -0
- data/lib/puppet/util/tag_set.rb +41 -0
- data/lib/puppet/util/tagging.rb +56 -0
- data/lib/puppet/util/terminal.rb +16 -0
- data/lib/puppet/util/user_attr.rb +21 -0
- data/lib/puppet/util/warnings.rb +32 -0
- data/lib/puppet/util/watched_file.rb +37 -0
- data/lib/puppet/util/watcher.rb +17 -0
- data/lib/puppet/util/watcher/change_watcher.rb +33 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
- data/lib/puppet/util/watcher/timer.rb +19 -0
- data/lib/puppet/util/windows.rb +28 -0
- data/lib/puppet/util/windows/access_control_entry.rb +84 -0
- data/lib/puppet/util/windows/access_control_list.rb +113 -0
- data/lib/puppet/util/windows/adsi.rb +430 -0
- 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 +83 -0
- data/lib/puppet/util/windows/file.rb +401 -0
- data/lib/puppet/util/windows/process.rb +354 -0
- data/lib/puppet/util/windows/registry.rb +80 -0
- data/lib/puppet/util/windows/root_certs.rb +108 -0
- data/lib/puppet/util/windows/security.rb +920 -0
- data/lib/puppet/util/windows/security_descriptor.rb +62 -0
- data/lib/puppet/util/windows/sid.rb +162 -0
- data/lib/puppet/util/windows/string.rb +16 -0
- data/lib/puppet/util/windows/taskscheduler.rb +1241 -0
- data/lib/puppet/util/windows/user.rb +292 -0
- data/lib/puppet/util/yaml.rb +24 -0
- data/lib/puppet/util/zaml.rb +419 -0
- data/lib/puppet/vendor.rb +57 -0
- data/lib/puppet/vendor/load_pathspec.rb +1 -0
- data/lib/puppet/vendor/load_rgen.rb +1 -0
- data/lib/puppet/vendor/load_safe_yaml.rb +1 -0
- data/lib/puppet/vendor/load_semantic.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 +9 -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/CHANGES.md +104 -0
- data/lib/puppet/vendor/safe_yaml/Gemfile +11 -0
- data/lib/puppet/vendor/safe_yaml/LICENSE.txt +22 -0
- data/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/safe_yaml/README.md +179 -0
- data/lib/puppet/vendor/safe_yaml/Rakefile +6 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb +253 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/deep.rb +34 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/date.rb +27 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/hexadecimal.rb +12 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/sexagesimal.rb +26 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_handler.rb +92 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_resolver.rb +52 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/resolver.rb +94 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/safe_to_ruby_visitor.rb +17 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_hack.rb +36 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb +43 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_resolver.rb +38 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform.rb +41 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_boolean.rb +21 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_date.rb +11 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_float.rb +33 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_integer.rb +25 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_nil.rb +18 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_symbol.rb +13 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/transformation_map.rb +47 -0
- data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/version.rb +3 -0
- data/lib/puppet/vendor/safe_yaml/run_specs_all_ruby_versions.sh +21 -0
- data/lib/puppet/vendor/safe_yaml/safe_yaml.gemspec +18 -0
- data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.2.yaml +2 -0
- data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.3.yaml +2 -0
- data/lib/puppet/vendor/safe_yaml/spec/psych_resolver_spec.rb +10 -0
- data/lib/puppet/vendor/safe_yaml/spec/resolver_specs.rb +250 -0
- data/lib/puppet/vendor/safe_yaml/spec/safe_yaml_spec.rb +702 -0
- data/lib/puppet/vendor/safe_yaml/spec/spec_helper.rb +18 -0
- data/lib/puppet/vendor/safe_yaml/spec/support/exploitable_back_door.rb +29 -0
- data/lib/puppet/vendor/safe_yaml/spec/syck_resolver_spec.rb +10 -0
- data/lib/puppet/vendor/safe_yaml/spec/transform/base64_spec.rb +11 -0
- data/lib/puppet/vendor/safe_yaml/spec/transform/to_date_spec.rb +34 -0
- data/lib/puppet/vendor/safe_yaml/spec/transform/to_float_spec.rb +42 -0
- data/lib/puppet/vendor/safe_yaml/spec/transform/to_integer_spec.rb +59 -0
- data/lib/puppet/vendor/safe_yaml/spec/transform/to_symbol_spec.rb +49 -0
- data/lib/puppet/vendor/safe_yaml_patches.rb +9 -0
- data/lib/puppet/vendor/semantic/Gemfile +20 -0
- data/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/semantic/Rakefile +69 -0
- data/lib/puppet/vendor/semantic/lib/semantic.rb +7 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency.rb +181 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph.rb +60 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/graph_node.rb +117 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +46 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/source.rb +25 -0
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/unsatisfiable_graph.rb +31 -0
- data/lib/puppet/vendor/semantic/lib/semantic/version.rb +168 -0
- data/lib/puppet/vendor/semantic/lib/semantic/version_range.rb +424 -0
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +24 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +141 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +162 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +143 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +5 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +44 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +383 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +307 -0
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +608 -0
- data/lib/puppet/version.rb +89 -0
- data/lib/puppetx.rb +89 -0
- data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
- data/lib/puppetx/puppet/syntax_checker.rb +91 -0
- data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +37 -0
- data/lib/semver.rb +124 -0
- data/man/man5/puppet.conf.5 +1581 -0
- data/man/man8/extlookup2hiera.8 +23 -0
- data/man/man8/puppet-agent.8 +157 -0
- data/man/man8/puppet-apply.8 +80 -0
- data/man/man8/puppet-ca.8 +170 -0
- data/man/man8/puppet-catalog.8 +292 -0
- data/man/man8/puppet-cert.8 +97 -0
- data/man/man8/puppet-certificate.8 +238 -0
- data/man/man8/puppet-certificate_request.8 +168 -0
- data/man/man8/puppet-certificate_revocation_list.8 +165 -0
- data/man/man8/puppet-config.8 +76 -0
- data/man/man8/puppet-describe.8 +51 -0
- data/man/man8/puppet-device.8 +86 -0
- data/man/man8/puppet-doc.8 +119 -0
- data/man/man8/puppet-facts.8 +223 -0
- data/man/man8/puppet-file.8 +215 -0
- data/man/man8/puppet-filebucket.8 +81 -0
- data/man/man8/puppet-help.8 +64 -0
- data/man/man8/puppet-inspect.8 +36 -0
- data/man/man8/puppet-instrumentation_data.8 +141 -0
- data/man/man8/puppet-instrumentation_listener.8 +218 -0
- data/man/man8/puppet-instrumentation_probe.8 +203 -0
- data/man/man8/puppet-key.8 +129 -0
- data/man/man8/puppet-kick.8 +131 -0
- data/man/man8/puppet-man.8 +70 -0
- data/man/man8/puppet-master.8 +78 -0
- data/man/man8/puppet-module.8 +422 -0
- data/man/man8/puppet-node.8 +211 -0
- data/man/man8/puppet-parser.8 +73 -0
- data/man/man8/puppet-plugin.8 +73 -0
- data/man/man8/puppet-queue.8 +55 -0
- data/man/man8/puppet-report.8 +186 -0
- data/man/man8/puppet-resource.8 +84 -0
- data/man/man8/puppet-resource_type.8 +214 -0
- data/man/man8/puppet-secret_agent.8 +70 -0
- data/man/man8/puppet-status.8 +150 -0
- data/man/man8/puppet.8 +10 -0
- data/spec/fixtures/faulty_face/puppet/face/syntax.rb +8 -0
- data/spec/fixtures/hiera.yaml +9 -0
- 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/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/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/integration/provider/cron/crontab/create_normal_entry +19 -0
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
- data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
- data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +28 -0
- data/spec/fixtures/java.tgz +0 -0
- data/spec/fixtures/manifests/site.pp +0 -0
- data/spec/fixtures/releases/jamtur01-apache/Modulefile +2 -0
- data/spec/fixtures/releases/jamtur01-apache/files/httpd +24 -0
- data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +18 -0
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +21 -0
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +12 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +5 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +34 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +17 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +5 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +15 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +15 -0
- data/spec/fixtures/releases/jamtur01-apache/metadata.json +1 -0
- data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +20 -0
- data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +1 -0
- data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +1 -0
- data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +1 -0
- data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +1 -0
- data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +1 -0
- data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +2 -0
- data/spec/fixtures/stdlib.tgz +0 -0
- data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +10 -0
- data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
- data/spec/fixtures/unit/indirector/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/module/trailing-comma.json +24 -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/aliastest.pp +16 -0
- data/spec/fixtures/unit/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +10 -0
- 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/awesome2/lib/puppetx/awesome2/echo_scheme_handler.rb +18 -0
- 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 +9 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/usee/lib/puppet/functions/usee/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/lib/puppet/functions/user/caller.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/user/metadata.json +9 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +19 -0
- data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
- data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +13 -0
- data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +10 -0
- data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +6 -0
- data/spec/fixtures/unit/provider/augeas/augeas/etc/test +3 -0
- data/spec/fixtures/unit/provider/augeas/augeas/test.aug +13 -0
- data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +272 -0
- data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
- data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
- data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
- data/spec/fixtures/unit/provider/host/parsed/valid_hosts +19 -0
- data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +7 -0
- data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +144 -0
- data/spec/fixtures/unit/provider/mount/parsed/aix.mount +7 -0
- data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +6 -0
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +8 -0
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +3 -0
- data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +17 -0
- data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +11 -0
- data/spec/fixtures/unit/provider/mount/parsed/linux.mount +5 -0
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +9 -0
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +8 -0
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +4 -0
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +4 -0
- data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +11 -0
- data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +6 -0
- data/spec/fixtures/unit/provider/naginator/define_empty_param +6 -0
- data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +4 -0
- data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +14 -0
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +19 -0
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +10 -0
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +1 -0
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +1 -0
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +1 -0
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +1 -0
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +1 -0
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +1 -0
- data/spec/fixtures/unit/provider/package/pkg/incomplete +1 -0
- data/spec/fixtures/unit/provider/package/pkg/publisher +2 -0
- data/spec/fixtures/unit/provider/package/pkg/simple +2 -0
- data/spec/fixtures/unit/provider/package/pkg/solaris11 +2 -0
- data/spec/fixtures/unit/provider/package/pkg/unknown_status +12 -0
- data/spec/fixtures/unit/provider/package/sun/dummy.server +12 -0
- data/spec/fixtures/unit/provider/package/sun/simple +24 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +369 -0
- data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
- data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +30 -0
- data/spec/fixtures/unit/provider/service/openrc/rcservice_list +8 -0
- data/spec/fixtures/unit/provider/service/openrc/rcstatus +43 -0
- data/spec/fixtures/unit/provider/service/smf/svcs.out +3 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +7 -0
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +7 -0
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +3 -0
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +1 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample +21 -0
- data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +2 -0
- data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +2 -0
- data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +2 -0
- data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +3 -0
- data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +30 -0
- data/spec/fixtures/unit/type/user/authorized_keys +5 -0
- data/spec/fixtures/unit/util/filetype/aixtab_output +44 -0
- data/spec/fixtures/unit/util/filetype/suntab_output +9 -0
- data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
- data/spec/fixtures/unit/util/rdoc/basic.pp +16 -0
- data/spec/fixtures/yaml/report0.25.x.yaml +64 -0
- data/spec/fixtures/yaml/report2.6.x.yaml +190 -0
- data/spec/fixtures/yaml/test.local.yaml +16 -0
- data/spec/integration/agent/logging_spec.rb +182 -0
- data/spec/integration/application/apply_spec.rb +109 -0
- data/spec/integration/application/doc_spec.rb +57 -0
- data/spec/integration/configurer_spec.rb +67 -0
- data/spec/integration/data_binding.rb +100 -0
- data/spec/integration/defaults_spec.rb +341 -0
- data/spec/integration/directory_environments_spec.rb +51 -0
- data/spec/integration/environments/default_manifest_spec.rb +274 -0
- data/spec/integration/faces/ca_spec.rb +354 -0
- data/spec/integration/faces/documentation_spec.rb +58 -0
- data/spec/integration/faces/plugin_spec.rb +62 -0
- data/spec/integration/file_bucket/file_spec.rb +65 -0
- data/spec/integration/file_serving/content_spec.rb +8 -0
- data/spec/integration/file_serving/fileset_spec.rb +13 -0
- data/spec/integration/file_serving/metadata_spec.rb +9 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +21 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +65 -0
- data/spec/integration/indirector/catalog/queue_spec.rb +55 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +64 -0
- data/spec/integration/indirector/facts/facter_spec.rb +22 -0
- data/spec/integration/indirector/file_content/file_server_spec.rb +89 -0
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +14 -0
- data/spec/integration/indirector/node/ldap_spec.rb +14 -0
- data/spec/integration/network/authconfig_spec.rb +257 -0
- data/spec/integration/network/formats_spec.rb +91 -0
- data/spec/integration/node/environment_spec.rb +125 -0
- data/spec/integration/node/facts_spec.rb +41 -0
- data/spec/integration/node_spec.rb +82 -0
- data/spec/integration/parser/catalog_spec.rb +125 -0
- data/spec/integration/parser/class_spec.rb +37 -0
- data/spec/integration/parser/collector_spec.rb +276 -0
- data/spec/integration/parser/compiler_spec.rb +525 -0
- data/spec/integration/parser/conditionals_spec.rb +117 -0
- data/spec/integration/parser/functions/require_spec.rb +43 -0
- data/spec/integration/parser/future_compiler_spec.rb +750 -0
- data/spec/integration/parser/node_spec.rb +185 -0
- data/spec/integration/parser/parser_spec.rb +207 -0
- data/spec/integration/parser/resource_expressions_spec.rb +286 -0
- data/spec/integration/parser/ruby_manifest_spec.rb +119 -0
- data/spec/integration/parser/scope_spec.rb +741 -0
- data/spec/integration/parser/undef_param_spec.rb +87 -0
- data/spec/integration/provider/cron/crontab_spec.rb +241 -0
- data/spec/integration/provider/mailalias/aliases_spec.rb +10 -0
- data/spec/integration/provider/mount_spec.rb +169 -0
- data/spec/integration/provider/package_spec.rb +44 -0
- data/spec/integration/provider/service/init_spec.rb +46 -0
- data/spec/integration/provider/service/systemd_spec.rb +20 -0
- data/spec/integration/provider/ssh_authorized_key_spec.rb +219 -0
- data/spec/integration/reference/providers_spec.rb +16 -0
- data/spec/integration/reports_spec.rb +14 -0
- data/spec/integration/resource/catalog_spec.rb +54 -0
- data/spec/integration/resource/type_collection_spec.rb +94 -0
- data/spec/integration/ssl/autosign_spec.rb +130 -0
- data/spec/integration/ssl/certificate_authority_spec.rb +163 -0
- data/spec/integration/ssl/certificate_request_spec.rb +48 -0
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +35 -0
- data/spec/integration/ssl/host_spec.rb +82 -0
- data/spec/integration/transaction/report_spec.rb +24 -0
- data/spec/integration/transaction_spec.rb +362 -0
- data/spec/integration/type/exec_spec.rb +77 -0
- data/spec/integration/type/file_spec.rb +1378 -0
- data/spec/integration/type/nagios_spec.rb +71 -0
- data/spec/integration/type/package_spec.rb +28 -0
- data/spec/integration/type/sshkey_spec.rb +22 -0
- data/spec/integration/type/tidy_spec.rb +34 -0
- data/spec/integration/type/user_spec.rb +36 -0
- data/spec/integration/type_spec.rb +32 -0
- data/spec/integration/util/autoload_spec.rb +107 -0
- data/spec/integration/util/execution_spec.rb +17 -0
- data/spec/integration/util/feature_spec.rb +53 -0
- data/spec/integration/util/rdoc/parser_spec.rb +268 -0
- data/spec/integration/util/settings_spec.rb +89 -0
- data/spec/integration/util/windows/process_spec.rb +34 -0
- data/spec/integration/util/windows/security_spec.rb +864 -0
- data/spec/integration/util/windows/user_spec.rb +125 -0
- data/spec/integration/util_spec.rb +111 -0
- data/spec/lib/matchers/containment_matchers.rb +52 -0
- data/spec/lib/matchers/include.rb +27 -0
- data/spec/lib/matchers/include_in_order.rb +21 -0
- data/spec/lib/matchers/include_in_order_spec.rb +30 -0
- data/spec/lib/matchers/include_spec.rb +32 -0
- data/spec/lib/matchers/json.rb +167 -0
- data/spec/lib/matchers/match_tokens2.rb +74 -0
- data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
- data/spec/lib/matchers/resource.rb +68 -0
- data/spec/lib/puppet/face/1.0.0/huzzah.rb +8 -0
- data/spec/lib/puppet/face/basetest.rb +51 -0
- data/spec/lib/puppet/face/huzzah.rb +8 -0
- data/spec/lib/puppet/face/huzzah/obsolete.rb +6 -0
- data/spec/lib/puppet/face/version_matching.rb +12 -0
- data/spec/lib/puppet/indirector/indirector_testing/json.rb +6 -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 +37 -0
- data/spec/lib/puppet_spec/compiler.rb +49 -0
- data/spec/lib/puppet_spec/database.rb +29 -0
- data/spec/lib/puppet_spec/files.rb +88 -0
- data/spec/lib/puppet_spec/fixtures.rb +28 -0
- data/spec/lib/puppet_spec/language.rb +74 -0
- data/spec/lib/puppet_spec/matchers.rb +147 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +56 -0
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +136 -0
- data/spec/lib/puppet_spec/modules.rb +26 -0
- data/spec/lib/puppet_spec/pops.rb +16 -0
- data/spec/lib/puppet_spec/scope.rb +14 -0
- data/spec/lib/puppet_spec/settings.rb +15 -0
- data/spec/lib/puppet_spec/verbose.rb +9 -0
- data/spec/monkey_patches/alias_should_to_must.rb +21 -0
- data/spec/shared_behaviours/all_parsedfile_providers.rb +21 -0
- data/spec/shared_behaviours/an_indirector_face.rb +6 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +263 -0
- data/spec/shared_behaviours/file_server_terminus.rb +41 -0
- data/spec/shared_behaviours/file_serving.rb +75 -0
- data/spec/shared_behaviours/file_serving_model.rb +72 -0
- data/spec/shared_behaviours/hiera_indirections.rb +99 -0
- data/spec/shared_behaviours/iterative_functions.rb +69 -0
- data/spec/shared_behaviours/memory_terminus.rb +28 -0
- data/spec/shared_behaviours/path_parameters.rb +160 -0
- data/spec/shared_behaviours/store_configs_terminus.rb +21 -0
- data/spec/shared_behaviours/things_that_declare_options.rb +262 -0
- data/spec/shared_contexts/checksums.rb +55 -0
- data/spec/shared_contexts/platform.rb +52 -0
- data/spec/spec_helper.rb +193 -0
- data/spec/unit/agent/disabler_spec.rb +64 -0
- data/spec/unit/agent/locker_spec.rb +100 -0
- data/spec/unit/agent_spec.rb +327 -0
- data/spec/unit/application/agent_spec.rb +656 -0
- data/spec/unit/application/apply_spec.rb +460 -0
- data/spec/unit/application/cert_spec.rb +220 -0
- data/spec/unit/application/certificate_spec.rb +22 -0
- data/spec/unit/application/config_spec.rb +9 -0
- data/spec/unit/application/describe_spec.rb +79 -0
- data/spec/unit/application/device_spec.rb +415 -0
- data/spec/unit/application/doc_spec.rb +344 -0
- data/spec/unit/application/face_base_spec.rb +408 -0
- data/spec/unit/application/facts_spec.rb +32 -0
- data/spec/unit/application/filebucket_spec.rb +207 -0
- data/spec/unit/application/indirection_base_spec.rb +52 -0
- data/spec/unit/application/inspect_spec.rb +287 -0
- data/spec/unit/application/kick_spec.rb +296 -0
- data/spec/unit/application/master_spec.rb +363 -0
- data/spec/unit/application/queue_spec.rb +168 -0
- data/spec/unit/application/resource_spec.rb +209 -0
- data/spec/unit/application/secret_agent_spec.rb +34 -0
- data/spec/unit/application_spec.rb +645 -0
- data/spec/unit/configurer/downloader_factory_spec.rb +96 -0
- data/spec/unit/configurer/downloader_spec.rb +222 -0
- data/spec/unit/configurer/fact_handler_spec.rb +89 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +39 -0
- data/spec/unit/configurer_spec.rb +680 -0
- data/spec/unit/confine/exists_spec.rb +80 -0
- data/spec/unit/confine/false_spec.rb +52 -0
- data/spec/unit/confine/feature_spec.rb +57 -0
- data/spec/unit/confine/true_spec.rb +52 -0
- data/spec/unit/confine/variable_spec.rb +106 -0
- data/spec/unit/confine_collection_spec.rb +133 -0
- data/spec/unit/confine_spec.rb +77 -0
- data/spec/unit/confiner_spec.rb +62 -0
- data/spec/unit/context/trusted_information_spec.rb +124 -0
- data/spec/unit/context_spec.rb +136 -0
- data/spec/unit/daemon_spec.rb +255 -0
- data/spec/unit/data_binding_spec.rb +11 -0
- data/spec/unit/defaults_spec.rb +74 -0
- data/spec/unit/dsl/resource_api_spec.rb +180 -0
- data/spec/unit/dsl/resource_type_api_spec.rb +53 -0
- data/spec/unit/environments_spec.rb +383 -0
- data/spec/unit/face/catalog_spec.rb +7 -0
- data/spec/unit/face/certificate_spec.rb +223 -0
- data/spec/unit/face/config_spec.rb +147 -0
- data/spec/unit/face/facts_spec.rb +23 -0
- data/spec/unit/face/file_spec.rb +12 -0
- data/spec/unit/face/help_spec.rb +144 -0
- data/spec/unit/face/instrumentation_data_spec.rb +7 -0
- data/spec/unit/face/instrumentation_listener_spec.rb +38 -0
- data/spec/unit/face/instrumentation_probe_spec.rb +21 -0
- data/spec/unit/face/module/build_spec.rb +69 -0
- data/spec/unit/face/module/install_spec.rb +42 -0
- data/spec/unit/face/module/list_spec.rb +241 -0
- data/spec/unit/face/module/search_spec.rb +201 -0
- data/spec/unit/face/module/uninstall_spec.rb +49 -0
- data/spec/unit/face/module/upgrade_spec.rb +26 -0
- data/spec/unit/face/module_spec.rb +3 -0
- data/spec/unit/face/node_spec.rb +272 -0
- data/spec/unit/face/parser_spec.rb +111 -0
- data/spec/unit/face/plugin_spec.rb +10 -0
- data/spec/unit/face/secret_agent_spec.rb +27 -0
- data/spec/unit/face_spec.rb +1 -0
- data/spec/unit/file_bucket/dipper_spec.rb +176 -0
- data/spec/unit/file_bucket/file_spec.rb +76 -0
- data/spec/unit/file_serving/base_spec.rb +168 -0
- data/spec/unit/file_serving/configuration/parser_spec.rb +186 -0
- data/spec/unit/file_serving/configuration_spec.rb +231 -0
- data/spec/unit/file_serving/content_spec.rb +112 -0
- data/spec/unit/file_serving/fileset_spec.rb +354 -0
- data/spec/unit/file_serving/metadata_spec.rb +432 -0
- data/spec/unit/file_serving/mount/file_spec.rb +189 -0
- data/spec/unit/file_serving/mount/modules_spec.rb +70 -0
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
- data/spec/unit/file_serving/mount/plugins_spec.rb +73 -0
- data/spec/unit/file_serving/mount_spec.rb +31 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +94 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +58 -0
- data/spec/unit/file_system/path_pattern_spec.rb +138 -0
- data/spec/unit/file_system/uniquefile_spec.rb +184 -0
- data/spec/unit/file_system_spec.rb +508 -0
- data/spec/unit/forge/errors_spec.rb +80 -0
- data/spec/unit/forge/module_release_spec.rb +220 -0
- data/spec/unit/forge/repository_spec.rb +230 -0
- data/spec/unit/forge_spec.rb +172 -0
- data/spec/unit/functions/assert_type_spec.rb +78 -0
- data/spec/unit/functions/each_spec.rb +111 -0
- data/spec/unit/functions/epp_spec.rb +155 -0
- data/spec/unit/functions/filter_spec.rb +131 -0
- data/spec/unit/functions/inline_epp_spec.rb +97 -0
- data/spec/unit/functions/map_spec.rb +169 -0
- data/spec/unit/functions/match_spec.rb +57 -0
- data/spec/unit/functions/reduce_spec.rb +96 -0
- data/spec/unit/functions/slice_spec.rb +148 -0
- data/spec/unit/functions/with_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +670 -0
- data/spec/unit/graph/key_spec.rb +41 -0
- data/spec/unit/graph/rb_tree_map_spec.rb +572 -0
- data/spec/unit/graph/relationship_graph_spec.rb +387 -0
- data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
- data/spec/unit/graph/simple_graph.rb +721 -0
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +148 -0
- data/spec/unit/hiera/scope_spec.rb +89 -0
- data/spec/unit/hiera_puppet_spec.rb +118 -0
- data/spec/unit/indirector/active_record_spec.rb +75 -0
- data/spec/unit/indirector/catalog/active_record_spec.rb +107 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +272 -0
- data/spec/unit/indirector/catalog/json_spec.rb +12 -0
- data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
- data/spec/unit/indirector/catalog/queue_spec.rb +19 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +10 -0
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +236 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +17 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +24 -0
- data/spec/unit/indirector/certificate/ca_spec.rb +23 -0
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/certificate/file_spec.rb +23 -0
- data/spec/unit/indirector/certificate/rest_spec.rb +63 -0
- data/spec/unit/indirector/certificate_request/ca_spec.rb +57 -0
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/certificate_request/file_spec.rb +15 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +26 -0
- data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +16 -0
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +17 -0
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +26 -0
- data/spec/unit/indirector/certificate_status/file_spec.rb +191 -0
- data/spec/unit/indirector/certificate_status/rest_spec.rb +18 -0
- data/spec/unit/indirector/code_spec.rb +31 -0
- data/spec/unit/indirector/data_binding/hiera_spec.rb +19 -0
- data/spec/unit/indirector/data_binding/none_spec.rb +28 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +80 -0
- data/spec/unit/indirector/envelope_spec.rb +33 -0
- data/spec/unit/indirector/exec_spec.rb +58 -0
- data/spec/unit/indirector/face_spec.rb +70 -0
- data/spec/unit/indirector/facts/active_record_spec.rb +113 -0
- data/spec/unit/indirector/facts/couch_spec.rb +102 -0
- data/spec/unit/indirector/facts/facter_spec.rb +170 -0
- data/spec/unit/indirector/facts/inventory_active_record_spec.rb +175 -0
- data/spec/unit/indirector/facts/inventory_service_spec.rb +21 -0
- data/spec/unit/indirector/facts/network_device_spec.rb +88 -0
- data/spec/unit/indirector/facts/rest_spec.rb +10 -0
- data/spec/unit/indirector/facts/store_configs_spec.rb +17 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +239 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +286 -0
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +10 -0
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +29 -0
- data/spec/unit/indirector/file_content/file_server_spec.rb +14 -0
- data/spec/unit/indirector/file_content/file_spec.rb +14 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +14 -0
- data/spec/unit/indirector/file_content/selector_spec.rb +10 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +14 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +50 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +13 -0
- data/spec/unit/indirector/file_metadata/selector_spec.rb +11 -0
- data/spec/unit/indirector/file_server_spec.rb +263 -0
- data/spec/unit/indirector/hiera_spec.rb +17 -0
- data/spec/unit/indirector/indirection_spec.rb +875 -0
- data/spec/unit/indirector/instrumentation_data/local_spec.rb +52 -0
- data/spec/unit/indirector/instrumentation_data/rest_spec.rb +11 -0
- data/spec/unit/indirector/instrumentation_listener/local_spec.rb +65 -0
- data/spec/unit/indirector/instrumentation_listener/rest_spec.rb +11 -0
- data/spec/unit/indirector/instrumentation_probe/local_spec.rb +65 -0
- data/spec/unit/indirector/instrumentation_probe/rest_spec.rb +11 -0
- data/spec/unit/indirector/json_spec.rb +193 -0
- data/spec/unit/indirector/key/ca_spec.rb +23 -0
- data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
- data/spec/unit/indirector/key/file_spec.rb +97 -0
- data/spec/unit/indirector/ldap_spec.rb +137 -0
- data/spec/unit/indirector/memory_spec.rb +27 -0
- data/spec/unit/indirector/msgpack_spec.rb +191 -0
- data/spec/unit/indirector/node/active_record_spec.rb +48 -0
- data/spec/unit/indirector/node/exec_spec.rb +76 -0
- data/spec/unit/indirector/node/ldap_spec.rb +441 -0
- data/spec/unit/indirector/node/memory_spec.rb +18 -0
- data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
- data/spec/unit/indirector/node/plain_spec.rb +26 -0
- data/spec/unit/indirector/node/rest_spec.rb +12 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +17 -0
- data/spec/unit/indirector/node/yaml_spec.rb +24 -0
- data/spec/unit/indirector/none_spec.rb +33 -0
- data/spec/unit/indirector/plain_spec.rb +27 -0
- data/spec/unit/indirector/queue_spec.rb +115 -0
- data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
- data/spec/unit/indirector/report/processor_spec.rb +100 -0
- data/spec/unit/indirector/report/rest_spec.rb +67 -0
- data/spec/unit/indirector/report/yaml_spec.rb +28 -0
- data/spec/unit/indirector/request_spec.rb +603 -0
- data/spec/unit/indirector/resource/active_record_spec.rb +166 -0
- data/spec/unit/indirector/resource/ral_spec.rb +147 -0
- data/spec/unit/indirector/resource/rest_spec.rb +10 -0
- data/spec/unit/indirector/resource/store_configs_spec.rb +23 -0
- data/spec/unit/indirector/resource_type/parser_spec.rb +254 -0
- data/spec/unit/indirector/resource_type/rest_spec.rb +14 -0
- data/spec/unit/indirector/rest_spec.rb +589 -0
- data/spec/unit/indirector/run/local_spec.rb +21 -0
- data/spec/unit/indirector/run/rest_spec.rb +10 -0
- data/spec/unit/indirector/ssl_file_spec.rb +328 -0
- data/spec/unit/indirector/status/local_spec.rb +11 -0
- data/spec/unit/indirector/status/rest_spec.rb +10 -0
- data/spec/unit/indirector/store_configs_spec.rb +8 -0
- data/spec/unit/indirector/terminus_spec.rb +264 -0
- data/spec/unit/indirector/yaml_spec.rb +166 -0
- data/spec/unit/indirector_spec.rb +150 -0
- data/spec/unit/interface/action_builder_spec.rb +217 -0
- data/spec/unit/interface/action_manager_spec.rb +280 -0
- data/spec/unit/interface/action_spec.rb +650 -0
- data/spec/unit/interface/documentation_spec.rb +33 -0
- data/spec/unit/interface/face_collection_spec.rb +212 -0
- data/spec/unit/interface/option_builder_spec.rb +86 -0
- data/spec/unit/interface/option_spec.rb +156 -0
- data/spec/unit/interface_spec.rb +271 -0
- data/spec/unit/man_spec.rb +32 -0
- data/spec/unit/module_spec.rb +722 -0
- data/spec/unit/module_tool/application_spec.rb +25 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +416 -0
- data/spec/unit/module_tool/applications/checksummer_spec.rb +115 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +363 -0
- data/spec/unit/module_tool/applications/searcher_spec.rb +38 -0
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +165 -0
- data/spec/unit/module_tool/applications/unpacker_spec.rb +74 -0
- data/spec/unit/module_tool/applications/upgrader_spec.rb +324 -0
- data/spec/unit/module_tool/install_directory_spec.rb +70 -0
- data/spec/unit/module_tool/installed_modules_spec.rb +49 -0
- data/spec/unit/module_tool/metadata_spec.rb +301 -0
- data/spec/unit/module_tool/tar/gnu_spec.rb +23 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +60 -0
- data/spec/unit/module_tool/tar_spec.rb +31 -0
- data/spec/unit/module_tool_spec.rb +330 -0
- data/spec/unit/network/auth_config_parser_spec.rb +101 -0
- data/spec/unit/network/authconfig_spec.rb +109 -0
- data/spec/unit/network/authentication_spec.rb +104 -0
- data/spec/unit/network/authorization_spec.rb +34 -0
- data/spec/unit/network/authstore_spec.rb +424 -0
- data/spec/unit/network/format_handler_spec.rb +94 -0
- data/spec/unit/network/format_spec.rb +197 -0
- data/spec/unit/network/format_support_spec.rb +199 -0
- data/spec/unit/network/formats_spec.rb +422 -0
- data/spec/unit/network/http/api/v1_spec.rb +529 -0
- data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
- data/spec/unit/network/http/api/v2/environments_spec.rb +63 -0
- data/spec/unit/network/http/api/v2_spec.rb +14 -0
- data/spec/unit/network/http/compression_spec.rb +196 -0
- data/spec/unit/network/http/connection_spec.rb +306 -0
- data/spec/unit/network/http/error_spec.rb +30 -0
- data/spec/unit/network/http/factory_spec.rb +82 -0
- data/spec/unit/network/http/handler_spec.rb +232 -0
- 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 +316 -0
- data/spec/unit/network/http/rack_spec.rb +43 -0
- data/spec/unit/network/http/route_spec.rb +91 -0
- 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/rest_spec.rb +231 -0
- data/spec/unit/network/http/webrick_spec.rb +271 -0
- data/spec/unit/network/http_pool_spec.rb +98 -0
- data/spec/unit/network/http_spec.rb +10 -0
- data/spec/unit/network/resolver_spec.rb +207 -0
- data/spec/unit/network/rights_spec.rb +440 -0
- data/spec/unit/network/server_spec.rb +95 -0
- data/spec/unit/node/environment_spec.rb +581 -0
- data/spec/unit/node/facts_spec.rb +175 -0
- data/spec/unit/node_spec.rb +321 -0
- data/spec/unit/other/selinux_spec.rb +99 -0
- data/spec/unit/parameter/boolean_spec.rb +35 -0
- data/spec/unit/parameter/package_options_spec.rb +44 -0
- data/spec/unit/parameter/path_spec.rb +24 -0
- data/spec/unit/parameter/value_collection_spec.rb +166 -0
- data/spec/unit/parameter/value_spec.rb +87 -0
- data/spec/unit/parameter_spec.rb +193 -0
- data/spec/unit/parser/ast/arithmetic_operator_spec.rb +160 -0
- data/spec/unit/parser/ast/astarray_spec.rb +56 -0
- data/spec/unit/parser/ast/asthash_spec.rb +98 -0
- data/spec/unit/parser/ast/block_expression_spec.rb +67 -0
- data/spec/unit/parser/ast/boolean_operator_spec.rb +54 -0
- data/spec/unit/parser/ast/casestatement_spec.rb +168 -0
- data/spec/unit/parser/ast/collection_spec.rb +70 -0
- data/spec/unit/parser/ast/collexpr_spec.rb +120 -0
- data/spec/unit/parser/ast/comparison_operator_spec.rb +118 -0
- data/spec/unit/parser/ast/definition_spec.rb +21 -0
- data/spec/unit/parser/ast/function_spec.rb +92 -0
- data/spec/unit/parser/ast/hostclass_spec.rb +72 -0
- data/spec/unit/parser/ast/ifstatement_spec.rb +77 -0
- data/spec/unit/parser/ast/in_operator_spec.rb +61 -0
- data/spec/unit/parser/ast/leaf_spec.rb +511 -0
- data/spec/unit/parser/ast/match_operator_spec.rb +51 -0
- data/spec/unit/parser/ast/minus_spec.rb +37 -0
- data/spec/unit/parser/ast/node_spec.rb +30 -0
- data/spec/unit/parser/ast/nop_spec.rb +19 -0
- data/spec/unit/parser/ast/not_spec.rb +31 -0
- data/spec/unit/parser/ast/relationship_spec.rb +87 -0
- data/spec/unit/parser/ast/resource_defaults_spec.rb +21 -0
- data/spec/unit/parser/ast/resource_override_spec.rb +50 -0
- data/spec/unit/parser/ast/resource_reference_spec.rb +56 -0
- data/spec/unit/parser/ast/resource_spec.rb +183 -0
- data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
- data/spec/unit/parser/ast/selector_spec.rb +88 -0
- data/spec/unit/parser/ast/vardef_spec.rb +68 -0
- data/spec/unit/parser/ast_spec.rb +76 -0
- data/spec/unit/parser/collector_spec.rb +438 -0
- data/spec/unit/parser/compiler_spec.rb +910 -0
- data/spec/unit/parser/files_spec.rb +168 -0
- data/spec/unit/parser/functions/contain_spec.rb +236 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +213 -0
- data/spec/unit/parser/functions/defined_spec.rb +114 -0
- data/spec/unit/parser/functions/digest_spec.rb +31 -0
- data/spec/unit/parser/functions/extlookup_spec.rb +102 -0
- data/spec/unit/parser/functions/fail_spec.rb +28 -0
- data/spec/unit/parser/functions/file_spec.rb +98 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +46 -0
- data/spec/unit/parser/functions/generate_spec.rb +136 -0
- data/spec/unit/parser/functions/hiera_array_spec.rb +26 -0
- data/spec/unit/parser/functions/hiera_hash_spec.rb +22 -0
- data/spec/unit/parser/functions/hiera_include_spec.rb +39 -0
- data/spec/unit/parser/functions/hiera_spec.rb +22 -0
- data/spec/unit/parser/functions/include_spec.rb +65 -0
- data/spec/unit/parser/functions/inline_template_spec.rb +34 -0
- data/spec/unit/parser/functions/lookup_spec.rb +146 -0
- data/spec/unit/parser/functions/realize_spec.rb +61 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +196 -0
- data/spec/unit/parser/functions/require_spec.rb +75 -0
- data/spec/unit/parser/functions/search_spec.rb +28 -0
- data/spec/unit/parser/functions/shared.rb +82 -0
- data/spec/unit/parser/functions/shellquote_spec.rb +67 -0
- data/spec/unit/parser/functions/split_spec.rb +53 -0
- data/spec/unit/parser/functions/sprintf_spec.rb +51 -0
- data/spec/unit/parser/functions/tag_spec.rb +28 -0
- data/spec/unit/parser/functions/template_spec.rb +89 -0
- data/spec/unit/parser/functions/versioncmp_spec.rb +33 -0
- data/spec/unit/parser/functions_spec.rb +132 -0
- data/spec/unit/parser/lexer_spec.rb +877 -0
- data/spec/unit/parser/parser_spec.rb +535 -0
- data/spec/unit/parser/relationship_spec.rb +93 -0
- data/spec/unit/parser/resource/param_spec.rb +44 -0
- data/spec/unit/parser/resource_spec.rb +586 -0
- data/spec/unit/parser/scope_spec.rb +661 -0
- data/spec/unit/parser/templatewrapper_spec.rb +118 -0
- data/spec/unit/parser/type_loader_spec.rb +224 -0
- data/spec/unit/pops/adaptable_spec.rb +141 -0
- data/spec/unit/pops/benchmark_spec.rb +142 -0
- data/spec/unit/pops/binder/binder_spec.rb +43 -0
- data/spec/unit/pops/binder/bindings_checker_spec.rb +155 -0
- data/spec/unit/pops/binder/bindings_composer_spec.rb +66 -0
- data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
- data/spec/unit/pops/binder/config/binder_config_spec.rb +35 -0
- data/spec/unit/pops/binder/injector_spec.rb +786 -0
- data/spec/unit/pops/containment_spec.rb +26 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +441 -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 +259 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1300 -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 +89 -0
- data/spec/unit/pops/factory_rspec_helper.rb +77 -0
- data/spec/unit/pops/factory_spec.rb +306 -0
- data/spec/unit/pops/issues_spec.rb +196 -0
- data/spec/unit/pops/label_provider_spec.rb +42 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +61 -0
- data/spec/unit/pops/loaders/loader_paths_spec.rb +55 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +125 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +90 -0
- data/spec/unit/pops/loaders/static_loader_spec.rb +52 -0
- data/spec/unit/pops/model/ast_transformer_spec.rb +76 -0
- data/spec/unit/pops/model/model_spec.rb +37 -0
- data/spec/unit/pops/parser/epp_parser_spec.rb +115 -0
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +89 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +464 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +278 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +104 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +157 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +261 -0
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +87 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +324 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
- data/spec/unit/pops/parser/parser_spec.rb +33 -0
- data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +72 -0
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +23 -0
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +115 -0
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +123 -0
- data/spec/unit/pops/transformer/transform_containers_spec.rb +190 -0
- data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
- data/spec/unit/pops/types/enumeration_spec.rb +50 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1800 -0
- data/spec/unit/pops/types/type_factory_spec.rb +281 -0
- data/spec/unit/pops/types/type_parser_spec.rb +240 -0
- data/spec/unit/pops/validator/validator_spec.rb +184 -0
- data/spec/unit/pops/visitor_spec.rb +94 -0
- data/spec/unit/property/boolean_spec.rb +24 -0
- data/spec/unit/property/ensure_spec.rb +12 -0
- data/spec/unit/property/keyvalue_spec.rb +170 -0
- data/spec/unit/property/list_spec.rb +173 -0
- data/spec/unit/property/ordered_list_spec.rb +63 -0
- data/spec/unit/property_spec.rb +541 -0
- data/spec/unit/provider/README.markdown +4 -0
- data/spec/unit/provider/aixobject_spec.rb +101 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +944 -0
- data/spec/unit/provider/cisco_spec.rb +15 -0
- data/spec/unit/provider/command_spec.rb +62 -0
- data/spec/unit/provider/cron/crontab_spec.rb +207 -0
- data/spec/unit/provider/cron/parsed_spec.rb +336 -0
- data/spec/unit/provider/exec/posix_spec.rb +219 -0
- data/spec/unit/provider/exec/shell_spec.rb +53 -0
- data/spec/unit/provider/exec/windows_spec.rb +107 -0
- data/spec/unit/provider/exec_spec.rb +35 -0
- data/spec/unit/provider/file/posix_spec.rb +232 -0
- data/spec/unit/provider/file/windows_spec.rb +154 -0
- data/spec/unit/provider/group/groupadd_spec.rb +76 -0
- data/spec/unit/provider/group/ldap_spec.rb +101 -0
- data/spec/unit/provider/group/pw_spec.rb +81 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +168 -0
- data/spec/unit/provider/host/parsed_spec.rb +197 -0
- data/spec/unit/provider/interface/cisco_spec.rb +57 -0
- data/spec/unit/provider/ldap_spec.rb +244 -0
- data/spec/unit/provider/macauthorization_spec.rb +152 -0
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +192 -0
- data/spec/unit/provider/mount/parsed_spec.rb +283 -0
- data/spec/unit/provider/mount_spec.rb +165 -0
- data/spec/unit/provider/naginator_spec.rb +79 -0
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +189 -0
- data/spec/unit/provider/nameservice_spec.rb +304 -0
- data/spec/unit/provider/network_device_spec.rb +152 -0
- data/spec/unit/provider/package/aix_spec.rb +107 -0
- data/spec/unit/provider/package/appdmg_spec.rb +42 -0
- data/spec/unit/provider/package/apt_spec.rb +160 -0
- data/spec/unit/provider/package/aptitude_spec.rb +45 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +47 -0
- data/spec/unit/provider/package/dpkg_spec.rb +281 -0
- data/spec/unit/provider/package/freebsd_spec.rb +54 -0
- data/spec/unit/provider/package/gem_spec.rb +187 -0
- data/spec/unit/provider/package/hpux_spec.rb +51 -0
- data/spec/unit/provider/package/macports_spec.rb +140 -0
- data/spec/unit/provider/package/msi_spec.rb +229 -0
- data/spec/unit/provider/package/nim_spec.rb +250 -0
- data/spec/unit/provider/package/openbsd_spec.rb +369 -0
- data/spec/unit/provider/package/opkg_spec.rb +180 -0
- data/spec/unit/provider/package/pacman_spec.rb +314 -0
- data/spec/unit/provider/package/pip_spec.rb +247 -0
- data/spec/unit/provider/package/pkg_spec.rb +255 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +144 -0
- data/spec/unit/provider/package/pkgin_spec.rb +178 -0
- data/spec/unit/provider/package/pkgutil_spec.rb +235 -0
- data/spec/unit/provider/package/portage_spec.rb +65 -0
- data/spec/unit/provider/package/rpm_spec.rb +390 -0
- data/spec/unit/provider/package/sun_spec.rb +114 -0
- data/spec/unit/provider/package/up2date_spec.rb +24 -0
- data/spec/unit/provider/package/urpmi.rb +80 -0
- data/spec/unit/provider/package/windows/exe_package_spec.rb +99 -0
- data/spec/unit/provider/package/windows/msi_package_spec.rb +115 -0
- data/spec/unit/provider/package/windows/package_spec.rb +141 -0
- data/spec/unit/provider/package/windows_spec.rb +251 -0
- data/spec/unit/provider/package/yum_spec.rb +308 -0
- data/spec/unit/provider/package/zypper_spec.rb +186 -0
- data/spec/unit/provider/parsedfile_spec.rb +228 -0
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +1574 -0
- data/spec/unit/provider/selboolean_spec.rb +36 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule_spec.rb +73 -0
- data/spec/unit/provider/service/base_spec.rb +77 -0
- data/spec/unit/provider/service/daemontools_spec.rb +171 -0
- data/spec/unit/provider/service/debian_spec.rb +116 -0
- data/spec/unit/provider/service/freebsd_spec.rb +75 -0
- data/spec/unit/provider/service/gentoo_spec.rb +241 -0
- data/spec/unit/provider/service/init_spec.rb +212 -0
- data/spec/unit/provider/service/launchd_spec.rb +290 -0
- data/spec/unit/provider/service/openbsd_spec.rb +256 -0
- data/spec/unit/provider/service/openrc_spec.rb +225 -0
- data/spec/unit/provider/service/openwrt_spec.rb +109 -0
- data/spec/unit/provider/service/redhat_spec.rb +162 -0
- data/spec/unit/provider/service/runit_spec.rb +145 -0
- data/spec/unit/provider/service/smf_spec.rb +153 -0
- data/spec/unit/provider/service/src_spec.rb +173 -0
- data/spec/unit/provider/service/systemd_spec.rb +158 -0
- data/spec/unit/provider/service/upstart_spec.rb +533 -0
- data/spec/unit/provider/service/windows_spec.rb +183 -0
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +261 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +71 -0
- data/spec/unit/provider/user/aix_spec.rb +162 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1114 -0
- data/spec/unit/provider/user/hpux_spec.rb +52 -0
- data/spec/unit/provider/user/ldap_spec.rb +289 -0
- data/spec/unit/provider/user/pw_spec.rb +214 -0
- data/spec/unit/provider/user/user_role_add_spec.rb +357 -0
- data/spec/unit/provider/user/useradd_spec.rb +430 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +173 -0
- data/spec/unit/provider/vlan/cisco_spec.rb +55 -0
- data/spec/unit/provider/yumrepo/inifile_spec.rb +309 -0
- data/spec/unit/provider/zfs/zfs_spec.rb +106 -0
- data/spec/unit/provider/zone/solaris_spec.rb +195 -0
- data/spec/unit/provider/zpool/zpool_spec.rb +214 -0
- data/spec/unit/provider_spec.rb +714 -0
- data/spec/unit/puppet_spec.rb +41 -0
- data/spec/unit/rails/host_spec.rb +162 -0
- data/spec/unit/rails/param_value_spec.rb +46 -0
- data/spec/unit/rails/resource_spec.rb +115 -0
- data/spec/unit/rails_spec.rb +244 -0
- data/spec/unit/relationship_spec.rb +228 -0
- data/spec/unit/reports/http_spec.rb +100 -0
- data/spec/unit/reports/rrdgraph_spec.rb +29 -0
- data/spec/unit/reports/store_spec.rb +60 -0
- data/spec/unit/reports/tagmail_spec.rb +218 -0
- data/spec/unit/reports_spec.rb +60 -0
- data/spec/unit/resource/catalog_spec.rb +884 -0
- data/spec/unit/resource/status_spec.rb +220 -0
- data/spec/unit/resource/type_collection_helper_spec.rb +24 -0
- data/spec/unit/resource/type_collection_spec.rb +418 -0
- data/spec/unit/resource/type_spec.rb +777 -0
- data/spec/unit/resource_spec.rb +979 -0
- data/spec/unit/run_spec.rb +175 -0
- data/spec/unit/scheduler/job_spec.rb +79 -0
- data/spec/unit/scheduler/scheduler_spec.rb +116 -0
- data/spec/unit/scheduler/splay_job_spec.rb +35 -0
- data/spec/unit/semver_spec.rb +303 -0
- data/spec/unit/settings/array_setting_spec.rb +39 -0
- data/spec/unit/settings/autosign_setting_spec.rb +103 -0
- data/spec/unit/settings/config_file_spec.rb +176 -0
- data/spec/unit/settings/directory_setting_spec.rb +32 -0
- data/spec/unit/settings/duration_setting_spec.rb +45 -0
- data/spec/unit/settings/enum_setting_spec.rb +27 -0
- data/spec/unit/settings/environment_conf_spec.rb +118 -0
- data/spec/unit/settings/file_setting_spec.rb +298 -0
- data/spec/unit/settings/ini_file_spec.rb +184 -0
- data/spec/unit/settings/path_setting_spec.rb +30 -0
- data/spec/unit/settings/priority_setting_spec.rb +66 -0
- data/spec/unit/settings/string_setting_spec.rb +75 -0
- data/spec/unit/settings/terminus_setting_spec.rb +28 -0
- data/spec/unit/settings/value_translator_spec.rb +77 -0
- data/spec/unit/settings_spec.rb +1883 -0
- data/spec/unit/ssl/base_spec.rb +85 -0
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +366 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +1130 -0
- data/spec/unit/ssl/certificate_factory_spec.rb +168 -0
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
- data/spec/unit/ssl/certificate_request_spec.rb +369 -0
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +196 -0
- data/spec/unit/ssl/certificate_spec.rb +193 -0
- data/spec/unit/ssl/configuration_spec.rb +134 -0
- data/spec/unit/ssl/digest_spec.rb +35 -0
- data/spec/unit/ssl/host_spec.rb +940 -0
- data/spec/unit/ssl/inventory_spec.rb +150 -0
- data/spec/unit/ssl/key_spec.rb +191 -0
- data/spec/unit/ssl/oids_spec.rb +48 -0
- data/spec/unit/ssl/validator_spec.rb +353 -0
- data/spec/unit/status_spec.rb +51 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +411 -0
- data/spec/unit/transaction/event_manager_spec.rb +310 -0
- data/spec/unit/transaction/event_spec.rb +192 -0
- data/spec/unit/transaction/report_spec.rb +497 -0
- data/spec/unit/transaction/resource_harness_spec.rb +542 -0
- data/spec/unit/transaction_spec.rb +722 -0
- data/spec/unit/type/README.markdown +4 -0
- data/spec/unit/type/augeas_spec.rb +119 -0
- data/spec/unit/type/component_spec.rb +53 -0
- data/spec/unit/type/computer_spec.rb +80 -0
- data/spec/unit/type/cron_spec.rb +543 -0
- data/spec/unit/type/exec_spec.rb +772 -0
- data/spec/unit/type/file/checksum_spec.rb +79 -0
- data/spec/unit/type/file/content_spec.rb +516 -0
- data/spec/unit/type/file/ctime_spec.rb +34 -0
- data/spec/unit/type/file/ensure_spec.rb +123 -0
- data/spec/unit/type/file/group_spec.rb +60 -0
- data/spec/unit/type/file/mode_spec.rb +220 -0
- data/spec/unit/type/file/mtime_spec.rb +34 -0
- data/spec/unit/type/file/owner_spec.rb +58 -0
- data/spec/unit/type/file/selinux_spec.rb +89 -0
- data/spec/unit/type/file/source_spec.rb +577 -0
- data/spec/unit/type/file/type_spec.rb +19 -0
- data/spec/unit/type/file_spec.rb +1504 -0
- data/spec/unit/type/filebucket_spec.rb +103 -0
- data/spec/unit/type/group_spec.rb +84 -0
- data/spec/unit/type/host_spec.rb +665 -0
- data/spec/unit/type/interface_spec.rb +97 -0
- data/spec/unit/type/k5login_spec.rb +115 -0
- data/spec/unit/type/macauthorization_spec.rb +110 -0
- data/spec/unit/type/mailalias_spec.rb +21 -0
- data/spec/unit/type/maillist_spec.rb +41 -0
- data/spec/unit/type/mcx_spec.rb +79 -0
- data/spec/unit/type/mount_spec.rb +592 -0
- data/spec/unit/type/nagios_spec.rb +293 -0
- data/spec/unit/type/noop_metaparam_spec.rb +38 -0
- data/spec/unit/type/package/package_settings_spec.rb +135 -0
- data/spec/unit/type/package_spec.rb +324 -0
- data/spec/unit/type/resources_spec.rb +318 -0
- data/spec/unit/type/schedule_spec.rb +607 -0
- data/spec/unit/type/scheduled_task_spec.rb +103 -0
- data/spec/unit/type/selboolean_spec.rb +44 -0
- data/spec/unit/type/selmodule_spec.rb +17 -0
- data/spec/unit/type/service_spec.rb +261 -0
- data/spec/unit/type/ssh_authorized_key_spec.rb +258 -0
- data/spec/unit/type/sshkey_spec.rb +77 -0
- data/spec/unit/type/stage_spec.rb +8 -0
- data/spec/unit/type/tidy_spec.rb +433 -0
- data/spec/unit/type/user_spec.rb +514 -0
- data/spec/unit/type/vlan_spec.rb +44 -0
- data/spec/unit/type/whit_spec.rb +10 -0
- data/spec/unit/type/yumrepo_spec.rb +387 -0
- data/spec/unit/type/zfs_spec.rb +46 -0
- data/spec/unit/type/zone_spec.rb +172 -0
- data/spec/unit/type/zpool_spec.rb +109 -0
- data/spec/unit/type_spec.rb +1114 -0
- data/spec/unit/util/autoload_spec.rb +256 -0
- data/spec/unit/util/backups_spec.rb +134 -0
- data/spec/unit/util/cache_accumulator_spec.rb +74 -0
- data/spec/unit/util/cacher_spec.rb +107 -0
- data/spec/unit/util/checksums_spec.rb +180 -0
- data/spec/unit/util/colors_spec.rb +89 -0
- data/spec/unit/util/command_line_spec.rb +192 -0
- data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +129 -0
- data/spec/unit/util/constant_inflector_spec.rb +56 -0
- data/spec/unit/util/diff_spec.rb +39 -0
- data/spec/unit/util/docs_spec.rb +100 -0
- data/spec/unit/util/errors_spec.rb +37 -0
- data/spec/unit/util/execution_spec.rb +630 -0
- data/spec/unit/util/execution_stub_spec.rb +39 -0
- data/spec/unit/util/feature_spec.rb +106 -0
- data/spec/unit/util/filetype_spec.rb +211 -0
- data/spec/unit/util/http_proxy_spec.rb +125 -0
- data/spec/unit/util/inifile_spec.rb +492 -0
- data/spec/unit/util/inline_docs_spec.rb +31 -0
- data/spec/unit/util/instrumentation/data_spec.rb +46 -0
- data/spec/unit/util/instrumentation/indirection_probe_spec.rb +21 -0
- data/spec/unit/util/instrumentation/instrumentable_spec.rb +186 -0
- data/spec/unit/util/instrumentation/listener_spec.rb +101 -0
- data/spec/unit/util/instrumentation/listeners/log_spec.rb +34 -0
- data/spec/unit/util/instrumentation/listeners/performance_spec.rb +36 -0
- data/spec/unit/util/instrumentation_spec.rb +181 -0
- data/spec/unit/util/json_lockfile_spec.rb +50 -0
- data/spec/unit/util/ldap/connection_spec.rb +161 -0
- data/spec/unit/util/ldap/generator_spec.rb +50 -0
- data/spec/unit/util/ldap/manager_spec.rb +641 -0
- data/spec/unit/util/lockfile_spec.rb +118 -0
- data/spec/unit/util/log/destinations_spec.rb +227 -0
- data/spec/unit/util/log/rate_limited_logger_spec.rb +51 -0
- data/spec/unit/util/log_spec.rb +378 -0
- data/spec/unit/util/logging_spec.rb +205 -0
- data/spec/unit/util/metric_spec.rb +98 -0
- data/spec/unit/util/monkey_patches/lines_spec.rb +83 -0
- data/spec/unit/util/monkey_patches_spec.rb +328 -0
- data/spec/unit/util/nagios_maker_spec.rb +122 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +445 -0
- data/spec/unit/util/network_device/cisco/facts_spec.rb +64 -0
- data/spec/unit/util/network_device/cisco/interface_spec.rb +88 -0
- data/spec/unit/util/network_device/config_spec.rb +86 -0
- data/spec/unit/util/network_device/ipcalc_spec.rb +62 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +41 -0
- data/spec/unit/util/network_device/transport/ssh_spec.rb +218 -0
- data/spec/unit/util/network_device/transport/telnet_spec.rb +84 -0
- data/spec/unit/util/network_device_spec.rb +50 -0
- data/spec/unit/util/package_spec.rb +20 -0
- data/spec/unit/util/pidlock_spec.rb +218 -0
- data/spec/unit/util/posix_spec.rb +251 -0
- 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 +70 -0
- data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
- data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
- data/spec/unit/util/profiler_spec.rb +55 -0
- data/spec/unit/util/pson_spec.rb +71 -0
- data/spec/unit/util/queue/stomp_spec.rb +137 -0
- data/spec/unit/util/queue_spec.rb +94 -0
- data/spec/unit/util/rdoc/parser_spec.rb +608 -0
- data/spec/unit/util/rdoc_spec.rb +141 -0
- data/spec/unit/util/reference_serializer_spec.rb +51 -0
- data/spec/unit/util/reference_spec.rb +39 -0
- data/spec/unit/util/resource_template_spec.rb +57 -0
- data/spec/unit/util/retryaction_spec.rb +62 -0
- data/spec/unit/util/rubygems_spec.rb +82 -0
- data/spec/unit/util/run_mode_spec.rb +145 -0
- data/spec/unit/util/selinux_spec.rb +289 -0
- data/spec/unit/util/ssl_spec.rb +92 -0
- data/spec/unit/util/storage_spec.rb +210 -0
- data/spec/unit/util/suidmanager_spec.rb +297 -0
- data/spec/unit/util/symbolic_file_mode_spec.rb +182 -0
- data/spec/unit/util/tag_set_spec.rb +46 -0
- data/spec/unit/util/tagging_spec.rb +162 -0
- data/spec/unit/util/terminal_spec.rb +42 -0
- data/spec/unit/util/user_attr_spec.rb +46 -0
- data/spec/unit/util/warnings_spec.rb +38 -0
- data/spec/unit/util/watched_file_spec.rb +52 -0
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
- data/spec/unit/util/watcher_spec.rb +56 -0
- data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
- data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
- data/spec/unit/util/windows/adsi_spec.rb +440 -0
- data/spec/unit/util/windows/api_types_spec.rb +28 -0
- data/spec/unit/util/windows/registry_spec.rb +141 -0
- data/spec/unit/util/windows/root_certs_spec.rb +17 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
- data/spec/unit/util/windows/sid_spec.rb +166 -0
- data/spec/unit/util/windows/string_spec.rb +58 -0
- data/spec/unit/util/yaml_spec.rb +55 -0
- data/spec/unit/util/zaml_spec.rb +308 -0
- data/spec/unit/util_spec.rb +577 -0
- data/spec/unit/version_spec.rb +42 -0
- data/spec/watchr.rb +142 -0
- data/tasks/benchmark.rake +144 -0
- data/tasks/ci.rake +29 -0
- data/tasks/manpages.rake +84 -0
- data/tasks/parallel.rake +408 -0
- data/tasks/parser.rake +19 -0
- data/tasks/yard.rake +59 -0
- metadata +3727 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
# This module is an integral part of the Lexer.
|
2
|
+
# It defines the string slurping behavior - finding the string and non string parts in interpolated
|
3
|
+
# strings, translating escape sequences in strings to their single character equivalence.
|
4
|
+
#
|
5
|
+
# PERFORMANCE NOTE: The various kinds of slurping could be made even more generic, but requires
|
6
|
+
# additional parameter passing and evaluation of conditional logic.
|
7
|
+
# TODO: More detailed performance analysis of excessive character escaping and interpolation.
|
8
|
+
#
|
9
|
+
module Puppet::Pops::Parser::SlurpSupport
|
10
|
+
|
11
|
+
SLURP_SQ_PATTERN = /(?:[^\\]|^|[^\\])(?:[\\]{2})*[']/
|
12
|
+
SLURP_DQ_PATTERN = /(?:[^\\]|^|[^\\])(?:[\\]{2})*(["]|[$]\{?)/
|
13
|
+
SLURP_UQ_PATTERN = /(?:[^\\]|^|[^\\])(?:[\\]{2})*([$]\{?|\z)/
|
14
|
+
SLURP_ALL_PATTERN = /.*(\z)/m
|
15
|
+
SQ_ESCAPES = %w{ \\ ' }
|
16
|
+
DQ_ESCAPES = %w{ \\ $ ' " r n t s u}+["\r\n", "\n"]
|
17
|
+
UQ_ESCAPES = %w{ \\ $ r n t s u}+["\r\n", "\n"]
|
18
|
+
|
19
|
+
def slurp_sqstring
|
20
|
+
# skip the leading '
|
21
|
+
@scanner.pos += 1
|
22
|
+
str = slurp(@scanner, SLURP_SQ_PATTERN, SQ_ESCAPES, :ignore_invalid_escapes) || lex_error("Unclosed quote after \"'\" followed by '#{followed_by}'")
|
23
|
+
str[0..-2] # strip closing "'" from result
|
24
|
+
end
|
25
|
+
|
26
|
+
def slurp_dqstring
|
27
|
+
scn = @scanner
|
28
|
+
last = scn.matched
|
29
|
+
str = slurp(scn, SLURP_DQ_PATTERN, DQ_ESCAPES, false)
|
30
|
+
unless str
|
31
|
+
lex_error("Unclosed quote after #{format_quote(last)} followed by '#{followed_by}'")
|
32
|
+
end
|
33
|
+
|
34
|
+
# Terminator may be a single char '"', '$', or two characters '${' group match 1 (scn[1]) from the last slurp holds this
|
35
|
+
terminator = scn[1]
|
36
|
+
[str[0..(-1 - terminator.length)], terminator]
|
37
|
+
end
|
38
|
+
|
39
|
+
# Copy from old lexer - can do much better
|
40
|
+
def slurp_uqstring
|
41
|
+
scn = @scanner
|
42
|
+
last = scn.matched
|
43
|
+
ignore = true
|
44
|
+
str = slurp(scn, @lexing_context[:uq_slurp_pattern], @lexing_context[:escapes], :ignore_invalid_escapes)
|
45
|
+
|
46
|
+
# Terminator may be a single char '$', two characters '${', or empty string '' at the end of intput.
|
47
|
+
# Group match 1 holds this.
|
48
|
+
# The exceptional case is found by looking at the subgroup 1 of the most recent match made by the scanner (i.e. @scanner[1]).
|
49
|
+
# This is the last match made by the slurp method (having called scan_until on the scanner).
|
50
|
+
# If there is a terminating character is must be stripped and returned separately.
|
51
|
+
#
|
52
|
+
terminator = scn[1]
|
53
|
+
[str[0..(-1 - terminator.length)], terminator]
|
54
|
+
end
|
55
|
+
|
56
|
+
# Slurps a string from the given scanner until the given pattern and then replaces any escaped
|
57
|
+
# characters given by escapes into their control-character equivalent or in case of line breaks, replaces the
|
58
|
+
# pattern \r?\n with an empty string.
|
59
|
+
# The returned string contains the terminating character. Returns nil if the scanner can not scan until the given
|
60
|
+
# pattern.
|
61
|
+
#
|
62
|
+
def slurp(scanner, pattern, escapes, ignore_invalid_escapes)
|
63
|
+
str = scanner.scan_until(pattern) || return
|
64
|
+
|
65
|
+
# Process unicode escapes first as they require getting 4 hex digits
|
66
|
+
# If later a \u is found it is warned not to be a unicode escape
|
67
|
+
if escapes.include?('u')
|
68
|
+
str.gsub!(/\\u([\da-fA-F]{4})/m) {
|
69
|
+
[$1.hex].pack("U")
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
str.gsub!(/\\([^\r\n]|(?:\r?\n))/m) {
|
74
|
+
ch = $1
|
75
|
+
if escapes.include? ch
|
76
|
+
case ch
|
77
|
+
when 'r' ; "\r"
|
78
|
+
when 'n' ; "\n"
|
79
|
+
when 't' ; "\t"
|
80
|
+
when 's' ; " "
|
81
|
+
when 'u'
|
82
|
+
Puppet.warning(positioned_message("Unicode escape '\\u' was not followed by 4 hex digits"))
|
83
|
+
"\\u"
|
84
|
+
when "\n" ; ''
|
85
|
+
when "\r\n"; ''
|
86
|
+
else ch
|
87
|
+
end
|
88
|
+
else
|
89
|
+
Puppet.warning(positioned_message("Unrecognized escape sequence '\\#{ch}'")) unless ignore_invalid_escapes
|
90
|
+
"\\#{ch}"
|
91
|
+
end
|
92
|
+
}
|
93
|
+
str
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# The Patterns module contains common regular expression patters for the Puppet DSL language
|
2
|
+
module Puppet::Pops::Patterns
|
3
|
+
|
4
|
+
# NUMERIC matches hex, octal, decimal, and floating point and captures several parts
|
5
|
+
# 0 = entire matched number, leading and trailing whitespace and sign included
|
6
|
+
# 1 = sign, +, - or nothing
|
7
|
+
# 2 = entire numeric part
|
8
|
+
# 3 = hexadecimal number
|
9
|
+
# 4 = non hex integer portion, possibly with leading 0 (octal)
|
10
|
+
# 5 = floating point part, starts with ".", decimals and optional exponent
|
11
|
+
#
|
12
|
+
# Thus, a hex number has group 3 value, an octal value has group 4 (if it starts with 0), and no group 3
|
13
|
+
# and a floating point value has group 4 and group 5.
|
14
|
+
#
|
15
|
+
NUMERIC = %r{\A[[:blank:]]*([-+]?)[[:blank:]]*((0[xX][0-9A-Fa-f]+)|(0?\d+)((?:\.\d+)?(?:[eE]-?\d+)?))[[:blank:]]*\z}
|
16
|
+
|
17
|
+
# ILLEGAL_P3_1_HOSTNAME matches if a hostname contains illegal characters.
|
18
|
+
# This check does not prevent pathological names like 'a....b', '.....', "---". etc.
|
19
|
+
ILLEGAL_HOSTNAME_CHARS = %r{[^-\w.]}
|
20
|
+
|
21
|
+
# NAME matches a name the same way as the lexer.
|
22
|
+
NAME = %r{\A((::)?[a-z]\w*)(::[a-z]\w*)*\z}
|
23
|
+
|
24
|
+
# CLASSREF_EXT matches a class reference the same way as the lexer - i.e. the external source form
|
25
|
+
# where each part must start with a capital letter A-Z.
|
26
|
+
#
|
27
|
+
CLASSREF_EXT = %r{\A((::){0,1}[A-Z][\w]*)+\z}
|
28
|
+
|
29
|
+
# CLASSREF matches a class reference the way it is represented internally in the
|
30
|
+
# model (i.e. in lower case).
|
31
|
+
#
|
32
|
+
CLASSREF = %r{\A((::){0,1}[a-z][\w]*)+\z}
|
33
|
+
|
34
|
+
# DOLLAR_VAR matches a variable name including the initial $ character
|
35
|
+
DOLLAR_VAR = %r{\$(::)?(\w+::)*\w+}
|
36
|
+
|
37
|
+
# VAR_NAME matches the name part of a variable (The $ character is not included)
|
38
|
+
# Note, that only the final segment may start with an underscore.
|
39
|
+
VAR_NAME = %r{\A(:?(::)?[a-z]\w*)*(:?(::)?[a-z_]\w*)\z}
|
40
|
+
|
41
|
+
# A Numeric var name must be the decimal number 0, or a decimal number not starting with 0
|
42
|
+
NUMERIC_VAR_NAME = %r{\A(?:0|(?:[1-9][0-9]*))\z}
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Error that is used to raise an Issue. See {Puppet::Pops::Issues}.
|
2
|
+
#
|
3
|
+
class Puppet::Pops::SemanticError < RuntimeError
|
4
|
+
attr_accessor :issue
|
5
|
+
attr_accessor :semantic
|
6
|
+
attr_accessor :options
|
7
|
+
|
8
|
+
# @param issue [Puppet::Pops::Issues::Issue] the issue describing the severity and message
|
9
|
+
# @param semantic [Puppet::Pops::Model::Locatable, nil] the expression causing the failure, or nil if unknown
|
10
|
+
# @param options [Hash] an options hash with Symbol to value mapping - these are the arguments to the issue
|
11
|
+
#
|
12
|
+
def initialize(issue, semantic=nil, options = {})
|
13
|
+
@issue = issue
|
14
|
+
@semantic = semantic
|
15
|
+
@options = options
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'rgen/metamodel_builder'
|
2
|
+
|
3
|
+
# The ClassLoader provides a Class instance given a class name or a meta-type.
|
4
|
+
# If the class is not already loaded, it is loaded using the Puppet Autoloader.
|
5
|
+
# This means it can load a class from a gem, or from puppet modules.
|
6
|
+
#
|
7
|
+
class Puppet::Pops::Types::ClassLoader
|
8
|
+
@autoloader = Puppet::Util::Autoload.new("ClassLoader", "", :wrap => false)
|
9
|
+
|
10
|
+
# Returns a Class given a fully qualified class name.
|
11
|
+
# Lookup of class is never relative to the calling namespace.
|
12
|
+
# @param name [String, Array<String>, Array<Symbol>, Puppet::Pops::Types::PAnyType] A fully qualified
|
13
|
+
# class name String (e.g. '::Foo::Bar', 'Foo::Bar'), a PAnyType, or a fully qualified name in Array form where each part
|
14
|
+
# is either a String or a Symbol, e.g. `%w{Puppetx Puppetlabs SomeExtension}`.
|
15
|
+
# @return [Class, nil] the looked up class or nil if no such class is loaded
|
16
|
+
# @raise ArgumentError If the given argument has the wrong type
|
17
|
+
# @api public
|
18
|
+
#
|
19
|
+
def self.provide(name)
|
20
|
+
case name
|
21
|
+
when String
|
22
|
+
provide_from_string(name)
|
23
|
+
|
24
|
+
when Array
|
25
|
+
provide_from_name_path(name.join('::'), name)
|
26
|
+
|
27
|
+
when Puppet::Pops::Types::PAnyType, Puppet::Pops::Types::PType
|
28
|
+
provide_from_type(name)
|
29
|
+
|
30
|
+
else
|
31
|
+
raise ArgumentError, "Cannot provide a class from a '#{name.class.name}'"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def self.provide_from_type(type)
|
38
|
+
case type
|
39
|
+
when Puppet::Pops::Types::PRuntimeType
|
40
|
+
raise ArgumentError.new("Only Runtime type 'ruby' is supported, got #{type.runtime}") unless type.runtime == :ruby
|
41
|
+
provide_from_string(type.runtime_type_name)
|
42
|
+
|
43
|
+
when Puppet::Pops::Types::PBooleanType
|
44
|
+
# There is no other thing to load except this Enum meta type
|
45
|
+
RGen::MetamodelBuilder::MMBase::Boolean
|
46
|
+
|
47
|
+
when Puppet::Pops::Types::PType
|
48
|
+
# TODO: PType should has a type argument (a PAnyType) so the Class' class could be returned
|
49
|
+
# (but this only matters in special circumstances when meta programming has been used).
|
50
|
+
Class
|
51
|
+
|
52
|
+
when Puppet::Pops::Type::POptionalType
|
53
|
+
# cannot make a distinction between optional and its type
|
54
|
+
provide_from_type(type.optional_type)
|
55
|
+
|
56
|
+
# Although not expected to be the first choice for getting a concrete class for these
|
57
|
+
# types, these are of value if the calling logic just has a reference to type.
|
58
|
+
#
|
59
|
+
when Puppet::Pops::Types::PArrayType ; Array
|
60
|
+
when Puppet::Pops::Types::PTupleType ; Array
|
61
|
+
when Puppet::Pops::Types::PHashType ; Hash
|
62
|
+
when Puppet::Pops::Types::PStructType ; Hash
|
63
|
+
when Puppet::Pops::Types::PRegexpType ; Regexp
|
64
|
+
when Puppet::Pops::Types::PIntegerType ; Integer
|
65
|
+
when Puppet::Pops::Types::PStringType ; String
|
66
|
+
when Puppet::Pops::Types::PPatternType ; String
|
67
|
+
when Puppet::Pops::Types::PEnumType ; String
|
68
|
+
when Puppet::Pops::Types::PFloatType ; Float
|
69
|
+
when Puppet::Pops::Types::PNilType ; NilClass
|
70
|
+
when Puppet::Pops::Types::PCallableType ; Proc
|
71
|
+
else
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.provide_from_string(name)
|
77
|
+
name_path = name.split('::')
|
78
|
+
# always from the root, so remove an empty first segment
|
79
|
+
if name_path[0].empty?
|
80
|
+
name_path = name_path[1..-1]
|
81
|
+
end
|
82
|
+
provide_from_name_path(name, name_path)
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.provide_from_name_path(name, name_path)
|
86
|
+
# If class is already loaded, try this first
|
87
|
+
result = find_class(name_path)
|
88
|
+
|
89
|
+
unless result.is_a?(Class)
|
90
|
+
# Attempt to load it using the auto loader
|
91
|
+
loaded_path = nil
|
92
|
+
if paths_for_name(name).find {|path| loaded_path = path; @autoloader.load(path) }
|
93
|
+
result = find_class(name_path)
|
94
|
+
unless result.is_a?(Class)
|
95
|
+
raise RuntimeError, "Loading of #{name} using relative path: '#{loaded_path}' did not create expected class"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
return nil unless result.is_a?(Class)
|
100
|
+
result
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.find_class(name_path)
|
104
|
+
name_path.reduce(Object) do |ns, name|
|
105
|
+
begin
|
106
|
+
ns.const_get(name)
|
107
|
+
rescue NameError
|
108
|
+
return nil
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def self.paths_for_name(fq_name)
|
114
|
+
[de_camel(fq_name), downcased_path(fq_name)]
|
115
|
+
end
|
116
|
+
|
117
|
+
def self.downcased_path(fq_name)
|
118
|
+
fq_name.to_s.gsub(/::/, '/').downcase
|
119
|
+
end
|
120
|
+
|
121
|
+
def self.de_camel(fq_name)
|
122
|
+
fq_name.to_s.gsub(/::/, '/').
|
123
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
124
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
125
|
+
tr("-", "_").
|
126
|
+
downcase
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# The Enumeration class provides default Enumerable::Enumerator creation for Puppet Programming Language
|
2
|
+
# runtime objects that supports the concept of enumeration.
|
3
|
+
#
|
4
|
+
class Puppet::Pops::Types::Enumeration
|
5
|
+
# Produces an Enumerable::Enumerator for Array, Hash, Integer, Integer Range, and String.
|
6
|
+
#
|
7
|
+
def self.enumerator(o)
|
8
|
+
@@singleton ||= new
|
9
|
+
@@singleton.enumerator(o)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Produces an Enumerator for Array, Hash, Integer, Integer Range, and String.
|
13
|
+
#
|
14
|
+
def enumerator(o)
|
15
|
+
case o
|
16
|
+
when String
|
17
|
+
x = o.chars
|
18
|
+
# Ruby 1.8.7 returns Enumerable::Enumerator, Ruby 1.8.9 Enumerator, and 2.0.0 an Array
|
19
|
+
x.is_a?(Array) ? x.each : x
|
20
|
+
when Integer
|
21
|
+
o.times
|
22
|
+
when Array
|
23
|
+
o.each
|
24
|
+
when Hash
|
25
|
+
o.each
|
26
|
+
when Puppet::Pops::Types::PIntegerType
|
27
|
+
# Not enumerable if representing an infinite range
|
28
|
+
return nil if o.to.nil? || o.from.nil?
|
29
|
+
o.each
|
30
|
+
else
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,1698 @@
|
|
1
|
+
# The TypeCalculator can answer questions about puppet types.
|
2
|
+
#
|
3
|
+
# The Puppet type system is primarily based on sub-classing. When asking the type calculator to infer types from Ruby in general, it
|
4
|
+
# may not provide the wanted answer; it does not for instance take module inclusions and extensions into account. In general the type
|
5
|
+
# system should be unsurprising for anyone being exposed to the notion of type. The type `Data` may require a bit more explanation; this
|
6
|
+
# is an abstract type that includes all scalar types, as well as Array with an element type compatible with Data, and Hash with key
|
7
|
+
# compatible with scalar and elements compatible with Data. Expressed differently; Data is what you typically express using JSON (with
|
8
|
+
# the exception that the Puppet type system also includes Pattern (regular expression) as a scalar.
|
9
|
+
#
|
10
|
+
# Inference
|
11
|
+
# ---------
|
12
|
+
# The `infer(o)` method infers a Puppet type for scalar Ruby objects, and for Arrays and Hashes.
|
13
|
+
# The inference result is instance specific for single typed collections
|
14
|
+
# and allows answering questions about its embedded type. It does not however preserve multiple types in
|
15
|
+
# a collection, and can thus not answer questions like `[1,a].infer() =~ Array[Integer, String]` since the inference
|
16
|
+
# computes the common type Scalar when combining Integer and String.
|
17
|
+
#
|
18
|
+
# The `infer_generic(o)` method infers a generic Puppet type for scalar Ruby object, Arrays and Hashes.
|
19
|
+
# This inference result does not contain instance specific information; e.g. Array[Integer] where the integer
|
20
|
+
# range is the generic default. Just `infer` it also combines types into a common type.
|
21
|
+
#
|
22
|
+
# The `infer_set(o)` method works like `infer` but preserves all type information. It does not do any
|
23
|
+
# reduction into common types or ranges. This method of inference is best suited for answering questions
|
24
|
+
# about an object being an instance of a type. It correctly answers: `[1,a].infer_set() =~ Array[Integer, String]`
|
25
|
+
#
|
26
|
+
# The `generalize!(t)` method modifies an instance specific inference result to a generic. The method mutates
|
27
|
+
# the given argument. Basically, this removes string instances from String, and range from Integer and Float.
|
28
|
+
#
|
29
|
+
# Assignability
|
30
|
+
# -------------
|
31
|
+
# The `assignable?(t1, t2)` method answers if t2 conforms to t1. The type t2 may be an instance, in which case
|
32
|
+
# its type is inferred, or a type.
|
33
|
+
#
|
34
|
+
# Instance?
|
35
|
+
# ---------
|
36
|
+
# The `instance?(t, o)` method answers if the given object (instance) is an instance that is assignable to the given type.
|
37
|
+
#
|
38
|
+
# String
|
39
|
+
# ------
|
40
|
+
# Creates a string representation of a type.
|
41
|
+
#
|
42
|
+
# Creation of Type instances
|
43
|
+
# --------------------------
|
44
|
+
# Instance of the classes in the {Puppet::Pops::Types type model} are used to denote a specific type. It is most convenient
|
45
|
+
# to use the {Puppet::Pops::Types::TypeFactory TypeFactory} when creating instances.
|
46
|
+
#
|
47
|
+
# @note
|
48
|
+
# In general, new instances of the wanted type should be created as they are assigned to models using containment, and a
|
49
|
+
# contained object can only be in one container at a time. Also, the type system may include more details in each type
|
50
|
+
# instance, such as if it may be nil, be empty, contain a certain count etc. Or put differently, the puppet types are not
|
51
|
+
# singletons.
|
52
|
+
#
|
53
|
+
# All types support `copy` which should be used when assigning a type where it is unknown if it is bound or not
|
54
|
+
# to a parent type. A check can be made with `t.eContainer().nil?`
|
55
|
+
#
|
56
|
+
# Equality and Hash
|
57
|
+
# -----------------
|
58
|
+
# Type instances are equal in terms of Ruby eql? and `==` if they describe the same type, but they are not `equal?` if they are not
|
59
|
+
# the same type instance. Two types that describe the same type have identical hash - this makes them usable as hash keys.
|
60
|
+
#
|
61
|
+
# Types and Subclasses
|
62
|
+
# --------------------
|
63
|
+
# In general, the type calculator should be used to answer questions if a type is a subtype of another (using {#assignable?}, or
|
64
|
+
# {#instance?} if the question is if a given object is an instance of a given type (or is a subtype thereof).
|
65
|
+
# Many of the types also have a Ruby subtype relationship; e.g. PHashType and PArrayType are both subtypes of PCollectionType, and
|
66
|
+
# PIntegerType, PFloatType, PStringType,... are subtypes of PScalarType. Even if it is possible to answer certain questions about
|
67
|
+
# type by looking at the Ruby class of the types this is considered an implementation detail, and such checks should in general
|
68
|
+
# be performed by the type_calculator which implements the type system semantics.
|
69
|
+
#
|
70
|
+
# The PRuntimeType
|
71
|
+
# -------------
|
72
|
+
# The PRuntimeType corresponds to a type in the runtime system (currently only supported runtime is 'ruby'). The
|
73
|
+
# type has a runtime_type_name that corresponds to a Ruby Class name.
|
74
|
+
# A Runtime[ruby] type can be used to describe any ruby class except for the puppet types that are specialized
|
75
|
+
# (i.e. PRuntimeType should not be used for Integer, String, etc. since there are specialized types for those).
|
76
|
+
# When the type calculator deals with PRuntimeTypes and checks for assignability, it determines the
|
77
|
+
# "common ancestor class" of two classes.
|
78
|
+
# This check is made based on the superclasses of the two classes being compared. In order to perform this, the
|
79
|
+
# classes must be present (i.e. they are resolved from the string form in the PRuntimeType to a
|
80
|
+
# loaded, instantiated Ruby Class). In general this is not a problem, since the question to produce the common
|
81
|
+
# super type for two objects means that the classes must be present or there would have been
|
82
|
+
# no instances present in the first place. If however the classes are not present, the type
|
83
|
+
# calculator will fall back and state that the two types at least have Any in common.
|
84
|
+
#
|
85
|
+
# @see Puppet::Pops::Types::TypeFactory TypeFactory for how to create instances of types
|
86
|
+
# @see Puppet::Pops::Types::TypeParser TypeParser how to construct a type instance from a String
|
87
|
+
# @see Puppet::Pops::Types Types for details about the type model
|
88
|
+
#
|
89
|
+
# Using the Type Calculator
|
90
|
+
# -----
|
91
|
+
# The type calculator can be directly used via its class methods. If doing time critical work and doing many
|
92
|
+
# calls to the type calculator, it is more performant to create an instance and invoke the corresponding
|
93
|
+
# instance methods. Note that inference is an expensive operation, rather than inferring the same thing
|
94
|
+
# several times, it is in general better to infer once and then copy the result if mutation to a more generic form is
|
95
|
+
# required.
|
96
|
+
#
|
97
|
+
# @api public
|
98
|
+
#
|
99
|
+
class Puppet::Pops::Types::TypeCalculator
|
100
|
+
|
101
|
+
Types = Puppet::Pops::Types
|
102
|
+
TheInfinity = 1.0 / 0.0 # because the Infinity symbol is not defined
|
103
|
+
|
104
|
+
# @api public
|
105
|
+
def self.assignable?(t1, t2)
|
106
|
+
singleton.assignable?(t1,t2)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Answers, does the given callable accept the arguments given in args (an array or a tuple)
|
110
|
+
# @param callable [Puppet::Pops::Types::PCallableType] - the callable
|
111
|
+
# @param args [Puppet::Pops::Types::PArrayType, Puppet::Pops::Types::PTupleType] args optionally including a lambda callable at the end
|
112
|
+
# @return [Boolan] true if the callable accepts the arguments
|
113
|
+
#
|
114
|
+
# @api public
|
115
|
+
def self.callable?(callable, args)
|
116
|
+
singleton.callable?(callable, args)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Produces a String representation of the given type.
|
120
|
+
# @param t [Puppet::Pops::Types::PAnyType] the type to produce a string form
|
121
|
+
# @return [String] the type in string form
|
122
|
+
#
|
123
|
+
# @api public
|
124
|
+
#
|
125
|
+
def self.string(t)
|
126
|
+
singleton.string(t)
|
127
|
+
end
|
128
|
+
|
129
|
+
# @api public
|
130
|
+
def self.infer(o)
|
131
|
+
singleton.infer(o)
|
132
|
+
end
|
133
|
+
|
134
|
+
# @api public
|
135
|
+
def self.generalize!(o)
|
136
|
+
singleton.generalize!(o)
|
137
|
+
end
|
138
|
+
|
139
|
+
# @api public
|
140
|
+
def self.infer_set(o)
|
141
|
+
singleton.infer_set(o)
|
142
|
+
end
|
143
|
+
|
144
|
+
# @api public
|
145
|
+
def self.debug_string(t)
|
146
|
+
singleton.debug_string(t)
|
147
|
+
end
|
148
|
+
|
149
|
+
# @api public
|
150
|
+
def self.enumerable(t)
|
151
|
+
singleton.enumerable(t)
|
152
|
+
end
|
153
|
+
|
154
|
+
# @api private
|
155
|
+
def self.singleton()
|
156
|
+
@tc_instance ||= new
|
157
|
+
end
|
158
|
+
|
159
|
+
# @api public
|
160
|
+
#
|
161
|
+
def initialize
|
162
|
+
@@assignable_visitor ||= Puppet::Pops::Visitor.new(nil,"assignable",1,1)
|
163
|
+
@@infer_visitor ||= Puppet::Pops::Visitor.new(nil,"infer",0,0)
|
164
|
+
@@infer_set_visitor ||= Puppet::Pops::Visitor.new(nil,"infer_set",0,0)
|
165
|
+
@@instance_of_visitor ||= Puppet::Pops::Visitor.new(nil,"instance_of",1,1)
|
166
|
+
@@string_visitor ||= Puppet::Pops::Visitor.new(nil,"string",0,0)
|
167
|
+
@@inspect_visitor ||= Puppet::Pops::Visitor.new(nil,"debug_string",0,0)
|
168
|
+
@@enumerable_visitor ||= Puppet::Pops::Visitor.new(nil,"enumerable",0,0)
|
169
|
+
@@extract_visitor ||= Puppet::Pops::Visitor.new(nil,"extract",0,0)
|
170
|
+
@@generalize_visitor ||= Puppet::Pops::Visitor.new(nil,"generalize",0,0)
|
171
|
+
@@callable_visitor ||= Puppet::Pops::Visitor.new(nil,"callable",1,1)
|
172
|
+
|
173
|
+
da = Types::PArrayType.new()
|
174
|
+
da.element_type = Types::PDataType.new()
|
175
|
+
@data_array = da
|
176
|
+
|
177
|
+
h = Types::PHashType.new()
|
178
|
+
h.element_type = Types::PDataType.new()
|
179
|
+
h.key_type = Types::PScalarType.new()
|
180
|
+
@data_hash = h
|
181
|
+
|
182
|
+
@data_t = Types::PDataType.new()
|
183
|
+
@scalar_t = Types::PScalarType.new()
|
184
|
+
@numeric_t = Types::PNumericType.new()
|
185
|
+
@t = Types::PAnyType.new()
|
186
|
+
|
187
|
+
# Data accepts a Tuple that has 0-infinity Data compatible entries (e.g. a Tuple equivalent to Array).
|
188
|
+
data_tuple = Types::PTupleType.new()
|
189
|
+
data_tuple.addTypes(Types::PDataType.new())
|
190
|
+
data_tuple.size_type = Types::PIntegerType.new()
|
191
|
+
data_tuple.size_type.from = 0
|
192
|
+
data_tuple.size_type.to = nil # infinity
|
193
|
+
@data_tuple_t = data_tuple
|
194
|
+
|
195
|
+
# Variant type compatible with Data
|
196
|
+
data_variant = Types::PVariantType.new()
|
197
|
+
data_variant.addTypes(@data_hash.copy)
|
198
|
+
data_variant.addTypes(@data_array.copy)
|
199
|
+
data_variant.addTypes(Types::PScalarType.new)
|
200
|
+
data_variant.addTypes(Types::PNilType.new)
|
201
|
+
data_variant.addTypes(@data_tuple_t.copy)
|
202
|
+
@data_variant_t = data_variant
|
203
|
+
|
204
|
+
collection_default_size = Types::PIntegerType.new()
|
205
|
+
collection_default_size.from = 0
|
206
|
+
collection_default_size.to = nil # infinity
|
207
|
+
@collection_default_size_t = collection_default_size
|
208
|
+
|
209
|
+
non_empty_string = Types::PStringType.new
|
210
|
+
non_empty_string.size_type = Types::PIntegerType.new()
|
211
|
+
non_empty_string.size_type.from = 1
|
212
|
+
non_empty_string.size_type.to = nil # infinity
|
213
|
+
@non_empty_string_t = non_empty_string
|
214
|
+
|
215
|
+
@nil_t = Types::PNilType.new
|
216
|
+
end
|
217
|
+
|
218
|
+
# Convenience method to get a data type for comparisons
|
219
|
+
# @api private the returned value may not be contained in another element
|
220
|
+
#
|
221
|
+
def data
|
222
|
+
@data_t
|
223
|
+
end
|
224
|
+
|
225
|
+
# Convenience method to get a variant compatible with the Data type.
|
226
|
+
# @api private the returned value may not be contained in another element
|
227
|
+
#
|
228
|
+
def data_variant
|
229
|
+
@data_variant_t
|
230
|
+
end
|
231
|
+
|
232
|
+
def self.data_variant
|
233
|
+
singleton.data_variant
|
234
|
+
end
|
235
|
+
|
236
|
+
# Answers the question 'is it possible to inject an instance of the given class'
|
237
|
+
# A class is injectable if it has a special *assisted inject* class method called `inject` taking
|
238
|
+
# an injector and a scope as argument, or if it has a zero args `initialize` method.
|
239
|
+
#
|
240
|
+
# @param klazz [Class, PRuntimeType] the class/type to check if it is injectable
|
241
|
+
# @return [Class, nil] the injectable Class, or nil if not injectable
|
242
|
+
# @api public
|
243
|
+
#
|
244
|
+
def injectable_class(klazz)
|
245
|
+
# Handle case when we get a PType instead of a class
|
246
|
+
if klazz.is_a?(Types::PRuntimeType)
|
247
|
+
klazz = Puppet::Pops::Types::ClassLoader.provide(klazz)
|
248
|
+
end
|
249
|
+
|
250
|
+
# data types can not be injected (check again, it is not safe to assume that given RubyRuntime klazz arg was ok)
|
251
|
+
return false unless type(klazz).is_a?(Types::PRuntimeType)
|
252
|
+
if (klazz.respond_to?(:inject) && klazz.method(:inject).arity() == -4) || klazz.instance_method(:initialize).arity() == 0
|
253
|
+
klazz
|
254
|
+
else
|
255
|
+
nil
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
# Answers 'can an instance of type t2 be assigned to a variable of type t'.
|
260
|
+
# Does not accept nil/undef unless the type accepts it.
|
261
|
+
#
|
262
|
+
# @api public
|
263
|
+
#
|
264
|
+
def assignable?(t, t2)
|
265
|
+
if t.is_a?(Class)
|
266
|
+
t = type(t)
|
267
|
+
end
|
268
|
+
|
269
|
+
if t2.is_a?(Class)
|
270
|
+
t2 = type(t2)
|
271
|
+
end
|
272
|
+
# Unit can be assigned to anything
|
273
|
+
return true if t2.class == Types::PUnitType
|
274
|
+
|
275
|
+
@@assignable_visitor.visit_this_1(self, t, t2)
|
276
|
+
end
|
277
|
+
|
278
|
+
# Returns an enumerable if the t represents something that can be iterated
|
279
|
+
def enumerable(t)
|
280
|
+
@@enumerable_visitor.visit_this_0(self, t)
|
281
|
+
end
|
282
|
+
|
283
|
+
# Answers, does the given callable accept the arguments given in args (an array or a tuple)
|
284
|
+
#
|
285
|
+
def callable?(callable, args)
|
286
|
+
return false if !self.class.is_kind_of_callable?(callable)
|
287
|
+
# Note that polymorphism is for the args type, the callable is always a callable
|
288
|
+
@@callable_visitor.visit_this_1(self, args, callable)
|
289
|
+
end
|
290
|
+
|
291
|
+
# Answers if the two given types describe the same type
|
292
|
+
def equals(left, right)
|
293
|
+
return false unless left.is_a?(Types::PAnyType) && right.is_a?(Types::PAnyType)
|
294
|
+
# Types compare per class only - an extra test must be made if the are mutually assignable
|
295
|
+
# to find all types that represent the same type of instance
|
296
|
+
#
|
297
|
+
left == right || (assignable?(right, left) && assignable?(left, right))
|
298
|
+
end
|
299
|
+
|
300
|
+
# Answers 'what is the Puppet Type corresponding to the given Ruby class'
|
301
|
+
# @param c [Class] the class for which a puppet type is wanted
|
302
|
+
# @api public
|
303
|
+
#
|
304
|
+
def type(c)
|
305
|
+
raise ArgumentError, "Argument must be a Class" unless c.is_a? Class
|
306
|
+
|
307
|
+
# Can't use a visitor here since we don't have an instance of the class
|
308
|
+
case
|
309
|
+
when c <= Integer
|
310
|
+
type = Types::PIntegerType.new()
|
311
|
+
when c == Float
|
312
|
+
type = Types::PFloatType.new()
|
313
|
+
when c == Numeric
|
314
|
+
type = Types::PNumericType.new()
|
315
|
+
when c == String
|
316
|
+
type = Types::PStringType.new()
|
317
|
+
when c == Regexp
|
318
|
+
type = Types::PRegexpType.new()
|
319
|
+
when c == NilClass
|
320
|
+
type = Types::PNilType.new()
|
321
|
+
when c == FalseClass, c == TrueClass
|
322
|
+
type = Types::PBooleanType.new()
|
323
|
+
when c == Class
|
324
|
+
type = Types::PType.new()
|
325
|
+
when c == Array
|
326
|
+
# Assume array of data values
|
327
|
+
type = Types::PArrayType.new()
|
328
|
+
type.element_type = Types::PDataType.new()
|
329
|
+
when c == Hash
|
330
|
+
# Assume hash with scalar keys and data values
|
331
|
+
type = Types::PHashType.new()
|
332
|
+
type.key_type = Types::PScalarType.new()
|
333
|
+
type.element_type = Types::PDataType.new()
|
334
|
+
else
|
335
|
+
type = Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => c.name)
|
336
|
+
end
|
337
|
+
type
|
338
|
+
end
|
339
|
+
|
340
|
+
# Generalizes value specific types. The given type is mutated and returned.
|
341
|
+
# @api public
|
342
|
+
def generalize!(o)
|
343
|
+
@@generalize_visitor.visit_this_0(self, o)
|
344
|
+
o.eAllContents.each { |x| @@generalize_visitor.visit_this_0(self, x) }
|
345
|
+
o
|
346
|
+
end
|
347
|
+
|
348
|
+
def generalize_Object(o)
|
349
|
+
# do nothing, there is nothing to change for most types
|
350
|
+
end
|
351
|
+
|
352
|
+
def generalize_PStringType(o)
|
353
|
+
o.values = []
|
354
|
+
o.size_type = nil
|
355
|
+
[]
|
356
|
+
end
|
357
|
+
|
358
|
+
def generalize_PCollectionType(o)
|
359
|
+
# erase the size constraint from Array and Hash (if one exists, it is transformed to -Infinity - + Infinity, which is
|
360
|
+
# not desirable.
|
361
|
+
o.size_type = nil
|
362
|
+
end
|
363
|
+
|
364
|
+
def generalize_PFloatType(o)
|
365
|
+
o.to = nil
|
366
|
+
o.from = nil
|
367
|
+
end
|
368
|
+
|
369
|
+
def generalize_PIntegerType(o)
|
370
|
+
o.to = nil
|
371
|
+
o.from = nil
|
372
|
+
end
|
373
|
+
|
374
|
+
# Answers 'what is the single common Puppet Type describing o', or if o is an Array or Hash, what is the
|
375
|
+
# single common type of the elements (or keys and elements for a Hash).
|
376
|
+
# @api public
|
377
|
+
#
|
378
|
+
def infer(o)
|
379
|
+
@@infer_visitor.visit_this_0(self, o)
|
380
|
+
end
|
381
|
+
|
382
|
+
def infer_generic(o)
|
383
|
+
result = generalize!(infer(o))
|
384
|
+
result
|
385
|
+
end
|
386
|
+
|
387
|
+
# Answers 'what is the set of Puppet Types of o'
|
388
|
+
# @api public
|
389
|
+
#
|
390
|
+
def infer_set(o)
|
391
|
+
@@infer_set_visitor.visit_this_0(self, o)
|
392
|
+
end
|
393
|
+
|
394
|
+
def instance_of(t, o)
|
395
|
+
@@instance_of_visitor.visit_this_1(self, t, o)
|
396
|
+
end
|
397
|
+
|
398
|
+
def instance_of_Object(t, o)
|
399
|
+
# Undef is Undef and Any, but nothing else when checking instance?
|
400
|
+
return false if (o.nil?) && t.class != Types::PAnyType
|
401
|
+
assignable?(t, infer(o))
|
402
|
+
end
|
403
|
+
|
404
|
+
# Anything is an instance of Unit
|
405
|
+
# @api private
|
406
|
+
def instance_of_PUnitType(t, o)
|
407
|
+
true
|
408
|
+
end
|
409
|
+
|
410
|
+
def instance_of_PArrayType(t, o)
|
411
|
+
return false unless o.is_a?(Array)
|
412
|
+
return false unless o.all? {|element| instance_of(t.element_type, element) }
|
413
|
+
size_t = t.size_type || @collection_default_size_t
|
414
|
+
size_t2 = size_as_type(o)
|
415
|
+
# optimize by calling directly
|
416
|
+
assignable_PIntegerType(size_t, size_t2)
|
417
|
+
end
|
418
|
+
|
419
|
+
def instance_of_PTupleType(t, o)
|
420
|
+
return false unless o.is_a?(Array)
|
421
|
+
# compute the tuple's min/max size, and check if that size matches
|
422
|
+
size_t = t.size_type || Puppet::Pops::Types::TypeFactory.range(*t.size_range)
|
423
|
+
|
424
|
+
# compute the array's size as type
|
425
|
+
size_t2 = size_as_type(o)
|
426
|
+
return false unless assignable?(size_t, size_t2)
|
427
|
+
o.each_with_index do |element, index|
|
428
|
+
return false unless instance_of(t.types[index] || t.types[-1], element)
|
429
|
+
end
|
430
|
+
true
|
431
|
+
end
|
432
|
+
|
433
|
+
def instance_of_PStructType(t, o)
|
434
|
+
return false unless o.is_a?(Hash)
|
435
|
+
h = t.hashed_elements
|
436
|
+
# all keys must be present and have a value (even if nil/undef)
|
437
|
+
(o.keys - h.keys).empty? && h.all? { |k,v| instance_of(v, o[k]) }
|
438
|
+
end
|
439
|
+
|
440
|
+
def instance_of_PHashType(t, o)
|
441
|
+
return false unless o.is_a?(Hash)
|
442
|
+
key_t = t.key_type
|
443
|
+
element_t = t.element_type
|
444
|
+
return false unless o.keys.all? {|key| instance_of(key_t, key) } && o.values.all? {|value| instance_of(element_t, value) }
|
445
|
+
size_t = t.size_type || @collection_default_size_t
|
446
|
+
size_t2 = size_as_type(o)
|
447
|
+
# optimize by calling directly
|
448
|
+
assignable_PIntegerType(size_t, size_t2)
|
449
|
+
end
|
450
|
+
|
451
|
+
def instance_of_PDataType(t, o)
|
452
|
+
instance_of(@data_variant_t, o)
|
453
|
+
end
|
454
|
+
|
455
|
+
def instance_of_PNilType(t, o)
|
456
|
+
return o.nil?
|
457
|
+
end
|
458
|
+
|
459
|
+
def instance_of_POptionalType(t, o)
|
460
|
+
return true if (o.nil?)
|
461
|
+
instance_of(t.optional_type, o)
|
462
|
+
end
|
463
|
+
|
464
|
+
def instance_of_PVariantType(t, o)
|
465
|
+
# instance of variant if o is instance? of any of variant's types
|
466
|
+
t.types.any? { |option_t| instance_of(option_t, o) }
|
467
|
+
end
|
468
|
+
|
469
|
+
# Answers 'is o an instance of type t'
|
470
|
+
# @api public
|
471
|
+
#
|
472
|
+
def self.instance?(t, o)
|
473
|
+
singleton.instance_of(t,o)
|
474
|
+
end
|
475
|
+
|
476
|
+
# Answers 'is o an instance of type t'
|
477
|
+
# @api public
|
478
|
+
#
|
479
|
+
def instance?(t, o)
|
480
|
+
instance_of(t,o)
|
481
|
+
end
|
482
|
+
|
483
|
+
# Answers if t is a puppet type
|
484
|
+
# @api public
|
485
|
+
#
|
486
|
+
def is_ptype?(t)
|
487
|
+
return t.is_a?(Types::PAnyType)
|
488
|
+
end
|
489
|
+
|
490
|
+
# Answers if t represents the puppet type PNilType
|
491
|
+
# @api public
|
492
|
+
#
|
493
|
+
def is_pnil?(t)
|
494
|
+
return t.nil? || t.is_a?(Types::PNilType)
|
495
|
+
end
|
496
|
+
|
497
|
+
# Answers, 'What is the common type of t1 and t2?'
|
498
|
+
#
|
499
|
+
# TODO: The current implementation should be optimized for performance
|
500
|
+
#
|
501
|
+
# @api public
|
502
|
+
#
|
503
|
+
def common_type(t1, t2)
|
504
|
+
raise ArgumentError, 'two types expected' unless (is_ptype?(t1) || is_pnil?(t1)) && (is_ptype?(t2) || is_pnil?(t2))
|
505
|
+
|
506
|
+
# TODO: This is not right since Scalar U Undef is Any
|
507
|
+
# if either is nil, the common type is the other
|
508
|
+
if is_pnil?(t1)
|
509
|
+
return t2
|
510
|
+
elsif is_pnil?(t2)
|
511
|
+
return t1
|
512
|
+
end
|
513
|
+
|
514
|
+
# If either side is Unit, it is the other type
|
515
|
+
if t1.is_a?(Types::PUnitType)
|
516
|
+
return t2
|
517
|
+
elsif t2.is_a?(Types::PUnitType)
|
518
|
+
return t1
|
519
|
+
end
|
520
|
+
|
521
|
+
# Simple case, one is assignable to the other
|
522
|
+
if assignable?(t1, t2)
|
523
|
+
return t1
|
524
|
+
elsif assignable?(t2, t1)
|
525
|
+
return t2
|
526
|
+
end
|
527
|
+
|
528
|
+
# when both are arrays, return an array with common element type
|
529
|
+
if t1.is_a?(Types::PArrayType) && t2.is_a?(Types::PArrayType)
|
530
|
+
type = Types::PArrayType.new()
|
531
|
+
type.element_type = common_type(t1.element_type, t2.element_type)
|
532
|
+
return type
|
533
|
+
end
|
534
|
+
|
535
|
+
# when both are hashes, return a hash with common key- and element type
|
536
|
+
if t1.is_a?(Types::PHashType) && t2.is_a?(Types::PHashType)
|
537
|
+
type = Types::PHashType.new()
|
538
|
+
type.key_type = common_type(t1.key_type, t2.key_type)
|
539
|
+
type.element_type = common_type(t1.element_type, t2.element_type)
|
540
|
+
return type
|
541
|
+
end
|
542
|
+
|
543
|
+
# when both are host-classes, reduce to PHostClass[] (since one was not assignable to the other)
|
544
|
+
if t1.is_a?(Types::PHostClassType) && t2.is_a?(Types::PHostClassType)
|
545
|
+
return Types::PHostClassType.new()
|
546
|
+
end
|
547
|
+
|
548
|
+
# when both are resources, reduce to Resource[T] or Resource[] (since one was not assignable to the other)
|
549
|
+
if t1.is_a?(Types::PResourceType) && t2.is_a?(Types::PResourceType)
|
550
|
+
result = Types::PResourceType.new()
|
551
|
+
# only Resource[] unless the type name is the same
|
552
|
+
if t1.type_name == t2.type_name then result.type_name = t1.type_name end
|
553
|
+
# the cross assignability test above has already determined that they do not have the same type and title
|
554
|
+
return result
|
555
|
+
end
|
556
|
+
|
557
|
+
# Integers have range, expand the range to the common range
|
558
|
+
if t1.is_a?(Types::PIntegerType) && t2.is_a?(Types::PIntegerType)
|
559
|
+
t1range = from_to_ordered(t1.from, t1.to)
|
560
|
+
t2range = from_to_ordered(t2.from, t2.to)
|
561
|
+
t = Types::PIntegerType.new()
|
562
|
+
from = [t1range[0], t2range[0]].min
|
563
|
+
to = [t1range[1], t2range[1]].max
|
564
|
+
t.from = from unless from == TheInfinity
|
565
|
+
t.to = to unless to == TheInfinity
|
566
|
+
return t
|
567
|
+
end
|
568
|
+
|
569
|
+
# Floats have range, expand the range to the common range
|
570
|
+
if t1.is_a?(Types::PFloatType) && t2.is_a?(Types::PFloatType)
|
571
|
+
t1range = from_to_ordered(t1.from, t1.to)
|
572
|
+
t2range = from_to_ordered(t2.from, t2.to)
|
573
|
+
t = Types::PFloatType.new()
|
574
|
+
from = [t1range[0], t2range[0]].min
|
575
|
+
to = [t1range[1], t2range[1]].max
|
576
|
+
t.from = from unless from == TheInfinity
|
577
|
+
t.to = to unless to == TheInfinity
|
578
|
+
return t
|
579
|
+
end
|
580
|
+
|
581
|
+
if t1.is_a?(Types::PStringType) && t2.is_a?(Types::PStringType)
|
582
|
+
t = Types::PStringType.new()
|
583
|
+
t.values = t1.values | t2.values
|
584
|
+
return t
|
585
|
+
end
|
586
|
+
|
587
|
+
if t1.is_a?(Types::PPatternType) && t2.is_a?(Types::PPatternType)
|
588
|
+
t = Types::PPatternType.new()
|
589
|
+
# must make copies since patterns are contained types, not data-types
|
590
|
+
t.patterns = (t1.patterns | t2.patterns).map(&:copy)
|
591
|
+
return t
|
592
|
+
end
|
593
|
+
|
594
|
+
if t1.is_a?(Types::PEnumType) && t2.is_a?(Types::PEnumType)
|
595
|
+
# The common type is one that complies with either set
|
596
|
+
t = Types::PEnumType.new
|
597
|
+
t.values = t1.values | t2.values
|
598
|
+
return t
|
599
|
+
end
|
600
|
+
|
601
|
+
if t1.is_a?(Types::PVariantType) && t2.is_a?(Types::PVariantType)
|
602
|
+
# The common type is one that complies with either set
|
603
|
+
t = Types::PVariantType.new
|
604
|
+
t.types = (t1.types | t2.types).map(&:copy)
|
605
|
+
return t
|
606
|
+
end
|
607
|
+
|
608
|
+
if t1.is_a?(Types::PRegexpType) && t2.is_a?(Types::PRegexpType)
|
609
|
+
# if they were identical, the general rule would return a parameterized regexp
|
610
|
+
# since they were not, the result is a generic regexp type
|
611
|
+
return Types::PPatternType.new()
|
612
|
+
end
|
613
|
+
|
614
|
+
if t1.is_a?(Types::PCallableType) && t2.is_a?(Types::PCallableType)
|
615
|
+
# They do not have the same signature, and one is not assignable to the other,
|
616
|
+
# what remains is the most general form of Callable
|
617
|
+
return Types::PCallableType.new()
|
618
|
+
end
|
619
|
+
|
620
|
+
# Common abstract types, from most specific to most general
|
621
|
+
if common_numeric?(t1, t2)
|
622
|
+
return Types::PNumericType.new()
|
623
|
+
end
|
624
|
+
|
625
|
+
if common_scalar?(t1, t2)
|
626
|
+
return Types::PScalarType.new()
|
627
|
+
end
|
628
|
+
|
629
|
+
if common_data?(t1,t2)
|
630
|
+
return Types::PDataType.new()
|
631
|
+
end
|
632
|
+
|
633
|
+
# Meta types Type[Integer] + Type[String] => Type[Data]
|
634
|
+
if t1.is_a?(Types::PType) && t2.is_a?(Types::PType)
|
635
|
+
type = Types::PType.new()
|
636
|
+
type.type = common_type(t1.type, t2.type)
|
637
|
+
return type
|
638
|
+
end
|
639
|
+
|
640
|
+
# If both are Runtime types
|
641
|
+
if t1.is_a?(Types::PRuntimeType) && t2.is_a?(Types::PRuntimeType)
|
642
|
+
if t1.runtime == t2.runtime && t1.runtime_type_name == t2.runtime_type_name
|
643
|
+
return t1
|
644
|
+
end
|
645
|
+
# finding the common super class requires that names are resolved to class
|
646
|
+
# NOTE: This only supports runtime type of :ruby
|
647
|
+
c1 = Types::ClassLoader.provide_from_type(t1)
|
648
|
+
c2 = Types::ClassLoader.provide_from_type(t2)
|
649
|
+
if c1 && c2
|
650
|
+
c2_superclasses = superclasses(c2)
|
651
|
+
superclasses(c1).each do|c1_super|
|
652
|
+
c2_superclasses.each do |c2_super|
|
653
|
+
if c1_super == c2_super
|
654
|
+
return Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => c1_super.name)
|
655
|
+
end
|
656
|
+
end
|
657
|
+
end
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
661
|
+
# They better both be Any type, or the wrong thing was asked and nil is returned
|
662
|
+
if t1.is_a?(Types::PAnyType) && t2.is_a?(Types::PAnyType)
|
663
|
+
return Types::PAnyType.new()
|
664
|
+
end
|
665
|
+
end
|
666
|
+
|
667
|
+
# Produces the superclasses of the given class, including the class
|
668
|
+
def superclasses(c)
|
669
|
+
result = [c]
|
670
|
+
while s = c.superclass
|
671
|
+
result << s
|
672
|
+
c = s
|
673
|
+
end
|
674
|
+
result
|
675
|
+
end
|
676
|
+
|
677
|
+
# Produces a string representing the type
|
678
|
+
# @api public
|
679
|
+
#
|
680
|
+
def string(t)
|
681
|
+
@@string_visitor.visit_this_0(self, t)
|
682
|
+
end
|
683
|
+
|
684
|
+
# Produces a debug string representing the type (possibly with more information that the regular string format)
|
685
|
+
# @api public
|
686
|
+
#
|
687
|
+
def debug_string(t)
|
688
|
+
@@inspect_visitor.visit_this_0(self, t)
|
689
|
+
end
|
690
|
+
|
691
|
+
|
692
|
+
# Reduces an enumerable of types to a single common type.
|
693
|
+
# @api public
|
694
|
+
#
|
695
|
+
def reduce_type(enumerable)
|
696
|
+
enumerable.reduce(nil) {|memo, t| common_type(memo, t) }
|
697
|
+
end
|
698
|
+
|
699
|
+
# Reduce an enumerable of objects to a single common type
|
700
|
+
# @api public
|
701
|
+
#
|
702
|
+
def infer_and_reduce_type(enumerable)
|
703
|
+
reduce_type(enumerable.collect() {|o| infer(o) })
|
704
|
+
end
|
705
|
+
|
706
|
+
# The type of all classes is PType
|
707
|
+
# @api private
|
708
|
+
#
|
709
|
+
def infer_Class(o)
|
710
|
+
Types::PType.new()
|
711
|
+
end
|
712
|
+
|
713
|
+
# @api private
|
714
|
+
def infer_Closure(o)
|
715
|
+
o.type()
|
716
|
+
end
|
717
|
+
|
718
|
+
# @api private
|
719
|
+
def infer_Function(o)
|
720
|
+
o.class.dispatcher.to_type
|
721
|
+
end
|
722
|
+
|
723
|
+
# @api private
|
724
|
+
def infer_Object(o)
|
725
|
+
Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => o.class.name)
|
726
|
+
end
|
727
|
+
|
728
|
+
# The type of all types is PType
|
729
|
+
# @api private
|
730
|
+
#
|
731
|
+
def infer_PAnyType(o)
|
732
|
+
type = Types::PType.new()
|
733
|
+
type.type = o.copy
|
734
|
+
type
|
735
|
+
end
|
736
|
+
|
737
|
+
# The type of all types is PType
|
738
|
+
# This is the metatype short circuit.
|
739
|
+
# @api private
|
740
|
+
#
|
741
|
+
def infer_PType(o)
|
742
|
+
type = Types::PType.new()
|
743
|
+
type.type = o.copy
|
744
|
+
type
|
745
|
+
end
|
746
|
+
|
747
|
+
# @api private
|
748
|
+
def infer_String(o)
|
749
|
+
t = Types::PStringType.new()
|
750
|
+
t.addValues(o)
|
751
|
+
t.size_type = size_as_type(o)
|
752
|
+
t
|
753
|
+
end
|
754
|
+
|
755
|
+
# @api private
|
756
|
+
def infer_Float(o)
|
757
|
+
t = Types::PFloatType.new()
|
758
|
+
t.from = o
|
759
|
+
t.to = o
|
760
|
+
t
|
761
|
+
end
|
762
|
+
|
763
|
+
# @api private
|
764
|
+
def infer_Integer(o)
|
765
|
+
t = Types::PIntegerType.new()
|
766
|
+
t.from = o
|
767
|
+
t.to = o
|
768
|
+
t
|
769
|
+
end
|
770
|
+
|
771
|
+
# @api private
|
772
|
+
def infer_Regexp(o)
|
773
|
+
t = Types::PRegexpType.new()
|
774
|
+
t.pattern = o.source
|
775
|
+
t
|
776
|
+
end
|
777
|
+
|
778
|
+
# @api private
|
779
|
+
def infer_NilClass(o)
|
780
|
+
Types::PNilType.new()
|
781
|
+
end
|
782
|
+
|
783
|
+
# Inference of :default as PDefaultType, and all other are Ruby[Symbol]
|
784
|
+
# @api private
|
785
|
+
def infer_Symbol(o)
|
786
|
+
case o
|
787
|
+
when :default
|
788
|
+
Types::PDefaultType.new()
|
789
|
+
|
790
|
+
else
|
791
|
+
infer_Object(o)
|
792
|
+
end
|
793
|
+
end
|
794
|
+
|
795
|
+
# @api private
|
796
|
+
def infer_TrueClass(o)
|
797
|
+
Types::PBooleanType.new()
|
798
|
+
end
|
799
|
+
|
800
|
+
# @api private
|
801
|
+
def infer_FalseClass(o)
|
802
|
+
Types::PBooleanType.new()
|
803
|
+
end
|
804
|
+
|
805
|
+
# @api private
|
806
|
+
# A Puppet::Parser::Resource, or Puppet::Resource
|
807
|
+
#
|
808
|
+
def infer_Resource(o)
|
809
|
+
t = Types::PResourceType.new()
|
810
|
+
t.type_name = o.type.to_s.downcase
|
811
|
+
# Only Puppet::Resource can have a title that is a symbol :undef, a PResource cannot.
|
812
|
+
# A mapping must be made to empty string. A nil value will result in an error later
|
813
|
+
title = o.title
|
814
|
+
t.title = (:undef == title ? '' : title)
|
815
|
+
type = Types::PType.new()
|
816
|
+
type.type = t
|
817
|
+
type
|
818
|
+
end
|
819
|
+
|
820
|
+
# @api private
|
821
|
+
def infer_Array(o)
|
822
|
+
type = Types::PArrayType.new()
|
823
|
+
type.element_type =
|
824
|
+
if o.empty?
|
825
|
+
Types::PNilType.new()
|
826
|
+
else
|
827
|
+
infer_and_reduce_type(o)
|
828
|
+
end
|
829
|
+
type.size_type = size_as_type(o)
|
830
|
+
type
|
831
|
+
end
|
832
|
+
|
833
|
+
# @api private
|
834
|
+
def infer_Hash(o)
|
835
|
+
type = Types::PHashType.new()
|
836
|
+
if o.empty?
|
837
|
+
ktype = Types::PNilType.new()
|
838
|
+
etype = Types::PNilType.new()
|
839
|
+
else
|
840
|
+
ktype = infer_and_reduce_type(o.keys())
|
841
|
+
etype = infer_and_reduce_type(o.values())
|
842
|
+
end
|
843
|
+
type.key_type = ktype
|
844
|
+
type.element_type = etype
|
845
|
+
type.size_type = size_as_type(o)
|
846
|
+
type
|
847
|
+
end
|
848
|
+
|
849
|
+
def size_as_type(collection)
|
850
|
+
size = collection.size
|
851
|
+
t = Types::PIntegerType.new()
|
852
|
+
t.from = size
|
853
|
+
t.to = size
|
854
|
+
t
|
855
|
+
end
|
856
|
+
|
857
|
+
# Common case for everything that intrinsically only has a single type
|
858
|
+
def infer_set_Object(o)
|
859
|
+
infer(o)
|
860
|
+
end
|
861
|
+
|
862
|
+
def infer_set_Array(o)
|
863
|
+
if o.empty?
|
864
|
+
type = Types::PArrayType.new()
|
865
|
+
type.element_type = Types::PNilType.new()
|
866
|
+
type.size_type = size_as_type(o)
|
867
|
+
else
|
868
|
+
type = Types::PTupleType.new()
|
869
|
+
type.types = o.map() {|x| infer_set(x) }
|
870
|
+
end
|
871
|
+
type
|
872
|
+
end
|
873
|
+
|
874
|
+
def infer_set_Hash(o)
|
875
|
+
type = Types::PHashType.new()
|
876
|
+
if o.empty?
|
877
|
+
ktype = Types::PNilType.new()
|
878
|
+
vtype = Types::PNilType.new()
|
879
|
+
else
|
880
|
+
ktype = Types::PVariantType.new()
|
881
|
+
ktype.types = o.keys.map() {|k| infer_set(k) }
|
882
|
+
etype = Types::PVariantType.new()
|
883
|
+
etype.types = o.values.map() {|e| infer_set(e) }
|
884
|
+
end
|
885
|
+
type.key_type = unwrap_single_variant(ktype)
|
886
|
+
type.element_type = unwrap_single_variant(etype)
|
887
|
+
type.size_type = size_as_type(o)
|
888
|
+
type
|
889
|
+
end
|
890
|
+
|
891
|
+
def unwrap_single_variant(possible_variant)
|
892
|
+
if possible_variant.is_a?(Types::PVariantType) && possible_variant.types.size == 1
|
893
|
+
possible_variant.types[0]
|
894
|
+
else
|
895
|
+
possible_variant
|
896
|
+
end
|
897
|
+
end
|
898
|
+
|
899
|
+
# False in general type calculator
|
900
|
+
# @api private
|
901
|
+
def assignable_Object(t, t2)
|
902
|
+
false
|
903
|
+
end
|
904
|
+
|
905
|
+
# @api private
|
906
|
+
def assignable_PAnyType(t, t2)
|
907
|
+
t2.is_a?(Types::PAnyType)
|
908
|
+
end
|
909
|
+
|
910
|
+
# @api private
|
911
|
+
def assignable_PNilType(t, t2)
|
912
|
+
# Only undef/nil is assignable to nil type
|
913
|
+
t2.is_a?(Types::PNilType)
|
914
|
+
end
|
915
|
+
|
916
|
+
# Anything is assignable to a Unit type
|
917
|
+
# @api private
|
918
|
+
def assignable_PUnitType(t, t2)
|
919
|
+
true
|
920
|
+
end
|
921
|
+
|
922
|
+
# @api private
|
923
|
+
def assignable_PDefaultType(t, t2)
|
924
|
+
# Only default is assignable to default type
|
925
|
+
t2.is_a?(Types::PDefaultType)
|
926
|
+
end
|
927
|
+
|
928
|
+
# @api private
|
929
|
+
def assignable_PScalarType(t, t2)
|
930
|
+
t2.is_a?(Types::PScalarType)
|
931
|
+
end
|
932
|
+
|
933
|
+
# @api private
|
934
|
+
def assignable_PNumericType(t, t2)
|
935
|
+
t2.is_a?(Types::PNumericType)
|
936
|
+
end
|
937
|
+
|
938
|
+
# @api private
|
939
|
+
def assignable_PIntegerType(t, t2)
|
940
|
+
return false unless t2.is_a?(Types::PIntegerType)
|
941
|
+
trange = from_to_ordered(t.from, t.to)
|
942
|
+
t2range = from_to_ordered(t2.from, t2.to)
|
943
|
+
# If t2 min and max are within the range of t
|
944
|
+
trange[0] <= t2range[0] && trange[1] >= t2range[1]
|
945
|
+
end
|
946
|
+
|
947
|
+
# Transform int range to a size constraint
|
948
|
+
# if range == nil the constraint is 1,1
|
949
|
+
# if range.from == nil min size = 1
|
950
|
+
# if range.to == nil max size == Infinity
|
951
|
+
#
|
952
|
+
def size_range(range)
|
953
|
+
return [1,1] if range.nil?
|
954
|
+
from = range.from
|
955
|
+
to = range.to
|
956
|
+
x = from.nil? ? 1 : from
|
957
|
+
y = to.nil? ? TheInfinity : to
|
958
|
+
if x < y
|
959
|
+
[x, y]
|
960
|
+
else
|
961
|
+
[y, x]
|
962
|
+
end
|
963
|
+
end
|
964
|
+
|
965
|
+
# @api private
|
966
|
+
def from_to_ordered(from, to)
|
967
|
+
x = (from.nil? || from == :default) ? -TheInfinity : from
|
968
|
+
y = (to.nil? || to == :default) ? TheInfinity : to
|
969
|
+
if x < y
|
970
|
+
[x, y]
|
971
|
+
else
|
972
|
+
[y, x]
|
973
|
+
end
|
974
|
+
end
|
975
|
+
|
976
|
+
# @api private
|
977
|
+
def assignable_PVariantType(t, t2)
|
978
|
+
# Data is a specific variant
|
979
|
+
t2 = @data_variant_t if t2.is_a?(Types::PDataType)
|
980
|
+
if t2.is_a?(Types::PVariantType)
|
981
|
+
# A variant is assignable if all of its options are assignable to one of this type's options
|
982
|
+
return true if t == t2
|
983
|
+
t2.types.all? do |other|
|
984
|
+
# if the other is a Variant, all of its options, but be assignable to one of this type's options
|
985
|
+
other = other.is_a?(Types::PDataType) ? @data_variant_t : other
|
986
|
+
if other.is_a?(Types::PVariantType)
|
987
|
+
assignable?(t, other)
|
988
|
+
else
|
989
|
+
t.types.any? {|option_t| assignable?(option_t, other) }
|
990
|
+
end
|
991
|
+
end
|
992
|
+
else
|
993
|
+
# A variant is assignable if t2 is assignable to any of its types
|
994
|
+
t.types.any? { |option_t| assignable?(option_t, t2) }
|
995
|
+
end
|
996
|
+
end
|
997
|
+
|
998
|
+
# Catch all not callable combinations
|
999
|
+
def callable_Object(o, callable_t)
|
1000
|
+
false
|
1001
|
+
end
|
1002
|
+
|
1003
|
+
def callable_PTupleType(args_tuple, callable_t)
|
1004
|
+
if args_tuple.size_type
|
1005
|
+
raise ArgumentError, "Callable tuple may not have a size constraint when used as args"
|
1006
|
+
end
|
1007
|
+
# Assume no block was given - i.e. it is nil, and its type is PNilType
|
1008
|
+
block_t = @nil_t
|
1009
|
+
if self.class.is_kind_of_callable?(args_tuple.types.last)
|
1010
|
+
# a split is needed to make it possible to use required, optional, and varargs semantics
|
1011
|
+
# of the tuple type.
|
1012
|
+
#
|
1013
|
+
args_tuple = args_tuple.copy
|
1014
|
+
# to drop the callable, it must be removed explicitly since this is an rgen array
|
1015
|
+
args_tuple.removeTypes(block_t = args_tuple.types.last())
|
1016
|
+
else
|
1017
|
+
# no block was given, if it is required, the below will fail
|
1018
|
+
end
|
1019
|
+
# unless argument types match parameter types
|
1020
|
+
return false unless assignable?(callable_t.param_types, args_tuple)
|
1021
|
+
# can the given block be *called* with a signature requirement specified by callable_t?
|
1022
|
+
assignable?(callable_t.block_type || @nil_t, block_t)
|
1023
|
+
end
|
1024
|
+
|
1025
|
+
# @api private
|
1026
|
+
def self.is_kind_of_callable?(t, optional = true)
|
1027
|
+
case t
|
1028
|
+
when Types::PCallableType
|
1029
|
+
true
|
1030
|
+
when Types::POptionalType
|
1031
|
+
optional && is_kind_of_callable?(t.optional_type, optional)
|
1032
|
+
when Types::PVariantType
|
1033
|
+
t.types.all? {|t2| is_kind_of_callable?(t2, optional) }
|
1034
|
+
else
|
1035
|
+
false
|
1036
|
+
end
|
1037
|
+
end
|
1038
|
+
|
1039
|
+
|
1040
|
+
def callable_PArrayType(args_array, callable_t)
|
1041
|
+
return false unless assignable?(callable_t.param_types, args_array)
|
1042
|
+
# does not support calling with a block, but have to check that callable is ok with missing block
|
1043
|
+
assignable?(callable_t.block_type || @nil_t, @nil_t)
|
1044
|
+
end
|
1045
|
+
|
1046
|
+
def callable_PNilType(nil_t, callable_t)
|
1047
|
+
# if callable_t is Optional (or indeed PNilType), this means that 'missing callable' is accepted
|
1048
|
+
assignable?(callable_t, nil_t)
|
1049
|
+
end
|
1050
|
+
|
1051
|
+
def callable_PCallableType(given_callable_t, required_callable_t)
|
1052
|
+
# If the required callable is euqal or more specific than the given, the given is callable
|
1053
|
+
assignable?(required_callable_t, given_callable_t)
|
1054
|
+
end
|
1055
|
+
|
1056
|
+
def max(a,b)
|
1057
|
+
a >=b ? a : b
|
1058
|
+
end
|
1059
|
+
|
1060
|
+
def min(a,b)
|
1061
|
+
a <= b ? a : b
|
1062
|
+
end
|
1063
|
+
|
1064
|
+
def assignable_PTupleType(t, t2)
|
1065
|
+
return true if t == t2 || t.types.empty? && (t2.is_a?(Types::PArrayType))
|
1066
|
+
size_t = t.size_type || Puppet::Pops::Types::TypeFactory.range(*t.size_range)
|
1067
|
+
|
1068
|
+
if t2.is_a?(Types::PTupleType)
|
1069
|
+
size_t2 = t2.size_type || Puppet::Pops::Types::TypeFactory.range(*t2.size_range)
|
1070
|
+
|
1071
|
+
# not assignable if the number of types in t2 is outside number of types in t1
|
1072
|
+
if assignable?(size_t, size_t2)
|
1073
|
+
t2.types.size.times do |index|
|
1074
|
+
return false unless assignable?((t.types[index] || t.types[-1]), t2.types[index])
|
1075
|
+
end
|
1076
|
+
return true
|
1077
|
+
else
|
1078
|
+
return false
|
1079
|
+
end
|
1080
|
+
elsif t2.is_a?(Types::PArrayType)
|
1081
|
+
t2_entry = t2.element_type
|
1082
|
+
|
1083
|
+
# Array of anything can not be assigned (unless tuple is tuple of anything) - this case
|
1084
|
+
# was handled at the top of this method.
|
1085
|
+
#
|
1086
|
+
return false if t2_entry.nil?
|
1087
|
+
size_t = t.size_type || Puppet::Pops::Types::TypeFactory.range(*t.size_range)
|
1088
|
+
size_t2 = t2.size_type || @collection_default_size_t
|
1089
|
+
return false unless assignable?(size_t, size_t2)
|
1090
|
+
min(t.types.size, size_t2.range()[1]).times do |index|
|
1091
|
+
return false unless assignable?((t.types[index] || t.types[-1]), t2_entry)
|
1092
|
+
end
|
1093
|
+
true
|
1094
|
+
else
|
1095
|
+
false
|
1096
|
+
end
|
1097
|
+
end
|
1098
|
+
|
1099
|
+
# Produces the tuple entry at the given index given a tuple type, its from/to constraints on the last
|
1100
|
+
# type, and an index.
|
1101
|
+
# Produces nil if the index is out of bounds
|
1102
|
+
# from must be less than to, and from may not be less than 0
|
1103
|
+
#
|
1104
|
+
# @api private
|
1105
|
+
#
|
1106
|
+
def tuple_entry_at(tuple_t, from, to, index)
|
1107
|
+
regular = (tuple_t.types.size - 1)
|
1108
|
+
if index < regular
|
1109
|
+
tuple_t.types[index]
|
1110
|
+
elsif index < regular + to
|
1111
|
+
# in the varargs part
|
1112
|
+
tuple_t.types[-1]
|
1113
|
+
else
|
1114
|
+
nil
|
1115
|
+
end
|
1116
|
+
end
|
1117
|
+
|
1118
|
+
# @api private
|
1119
|
+
#
|
1120
|
+
def assignable_PStructType(t, t2)
|
1121
|
+
return true if t == t2 || t.elements.empty? && (t2.is_a?(Types::PHashType))
|
1122
|
+
h = t.hashed_elements
|
1123
|
+
if t2.is_a?(Types::PStructType)
|
1124
|
+
h2 = t2.hashed_elements
|
1125
|
+
h.size == h2.size && h.all? {|k, v| assignable?(v, h2[k]) }
|
1126
|
+
elsif t2.is_a?(Types::PHashType)
|
1127
|
+
size_t2 = t2.size_type || @collection_default_size_t
|
1128
|
+
size_t = Types::PIntegerType.new
|
1129
|
+
size_t.from = size_t.to = h.size
|
1130
|
+
# compatible size
|
1131
|
+
# hash key type must be string of min 1 size
|
1132
|
+
# hash value t must be assignable to each key
|
1133
|
+
element_type = t2.element_type
|
1134
|
+
assignable_PIntegerType(size_t, size_t2) &&
|
1135
|
+
assignable?(@non_empty_string_t, t2.key_type) &&
|
1136
|
+
h.all? {|k,v| assignable?(v, element_type) }
|
1137
|
+
else
|
1138
|
+
false
|
1139
|
+
end
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
# @api private
|
1143
|
+
def assignable_POptionalType(t, t2)
|
1144
|
+
return true if t2.is_a?(Types::PNilType)
|
1145
|
+
if t2.is_a?(Types::POptionalType)
|
1146
|
+
assignable?(t.optional_type, t2.optional_type)
|
1147
|
+
else
|
1148
|
+
assignable?(t.optional_type, t2)
|
1149
|
+
end
|
1150
|
+
end
|
1151
|
+
|
1152
|
+
# @api private
|
1153
|
+
def assignable_PEnumType(t, t2)
|
1154
|
+
return true if t == t2 || (t.values.empty? && (t2.is_a?(Types::PStringType) || t2.is_a?(Types::PEnumType)))
|
1155
|
+
case t2
|
1156
|
+
when Types::PStringType
|
1157
|
+
# if the set of strings are all found in the set of enums
|
1158
|
+
t2.values.all? { |s| t.values.any? { |e| e == s }}
|
1159
|
+
when Types::PVariantType
|
1160
|
+
t2.types.all? {|variant_t| assignable_PEnumType(t, variant_t) }
|
1161
|
+
when Types::PEnumType
|
1162
|
+
t2.values.all? { |s| t.values.any? {|e| e == s }}
|
1163
|
+
else
|
1164
|
+
false
|
1165
|
+
end
|
1166
|
+
end
|
1167
|
+
|
1168
|
+
# @api private
|
1169
|
+
def assignable_PStringType(t, t2)
|
1170
|
+
if t.values.empty?
|
1171
|
+
# A general string is assignable by any other string or pattern restricted string
|
1172
|
+
# if the string has a size constraint it does not match since there is no reasonable way
|
1173
|
+
# to compute the min/max length a pattern will match. For enum, it is possible to test that
|
1174
|
+
# each enumerator value is within range
|
1175
|
+
size_t = t.size_type || @collection_default_size_t
|
1176
|
+
case t2
|
1177
|
+
when Types::PStringType
|
1178
|
+
# true if size compliant
|
1179
|
+
size_t2 = t2.size_type || @collection_default_size_t
|
1180
|
+
assignable_PIntegerType(size_t, size_t2)
|
1181
|
+
|
1182
|
+
when Types::PPatternType
|
1183
|
+
# true if size constraint is at least 0 to +Infinity (which is the same as the default)
|
1184
|
+
assignable_PIntegerType(size_t, @collection_default_size_t)
|
1185
|
+
|
1186
|
+
when Types::PEnumType
|
1187
|
+
if t2.values
|
1188
|
+
# true if all enum values are within range
|
1189
|
+
min, max = t2.values.map(&:size).minmax
|
1190
|
+
trange = from_to_ordered(size_t.from, size_t.to)
|
1191
|
+
t2range = [min, max]
|
1192
|
+
# If t2 min and max are within the range of t
|
1193
|
+
trange[0] <= t2range[0] && trange[1] >= t2range[1]
|
1194
|
+
else
|
1195
|
+
# no string can match this enum anyway since it does not accept anything
|
1196
|
+
false
|
1197
|
+
end
|
1198
|
+
else
|
1199
|
+
# no other type matches string
|
1200
|
+
false
|
1201
|
+
end
|
1202
|
+
elsif t2.is_a?(Types::PStringType)
|
1203
|
+
# A specific string acts as a set of strings - must have exactly the same strings
|
1204
|
+
# In this case, size does not matter since the definition is very precise anyway
|
1205
|
+
Set.new(t.values) == Set.new(t2.values)
|
1206
|
+
else
|
1207
|
+
# All others are false, since no other type describes the same set of specific strings
|
1208
|
+
false
|
1209
|
+
end
|
1210
|
+
end
|
1211
|
+
|
1212
|
+
# @api private
|
1213
|
+
def assignable_PPatternType(t, t2)
|
1214
|
+
return true if t == t2
|
1215
|
+
case t2
|
1216
|
+
when Types::PStringType, Types::PEnumType
|
1217
|
+
values = t2.values
|
1218
|
+
when Types::PVariantType
|
1219
|
+
return t2.types.all? {|variant_t| assignable_PPatternType(t, variant_t) }
|
1220
|
+
else
|
1221
|
+
return false
|
1222
|
+
end
|
1223
|
+
|
1224
|
+
if t2.values.empty?
|
1225
|
+
# Strings / Enums (unknown which ones) cannot all match a pattern, but if there is no pattern it is ok
|
1226
|
+
# (There should really always be a pattern, but better safe than sorry).
|
1227
|
+
return t.patterns.empty? ? true : false
|
1228
|
+
end
|
1229
|
+
# all strings in String/Enum type must match one of the patterns in Pattern type
|
1230
|
+
regexps = t.patterns.map {|p| p.regexp }
|
1231
|
+
t2.values.all? { |v| regexps.any? {|re| re.match(v) } }
|
1232
|
+
end
|
1233
|
+
|
1234
|
+
# @api private
|
1235
|
+
def assignable_PFloatType(t, t2)
|
1236
|
+
return false unless t2.is_a?(Types::PFloatType)
|
1237
|
+
trange = from_to_ordered(t.from, t.to)
|
1238
|
+
t2range = from_to_ordered(t2.from, t2.to)
|
1239
|
+
# If t2 min and max are within the range of t
|
1240
|
+
trange[0] <= t2range[0] && trange[1] >= t2range[1]
|
1241
|
+
end
|
1242
|
+
|
1243
|
+
# @api private
|
1244
|
+
def assignable_PBooleanType(t, t2)
|
1245
|
+
t2.is_a?(Types::PBooleanType)
|
1246
|
+
end
|
1247
|
+
|
1248
|
+
# @api private
|
1249
|
+
def assignable_PRegexpType(t, t2)
|
1250
|
+
t2.is_a?(Types::PRegexpType) && (t.pattern.nil? || t.pattern == t2.pattern)
|
1251
|
+
end
|
1252
|
+
|
1253
|
+
# @api private
|
1254
|
+
def assignable_PCallableType(t, t2)
|
1255
|
+
return false unless t2.is_a?(Types::PCallableType)
|
1256
|
+
# nil param_types means, any other Callable is assignable
|
1257
|
+
return true if t.param_types.nil?
|
1258
|
+
|
1259
|
+
# NOTE: these tests are made in reverse as it is calling the callable that is constrained
|
1260
|
+
# (it's lower bound), not its upper bound
|
1261
|
+
return false unless assignable?(t2.param_types, t.param_types)
|
1262
|
+
# names are ignored, they are just information
|
1263
|
+
# Blocks must be compatible
|
1264
|
+
this_block_t = t.block_type || @nil_t
|
1265
|
+
that_block_t = t2.block_type || @nil_t
|
1266
|
+
assignable?(that_block_t, this_block_t)
|
1267
|
+
|
1268
|
+
end
|
1269
|
+
|
1270
|
+
# @api private
|
1271
|
+
def assignable_PCollectionType(t, t2)
|
1272
|
+
size_t = t.size_type || @collection_default_size_t
|
1273
|
+
case t2
|
1274
|
+
when Types::PCollectionType
|
1275
|
+
size_t2 = t2.size_type || @collection_default_size_t
|
1276
|
+
assignable_PIntegerType(size_t, size_t2)
|
1277
|
+
when Types::PTupleType
|
1278
|
+
# compute the tuple's min/max size, and check if that size matches
|
1279
|
+
from, to = size_range(t2.size_type)
|
1280
|
+
t2s = Types::PIntegerType.new()
|
1281
|
+
t2s.from = t2.types.size - 1 + from
|
1282
|
+
t2s.to = t2.types.size - 1 + to
|
1283
|
+
assignable_PIntegerType(size_t, t2s)
|
1284
|
+
when Types::PStructType
|
1285
|
+
from = to = t2.elements.size
|
1286
|
+
t2s = Types::PIntegerType.new()
|
1287
|
+
t2s.from = from
|
1288
|
+
t2s.to = to
|
1289
|
+
assignable_PIntegerType(size_t, t2s)
|
1290
|
+
else
|
1291
|
+
false
|
1292
|
+
end
|
1293
|
+
end
|
1294
|
+
|
1295
|
+
# @api private
|
1296
|
+
def assignable_PType(t, t2)
|
1297
|
+
return false unless t2.is_a?(Types::PType)
|
1298
|
+
return true if t.type.nil? # wide enough to handle all types
|
1299
|
+
return false if t2.type.nil? # wider than t
|
1300
|
+
assignable?(t.type, t2.type)
|
1301
|
+
end
|
1302
|
+
|
1303
|
+
# Array is assignable if t2 is an Array and t2's element type is assignable, or if t2 is a Tuple
|
1304
|
+
# where
|
1305
|
+
# @api private
|
1306
|
+
def assignable_PArrayType(t, t2)
|
1307
|
+
if t2.is_a?(Types::PArrayType)
|
1308
|
+
return false unless assignable?(t.element_type, t2.element_type)
|
1309
|
+
assignable_PCollectionType(t, t2)
|
1310
|
+
|
1311
|
+
elsif t2.is_a?(Types::PTupleType)
|
1312
|
+
return false unless t2.types.all? {|t2_element| assignable?(t.element_type, t2_element) }
|
1313
|
+
t2_regular = t2.types[0..-2]
|
1314
|
+
t2_ranged = t2.types[-1]
|
1315
|
+
t2_from, t2_to = size_range(t2.size_type)
|
1316
|
+
t2_required = t2_regular.size + t2_from
|
1317
|
+
|
1318
|
+
t_entry = t.element_type
|
1319
|
+
|
1320
|
+
# Tuple of anything can not be assigned (unless array is tuple of anything) - this case
|
1321
|
+
# was handled at the top of this method.
|
1322
|
+
#
|
1323
|
+
return false if t_entry.nil?
|
1324
|
+
|
1325
|
+
# array type may be size constrained
|
1326
|
+
size_t = t.size_type || @collection_default_size_t
|
1327
|
+
min, max = size_t.range
|
1328
|
+
# Tuple with fewer min entries can not be assigned
|
1329
|
+
return false if t2_required < min
|
1330
|
+
# Tuple with more optionally available entries can not be assigned
|
1331
|
+
return false if t2_regular.size + t2_to > max
|
1332
|
+
# each tuple type must be assignable to the element type
|
1333
|
+
t2_required.times do |index|
|
1334
|
+
t2_entry = tuple_entry_at(t2, t2_from, t2_to, index)
|
1335
|
+
return false unless assignable?(t_entry, t2_entry)
|
1336
|
+
end
|
1337
|
+
# ... and so must the last, possibly optional (ranged) type
|
1338
|
+
return assignable?(t_entry, t2_ranged)
|
1339
|
+
else
|
1340
|
+
false
|
1341
|
+
end
|
1342
|
+
end
|
1343
|
+
|
1344
|
+
# Hash is assignable if t2 is a Hash and t2's key and element types are assignable
|
1345
|
+
# @api private
|
1346
|
+
def assignable_PHashType(t, t2)
|
1347
|
+
case t2
|
1348
|
+
when Types::PHashType
|
1349
|
+
return false unless assignable?(t.key_type, t2.key_type) && assignable?(t.element_type, t2.element_type)
|
1350
|
+
assignable_PCollectionType(t, t2)
|
1351
|
+
when Types::PStructType
|
1352
|
+
# hash must accept String as key type
|
1353
|
+
# hash must accept all value types
|
1354
|
+
# hash must accept the size of the struct
|
1355
|
+
size_t = t.size_type || @collection_default_size_t
|
1356
|
+
min, max = size_t.range
|
1357
|
+
struct_size = t2.elements.size
|
1358
|
+
element_type = t.element_type
|
1359
|
+
( struct_size >= min && struct_size <= max &&
|
1360
|
+
assignable?(t.key_type, @non_empty_string_t) &&
|
1361
|
+
t2.hashed_elements.all? {|k,v| assignable?(element_type, v) })
|
1362
|
+
else
|
1363
|
+
false
|
1364
|
+
end
|
1365
|
+
end
|
1366
|
+
|
1367
|
+
# @api private
|
1368
|
+
def assignable_PCatalogEntryType(t1, t2)
|
1369
|
+
t2.is_a?(Types::PCatalogEntryType)
|
1370
|
+
end
|
1371
|
+
|
1372
|
+
# @api private
|
1373
|
+
def assignable_PHostClassType(t1, t2)
|
1374
|
+
return false unless t2.is_a?(Types::PHostClassType)
|
1375
|
+
# Class = Class[name}, Class[name] != Class
|
1376
|
+
return true if t1.class_name.nil?
|
1377
|
+
# Class[name] = Class[name]
|
1378
|
+
return t1.class_name == t2.class_name
|
1379
|
+
end
|
1380
|
+
|
1381
|
+
# @api private
|
1382
|
+
def assignable_PResourceType(t1, t2)
|
1383
|
+
return false unless t2.is_a?(Types::PResourceType)
|
1384
|
+
return true if t1.type_name.nil?
|
1385
|
+
return false if t1.type_name != t2.type_name
|
1386
|
+
return true if t1.title.nil?
|
1387
|
+
return t1.title == t2.title
|
1388
|
+
end
|
1389
|
+
|
1390
|
+
# Data is assignable by other Data and by Array[Data] and Hash[Scalar, Data]
|
1391
|
+
# @api private
|
1392
|
+
def assignable_PDataType(t, t2)
|
1393
|
+
t2.is_a?(Types::PDataType) || assignable?(@data_variant_t, t2)
|
1394
|
+
end
|
1395
|
+
|
1396
|
+
# Assignable if t2's has the same runtime and the runtime name resolves to
|
1397
|
+
# a class that is the same or subclass of t1's resolved runtime type name
|
1398
|
+
# @api private
|
1399
|
+
def assignable_PRuntimeType(t1, t2)
|
1400
|
+
return false unless t2.is_a?(Types::PRuntimeType)
|
1401
|
+
return false unless t1.runtime == t2.runtime
|
1402
|
+
return true if t1.runtime_type_name.nil? # t1 is wider
|
1403
|
+
return false if t2.runtime_type_name.nil? # t1 not nil, so t2 can not be wider
|
1404
|
+
|
1405
|
+
# NOTE: This only supports Ruby, must change when/if the set of runtimes is expanded
|
1406
|
+
c1 = class_from_string(t1.runtime_type_name)
|
1407
|
+
c2 = class_from_string(t2.runtime_type_name)
|
1408
|
+
return false unless c1.is_a?(Class) && c2.is_a?(Class)
|
1409
|
+
!!(c2 <= c1)
|
1410
|
+
end
|
1411
|
+
|
1412
|
+
# @api private
|
1413
|
+
def debug_string_Object(t)
|
1414
|
+
string(t)
|
1415
|
+
end
|
1416
|
+
|
1417
|
+
# @api private
|
1418
|
+
def string_PType(t)
|
1419
|
+
if t.type.nil?
|
1420
|
+
"Type"
|
1421
|
+
else
|
1422
|
+
"Type[#{string(t.type)}]"
|
1423
|
+
end
|
1424
|
+
end
|
1425
|
+
|
1426
|
+
# @api private
|
1427
|
+
def string_NilClass(t) ; '?' ; end
|
1428
|
+
|
1429
|
+
# @api private
|
1430
|
+
def string_String(t) ; t ; end
|
1431
|
+
|
1432
|
+
# @api private
|
1433
|
+
def string_Symbol(t) ; t.to_s ; end
|
1434
|
+
|
1435
|
+
def string_PAnyType(t) ; "Any" ; end
|
1436
|
+
|
1437
|
+
# @api private
|
1438
|
+
def string_PNilType(t) ; 'Undef' ; end
|
1439
|
+
|
1440
|
+
# @api private
|
1441
|
+
def string_PDefaultType(t) ; 'Default' ; end
|
1442
|
+
|
1443
|
+
# @api private
|
1444
|
+
def string_PBooleanType(t) ; "Boolean" ; end
|
1445
|
+
|
1446
|
+
# @api private
|
1447
|
+
def string_PScalarType(t) ; "Scalar" ; end
|
1448
|
+
|
1449
|
+
# @api private
|
1450
|
+
def string_PDataType(t) ; "Data" ; end
|
1451
|
+
|
1452
|
+
# @api private
|
1453
|
+
def string_PNumericType(t) ; "Numeric" ; end
|
1454
|
+
|
1455
|
+
# @api private
|
1456
|
+
def string_PIntegerType(t)
|
1457
|
+
range = range_array_part(t)
|
1458
|
+
unless range.empty?
|
1459
|
+
"Integer[#{range.join(', ')}]"
|
1460
|
+
else
|
1461
|
+
"Integer"
|
1462
|
+
end
|
1463
|
+
end
|
1464
|
+
|
1465
|
+
# Produces a string from an Integer range type that is used inside other type strings
|
1466
|
+
# @api private
|
1467
|
+
def range_array_part(t)
|
1468
|
+
return [] if t.nil? || (t.from.nil? && t.to.nil?)
|
1469
|
+
[t.from.nil? ? 'default' : t.from , t.to.nil? ? 'default' : t.to ]
|
1470
|
+
end
|
1471
|
+
|
1472
|
+
# @api private
|
1473
|
+
def string_PFloatType(t)
|
1474
|
+
range = range_array_part(t)
|
1475
|
+
unless range.empty?
|
1476
|
+
"Float[#{range.join(', ')}]"
|
1477
|
+
else
|
1478
|
+
"Float"
|
1479
|
+
end
|
1480
|
+
end
|
1481
|
+
|
1482
|
+
# @api private
|
1483
|
+
def string_PRegexpType(t)
|
1484
|
+
t.pattern.nil? ? "Regexp" : "Regexp[#{t.regexp.inspect}]"
|
1485
|
+
end
|
1486
|
+
|
1487
|
+
# @api private
|
1488
|
+
def string_PStringType(t)
|
1489
|
+
# skip values in regular output - see debug_string
|
1490
|
+
range = range_array_part(t.size_type)
|
1491
|
+
unless range.empty?
|
1492
|
+
"String[#{range.join(', ')}]"
|
1493
|
+
else
|
1494
|
+
"String"
|
1495
|
+
end
|
1496
|
+
end
|
1497
|
+
|
1498
|
+
# @api private
|
1499
|
+
def debug_string_PStringType(t)
|
1500
|
+
range = range_array_part(t.size_type)
|
1501
|
+
range_part = range.empty? ? '' : '[' << range.join(' ,') << '], '
|
1502
|
+
"String[" << range_part << (t.values.map {|s| "'#{s}'" }).join(', ') << ']'
|
1503
|
+
end
|
1504
|
+
|
1505
|
+
# @api private
|
1506
|
+
def string_PEnumType(t)
|
1507
|
+
return "Enum" if t.values.empty?
|
1508
|
+
"Enum[" << t.values.map {|s| "'#{s}'" }.join(', ') << ']'
|
1509
|
+
end
|
1510
|
+
|
1511
|
+
# @api private
|
1512
|
+
def string_PVariantType(t)
|
1513
|
+
return "Variant" if t.types.empty?
|
1514
|
+
"Variant[" << t.types.map {|t2| string(t2) }.join(', ') << ']'
|
1515
|
+
end
|
1516
|
+
|
1517
|
+
# @api private
|
1518
|
+
def string_PTupleType(t)
|
1519
|
+
range = range_array_part(t.size_type)
|
1520
|
+
return "Tuple" if t.types.empty?
|
1521
|
+
s = "Tuple[" << t.types.map {|t2| string(t2) }.join(', ')
|
1522
|
+
unless range.empty?
|
1523
|
+
s << ", " << range.join(', ')
|
1524
|
+
end
|
1525
|
+
s << "]"
|
1526
|
+
s
|
1527
|
+
end
|
1528
|
+
|
1529
|
+
# @api private
|
1530
|
+
def string_PCallableType(t)
|
1531
|
+
# generic
|
1532
|
+
return "Callable" if t.param_types.nil?
|
1533
|
+
|
1534
|
+
if t.param_types.types.empty?
|
1535
|
+
range = [0, 0]
|
1536
|
+
else
|
1537
|
+
range = range_array_part(t.param_types.size_type)
|
1538
|
+
end
|
1539
|
+
# translate to string, and skip Unit types
|
1540
|
+
types = t.param_types.types.map {|t2| string(t2) unless t2.class == Types::PUnitType }.compact
|
1541
|
+
|
1542
|
+
params_part= types.join(', ')
|
1543
|
+
|
1544
|
+
s = "Callable[" << types.join(', ')
|
1545
|
+
unless range.empty?
|
1546
|
+
(s << ', ') unless types.empty?
|
1547
|
+
s << range.join(', ')
|
1548
|
+
end
|
1549
|
+
# Add block T last (after min, max) if present)
|
1550
|
+
#
|
1551
|
+
unless t.block_type.nil?
|
1552
|
+
(s << ', ') unless types.empty? && range.empty?
|
1553
|
+
s << string(t.block_type)
|
1554
|
+
end
|
1555
|
+
s << "]"
|
1556
|
+
s
|
1557
|
+
end
|
1558
|
+
|
1559
|
+
# @api private
|
1560
|
+
def string_PStructType(t)
|
1561
|
+
return "Struct" if t.elements.empty?
|
1562
|
+
"Struct[{" << t.elements.map {|element| string(element) }.join(', ') << "}]"
|
1563
|
+
end
|
1564
|
+
|
1565
|
+
def string_PStructElement(t)
|
1566
|
+
"'#{t.name}'=>#{string(t.type)}"
|
1567
|
+
end
|
1568
|
+
|
1569
|
+
# @api private
|
1570
|
+
def string_PPatternType(t)
|
1571
|
+
return "Pattern" if t.patterns.empty?
|
1572
|
+
"Pattern[" << t.patterns.map {|s| "#{s.regexp.inspect}" }.join(', ') << ']'
|
1573
|
+
end
|
1574
|
+
|
1575
|
+
# @api private
|
1576
|
+
def string_PCollectionType(t)
|
1577
|
+
range = range_array_part(t.size_type)
|
1578
|
+
unless range.empty?
|
1579
|
+
"Collection[#{range.join(', ')}]"
|
1580
|
+
else
|
1581
|
+
"Collection"
|
1582
|
+
end
|
1583
|
+
end
|
1584
|
+
|
1585
|
+
# @api private
|
1586
|
+
def string_PUnitType(t)
|
1587
|
+
"Unit"
|
1588
|
+
end
|
1589
|
+
|
1590
|
+
# @api private
|
1591
|
+
def string_PRuntimeType(t) ; "Runtime[#{string(t.runtime)}, #{string(t.runtime_type_name)}]" ; end
|
1592
|
+
|
1593
|
+
# @api private
|
1594
|
+
def string_PArrayType(t)
|
1595
|
+
parts = [string(t.element_type)] + range_array_part(t.size_type)
|
1596
|
+
"Array[#{parts.join(', ')}]"
|
1597
|
+
end
|
1598
|
+
|
1599
|
+
# @api private
|
1600
|
+
def string_PHashType(t)
|
1601
|
+
parts = [string(t.key_type), string(t.element_type)] + range_array_part(t.size_type)
|
1602
|
+
"Hash[#{parts.join(', ')}]"
|
1603
|
+
end
|
1604
|
+
|
1605
|
+
# @api private
|
1606
|
+
def string_PCatalogEntryType(t)
|
1607
|
+
"CatalogEntry"
|
1608
|
+
end
|
1609
|
+
|
1610
|
+
# @api private
|
1611
|
+
def string_PHostClassType(t)
|
1612
|
+
if t.class_name
|
1613
|
+
"Class[#{t.class_name}]"
|
1614
|
+
else
|
1615
|
+
"Class"
|
1616
|
+
end
|
1617
|
+
end
|
1618
|
+
|
1619
|
+
# @api private
|
1620
|
+
def string_PResourceType(t)
|
1621
|
+
if t.type_name
|
1622
|
+
if t.title
|
1623
|
+
"#{capitalize_segments(t.type_name)}['#{t.title}']"
|
1624
|
+
else
|
1625
|
+
capitalize_segments(t.type_name)
|
1626
|
+
end
|
1627
|
+
else
|
1628
|
+
"Resource"
|
1629
|
+
end
|
1630
|
+
end
|
1631
|
+
|
1632
|
+
def string_POptionalType(t)
|
1633
|
+
if t.optional_type.nil?
|
1634
|
+
"Optional"
|
1635
|
+
else
|
1636
|
+
"Optional[#{string(t.optional_type)}]"
|
1637
|
+
end
|
1638
|
+
end
|
1639
|
+
|
1640
|
+
# Catches all non enumerable types
|
1641
|
+
# @api private
|
1642
|
+
def enumerable_Object(o)
|
1643
|
+
nil
|
1644
|
+
end
|
1645
|
+
|
1646
|
+
# @api private
|
1647
|
+
def enumerable_PIntegerType(t)
|
1648
|
+
# Not enumerable if representing an infinite range
|
1649
|
+
return nil if t.size == TheInfinity
|
1650
|
+
t
|
1651
|
+
end
|
1652
|
+
|
1653
|
+
def self.copy_as_tuple(t)
|
1654
|
+
case t
|
1655
|
+
when Types::PTupleType
|
1656
|
+
t.copy
|
1657
|
+
when Types::PArrayType
|
1658
|
+
# transform array to tuple
|
1659
|
+
result = Types::PTupleType.new
|
1660
|
+
result.addTypes(t.element_type.copy)
|
1661
|
+
result.size_type = t.size_type.nil? ? nil : t.size_type.copy
|
1662
|
+
result
|
1663
|
+
else
|
1664
|
+
raise ArgumentError, "Internal Error: Only Array and Tuple can be given to copy_as_tuple"
|
1665
|
+
end
|
1666
|
+
end
|
1667
|
+
|
1668
|
+
private
|
1669
|
+
|
1670
|
+
NAME_SEGMENT_SEPARATOR = '::'.freeze
|
1671
|
+
|
1672
|
+
def capitalize_segments(s)
|
1673
|
+
s.split(NAME_SEGMENT_SEPARATOR).map(&:capitalize).join(NAME_SEGMENT_SEPARATOR)
|
1674
|
+
end
|
1675
|
+
|
1676
|
+
def class_from_string(str)
|
1677
|
+
begin
|
1678
|
+
str.split(NAME_SEGMENT_SEPARATOR).inject(Object) do |memo, name_segment|
|
1679
|
+
memo.const_get(name_segment)
|
1680
|
+
end
|
1681
|
+
rescue NameError
|
1682
|
+
return nil
|
1683
|
+
end
|
1684
|
+
end
|
1685
|
+
|
1686
|
+
def common_data?(t1, t2)
|
1687
|
+
assignable?(@data_t, t1) && assignable?(@data_t, t2)
|
1688
|
+
end
|
1689
|
+
|
1690
|
+
def common_scalar?(t1, t2)
|
1691
|
+
assignable?(@scalar_t, t1) && assignable?(@scalar_t, t2)
|
1692
|
+
end
|
1693
|
+
|
1694
|
+
def common_numeric?(t1, t2)
|
1695
|
+
assignable?(@numeric_t, t1) && assignable?(@numeric_t, t2)
|
1696
|
+
end
|
1697
|
+
|
1698
|
+
end
|