puppet 4.10.12 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CONTRIBUTING.md +32 -15
- data/Gemfile +31 -14
- data/MAINTAINERS +0 -5
- data/README.md +11 -11
- data/Rakefile +2 -1
- data/conf/auth.conf +21 -0
- data/conf/fileserver.conf +7 -12
- data/conf/hiera.yaml +11 -0
- data/ext/debian/puppet-common.install +0 -1
- data/ext/debian/puppet-common.manpages +0 -2
- data/ext/hiera/hiera.yaml +15 -0
- data/ext/logcheck/puppet +1 -1
- data/ext/project_data.yaml +4 -9
- data/ext/puppet-test +0 -24
- data/ext/rack/config.ru +2 -2
- data/ext/redhat/puppet.spec.erb +0 -3
- data/ext/windows/service/daemon.rb +8 -14
- data/install.rb +1 -1
- data/lib/hiera/puppet_function.rb +1 -1
- data/lib/puppet.rb +7 -5
- data/lib/puppet/agent.rb +29 -38
- data/lib/puppet/agent/disabler.rb +3 -3
- data/lib/puppet/agent/locker.rb +3 -3
- data/lib/puppet/application.rb +12 -29
- data/lib/puppet/application/agent.rb +20 -18
- data/lib/puppet/application/apply.rb +22 -18
- data/lib/puppet/application/cert.rb +2 -7
- data/lib/puppet/application/config.rb +0 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +94 -76
- data/lib/puppet/application/doc.rb +6 -6
- data/lib/puppet/application/face_base.rb +8 -13
- data/lib/puppet/application/filebucket.rb +12 -29
- data/lib/puppet/application/help.rb +0 -1
- data/lib/puppet/application/lookup.rb +106 -101
- data/lib/puppet/application/master.rb +14 -22
- data/lib/puppet/application/resource.rb +13 -10
- data/lib/puppet/application_support.rb +1 -6
- data/lib/puppet/configurer.rb +33 -45
- data/lib/puppet/configurer/downloader.rb +2 -2
- data/lib/puppet/configurer/fact_handler.rb +13 -4
- data/lib/puppet/context.rb +5 -5
- data/lib/puppet/context/trusted_information.rb +1 -1
- data/lib/puppet/defaults.rb +18 -131
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/external/pson/common.rb +4 -0
- data/lib/puppet/face/ca.rb +49 -42
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/catalog/select.rb +4 -4
- data/lib/puppet/face/certificate.rb +20 -20
- data/lib/puppet/face/config.rb +9 -22
- data/lib/puppet/face/epp.rb +59 -61
- data/lib/puppet/face/facts.rb +4 -4
- data/lib/puppet/face/generate.rb +8 -8
- data/lib/puppet/face/help.rb +7 -7
- data/lib/puppet/face/key.rb +2 -2
- data/lib/puppet/face/man.rb +5 -5
- data/lib/puppet/face/module.rb +2 -2
- data/lib/puppet/face/module/build.rb +7 -7
- data/lib/puppet/face/module/changes.rb +6 -6
- data/lib/puppet/face/module/generate.rb +24 -24
- data/lib/puppet/face/module/install.rb +13 -9
- data/lib/puppet/face/module/list.rb +16 -12
- data/lib/puppet/face/module/search.rb +4 -4
- data/lib/puppet/face/module/uninstall.rb +13 -10
- data/lib/puppet/face/module/upgrade.rb +11 -7
- data/lib/puppet/face/node.rb +5 -5
- data/lib/puppet/face/node/clean.rb +8 -8
- data/lib/puppet/face/parser.rb +16 -16
- data/lib/puppet/face/plugin.rb +6 -6
- data/lib/puppet/face/report.rb +9 -9
- data/lib/puppet/face/resource.rb +12 -12
- data/lib/puppet/face/status.rb +4 -4
- data/lib/puppet/feature/base.rb +3 -2
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +9 -9
- data/lib/puppet/file_bucket/file.rb +4 -17
- data/lib/puppet/file_serving/base.rb +3 -3
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/configuration/parser.rb +12 -12
- data/lib/puppet/file_serving/content.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +7 -5
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +7 -7
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/modules.rb +1 -1
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +6 -6
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/file_system/windows.rb +3 -3
- data/lib/puppet/forge.rb +8 -14
- data/lib/puppet/forge/errors.rb +12 -12
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/functions.rb +17 -45
- data/lib/puppet/functions/annotate.rb +108 -0
- data/lib/puppet/functions/binary_file.rb +1 -1
- data/lib/puppet/functions/call.rb +42 -0
- data/lib/puppet/functions/defined.rb +4 -4
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/each.rb +4 -10
- data/lib/puppet/functions/epp.rb +0 -3
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +2 -2
- data/lib/puppet/functions/json_data.rb +1 -1
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/map.rb +3 -13
- data/lib/puppet/functions/match.rb +2 -2
- data/lib/puppet/functions/reduce.rb +0 -31
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/slice.rb +3 -3
- data/lib/puppet/functions/strftime.rb +10 -2
- data/lib/puppet/functions/unique.rb +132 -0
- data/lib/puppet/generate/models/type/property.rb +1 -1
- data/lib/puppet/generate/type.rb +12 -12
- data/lib/puppet/graph/relationship_graph.rb +4 -7
- data/lib/puppet/graph/simple_graph.rb +45 -66
- data/lib/puppet/indirector.rb +2 -2
- data/lib/puppet/indirector/catalog/compiler.rb +58 -44
- data/lib/puppet/indirector/catalog/json.rb +18 -0
- data/lib/puppet/indirector/certificate/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_request/ca.rb +3 -3
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_status/file.rb +6 -6
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +18 -18
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -9
- data/lib/puppet/indirector/file_metadata/http.rb +1 -1
- data/lib/puppet/indirector/file_server.rb +10 -2
- data/lib/puppet/indirector/hiera.rb +5 -3
- data/lib/puppet/indirector/indirection.rb +16 -18
- data/lib/puppet/indirector/json.rb +11 -12
- data/lib/puppet/indirector/key/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/key/file.rb +2 -2
- data/lib/puppet/indirector/ldap.rb +6 -5
- data/lib/puppet/indirector/memory.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +8 -7
- data/lib/puppet/indirector/node/exec.rb +8 -6
- data/lib/puppet/indirector/node/ldap.rb +9 -7
- data/lib/puppet/indirector/node/plain.rb +2 -1
- data/lib/puppet/indirector/node/write_only_yaml.rb +6 -1
- data/lib/puppet/indirector/node/yaml.rb +0 -9
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +13 -0
- data/lib/puppet/indirector/request.rb +11 -23
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/indirector/rest.rb +28 -10
- data/lib/puppet/indirector/ssl_file.rb +9 -9
- data/lib/puppet/indirector/terminus.rb +3 -3
- data/lib/puppet/indirector/yaml.rb +5 -5
- data/lib/puppet/info_service/class_information_service.rb +4 -5
- data/lib/puppet/interface.rb +2 -7
- data/lib/puppet/interface/face_collection.rb +6 -1
- data/lib/puppet/module.rb +10 -35
- data/lib/puppet/module_tool.rb +7 -3
- data/lib/puppet/module_tool/applications/application.rb +8 -9
- data/lib/puppet/module_tool/applications/builder.rb +5 -6
- data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
- data/lib/puppet/module_tool/applications/installer.rb +11 -10
- data/lib/puppet/module_tool/applications/searcher.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +2 -1
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -3
- data/lib/puppet/module_tool/applications/upgrader.rb +10 -9
- data/lib/puppet/module_tool/contents_description.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +0 -1
- data/lib/puppet/module_tool/errors/installer.rb +22 -22
- data/lib/puppet/module_tool/errors/shared.rb +44 -42
- data/lib/puppet/module_tool/errors/uninstaller.rb +13 -9
- data/lib/puppet/module_tool/errors/upgrader.rb +11 -11
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/installed_modules.rb +3 -3
- data/lib/puppet/module_tool/local_tarball.rb +4 -4
- data/lib/puppet/module_tool/metadata.rb +16 -13
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +10 -4
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +2 -2
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool/tar/mini.rb +4 -57
- data/lib/puppet/network/auth_config_parser.rb +12 -11
- data/lib/puppet/network/authconfig.rb +2 -2
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/format.rb +7 -7
- data/lib/puppet/network/format_handler.rb +12 -9
- data/lib/puppet/network/format_support.rb +11 -5
- data/lib/puppet/network/formats.rb +38 -27
- data/lib/puppet/network/http/api/indirected_routes.rb +72 -33
- data/lib/puppet/network/http/api/master/v3/environment.rb +33 -14
- data/lib/puppet/network/http/compression.rb +10 -7
- data/lib/puppet/network/http/connection.rb +19 -23
- data/lib/puppet/network/http/error.rb +14 -10
- data/lib/puppet/network/http/factory.rb +0 -12
- data/lib/puppet/network/http/handler.rb +8 -4
- data/lib/puppet/network/http/issues.rb +1 -0
- data/lib/puppet/network/http/pool.rb +1 -1
- data/lib/puppet/network/http/rack.rb +2 -2
- data/lib/puppet/network/http/rack/rest.rb +1 -1
- data/lib/puppet/network/http/request.rb +34 -20
- data/lib/puppet/network/http/response.rb +13 -1
- data/lib/puppet/network/http/webrick.rb +8 -6
- data/lib/puppet/network/http/webrick/rest.rb +2 -2
- data/lib/puppet/network/rights.rb +6 -6
- data/lib/puppet/network/server.rb +2 -2
- data/lib/puppet/node.rb +25 -23
- data/lib/puppet/node/environment.rb +21 -4
- data/lib/puppet/node/facts.rb +0 -14
- data/lib/puppet/parameter.rb +3 -28
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +3 -3
- data/lib/puppet/parameter/value_collection.rb +4 -4
- data/lib/puppet/parser/ast/leaf.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -3
- data/lib/puppet/parser/ast/resource.rb +1 -1
- data/lib/puppet/parser/ast/resource_instance.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler.rb +44 -117
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -2
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +6 -9
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +1 -1
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -2
- data/lib/puppet/parser/environment_compiler.rb +13 -15
- data/lib/puppet/parser/functions.rb +6 -6
- data/lib/puppet/parser/functions/assert_type.rb +1 -1
- data/lib/puppet/parser/functions/binary_file.rb +1 -1
- data/lib/puppet/parser/functions/break.rb +1 -1
- data/lib/puppet/parser/functions/contain.rb +1 -1
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/defined.rb +1 -1
- data/lib/puppet/parser/functions/dig.rb +1 -1
- data/lib/puppet/parser/functions/each.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +1 -4
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/find_file.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +5 -4
- data/lib/puppet/parser/functions/hiera_include.rb +1 -1
- data/lib/puppet/parser/functions/include.rb +2 -1
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lest.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -1
- data/lib/puppet/parser/functions/new.rb +45 -30
- data/lib/puppet/parser/functions/next.rb +1 -1
- data/lib/puppet/parser/functions/reduce.rb +1 -1
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/return.rb +2 -23
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/functions/sprintf.rb +3 -17
- data/lib/puppet/parser/functions/step.rb +1 -1
- data/lib/puppet/parser/functions/strftime.rb +1 -1
- data/lib/puppet/parser/functions/then.rb +1 -1
- data/lib/puppet/parser/functions/type.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +0 -30
- data/lib/puppet/parser/relationship.rb +49 -20
- data/lib/puppet/parser/resource.rb +31 -30
- data/lib/puppet/parser/resource/param.rb +0 -3
- data/lib/puppet/parser/scope.rb +122 -168
- data/lib/puppet/parser/templatewrapper.rb +2 -2
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +15 -67
- data/lib/puppet/plugins/syntax_checkers.rb +6 -11
- data/lib/puppet/pops.rb +7 -37
- data/lib/puppet/pops/adaptable.rb +8 -3
- data/lib/puppet/pops/adapters.rb +23 -83
- data/lib/puppet/pops/evaluator/access_operator.rb +10 -39
- data/lib/puppet/pops/evaluator/collector_transformer.rb +7 -12
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +7 -7
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +46 -38
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -9
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -2
- data/lib/puppet/pops/evaluator/puppet_proc.rb +1 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +26 -9
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +17 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +13 -30
- data/lib/puppet/pops/functions/dispatch.rb +1 -6
- data/lib/puppet/pops/issues.rb +182 -162
- data/lib/puppet/pops/loader/base_loader.rb +2 -2
- data/lib/puppet/pops/loader/gem_support.rb +2 -2
- data/lib/puppet/pops/loader/module_loaders.rb +59 -8
- data/lib/puppet/pops/loader/predefined_loader.rb +1 -6
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +8 -8
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -10
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +3 -3
- data/lib/puppet/pops/loader/static_loader.rb +33 -64
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +7 -7
- data/lib/puppet/pops/loader/typed_name.rb +5 -0
- data/lib/puppet/pops/loaders.rb +15 -5
- data/lib/puppet/pops/lookup.rb +4 -2
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/data_provider.rb +3 -18
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +12 -35
- data/lib/puppet/pops/lookup/interpolation.rb +1 -0
- data/lib/puppet/pops/lookup/invocation.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +20 -64
- data/lib/puppet/pops/lookup/lookup_key.rb +1 -1
- data/lib/puppet/pops/lookup/module_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/sub_lookup.rb +2 -1
- data/lib/puppet/pops/merge_strategy.rb +1 -1
- data/lib/puppet/pops/model/ast.pp +692 -0
- data/lib/puppet/pops/model/ast.rb +4833 -0
- data/lib/puppet/pops/model/ast_transformer.rb +9 -10
- data/lib/puppet/pops/model/factory.rb +454 -527
- data/lib/puppet/pops/model/model_label_provider.rb +3 -2
- data/lib/puppet/pops/model/model_tree_dumper.rb +9 -8
- data/lib/puppet/pops/parser/egrammar.ra +66 -60
- data/lib/puppet/pops/parser/eparser.rb +1483 -1578
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -5
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/lexer2.rb +7 -33
- data/lib/puppet/pops/parser/locator.rb +39 -16
- data/lib/puppet/pops/parser/parser_support.rb +25 -29
- data/lib/puppet/pops/patterns.rb +1 -2
- data/lib/puppet/pops/pcore.rb +26 -19
- data/lib/puppet/pops/resource/param.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -2
- data/lib/puppet/pops/serialization.rb +25 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +9 -1
- data/lib/puppet/pops/serialization/deserializer.rb +1 -1
- data/lib/puppet/pops/serialization/from_data_converter.rb +181 -0
- data/lib/puppet/pops/serialization/json.rb +4 -4
- data/lib/puppet/pops/serialization/json_path.rb +126 -0
- data/lib/puppet/pops/serialization/object.rb +5 -5
- data/lib/puppet/pops/serialization/serializer.rb +23 -9
- data/lib/puppet/pops/serialization/to_data_converter.rb +292 -0
- data/lib/puppet/pops/time/timespan.rb +11 -11
- data/lib/puppet/pops/time/timestamp.rb +8 -8
- data/lib/puppet/pops/types/annotatable.rb +7 -7
- data/lib/puppet/pops/types/annotation.rb +71 -0
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/enumeration.rb +2 -2
- data/lib/puppet/pops/types/iterable.rb +2 -4
- data/lib/puppet/pops/types/p_binary_type.rb +7 -1
- data/lib/puppet/pops/types/p_meta_type.rb +16 -12
- data/lib/puppet/pops/types/p_object_type.rb +135 -96
- data/lib/puppet/pops/types/p_runtime_type.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +6 -2
- data/lib/puppet/pops/types/p_timespan_type.rb +55 -4
- data/lib/puppet/pops/types/p_type_set_type.rb +42 -34
- data/lib/puppet/pops/types/puppet_object.rb +13 -3
- data/lib/puppet/pops/types/ruby_generator.rb +291 -127
- data/lib/puppet/pops/types/ruby_method.rb +31 -0
- data/lib/puppet/pops/types/string_converter.rb +107 -30
- data/lib/puppet/pops/types/type_calculator.rb +56 -94
- data/lib/puppet/pops/types/type_factory.rb +34 -6
- data/lib/puppet/pops/types/type_formatter.rb +64 -16
- data/lib/puppet/pops/types/type_mismatch_describer.rb +13 -22
- data/lib/puppet/pops/types/type_parser.rb +28 -13
- data/lib/puppet/pops/types/type_set_reference.rb +6 -6
- data/lib/puppet/pops/types/types.rb +169 -245
- data/lib/puppet/pops/utils.rb +0 -24
- data/lib/puppet/pops/validation.rb +3 -9
- data/lib/puppet/pops/validation/checker4_0.rb +86 -76
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
- data/lib/puppet/pops/visitor.rb +21 -0
- data/lib/puppet/property.rb +17 -14
- data/lib/puppet/property/ensure.rb +3 -3
- data/lib/puppet/property/list.rb +1 -10
- data/lib/puppet/provider.rb +2 -0
- data/lib/puppet/provider/aixobject.rb +7 -7
- data/lib/puppet/provider/augeas/augeas.rb +37 -37
- data/lib/puppet/provider/command.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +2 -2
- data/lib/puppet/provider/exec.rb +4 -4
- data/lib/puppet/provider/exec/posix.rb +4 -4
- data/lib/puppet/provider/exec/windows.rb +3 -3
- data/lib/puppet/provider/file/posix.rb +5 -5
- data/lib/puppet/provider/file/windows.rb +4 -4
- data/lib/puppet/provider/group/aix.rb +2 -2
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +7 -4
- data/lib/puppet/provider/host/parsed.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +9 -9
- data/lib/puppet/provider/maillist/mailman.rb +2 -2
- data/lib/puppet/provider/mcx/mcxcontent.rb +3 -3
- data/lib/puppet/provider/mount.rb +2 -1
- data/lib/puppet/provider/mount/parsed.rb +10 -8
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +8 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
- data/lib/puppet/provider/network_device.rb +2 -1
- data/lib/puppet/provider/package/aix.rb +6 -6
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +4 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/aptrpm.rb +2 -2
- data/lib/puppet/provider/package/blastwave.rb +4 -4
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +3 -3
- data/lib/puppet/provider/package/fink.rb +3 -3
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +6 -6
- data/lib/puppet/provider/package/hpux.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +15 -12
- data/lib/puppet/provider/package/openbsd.rb +4 -4
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +9 -9
- data/lib/puppet/provider/package/pkg.rb +9 -9
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +3 -3
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +6 -6
- data/lib/puppet/provider/package/portage.rb +167 -59
- data/lib/puppet/provider/package/ports.rb +3 -3
- data/lib/puppet/provider/package/portupgrade.rb +4 -4
- data/lib/puppet/provider/package/rpm.rb +7 -4
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/sun.rb +3 -2
- data/lib/puppet/provider/package/up2date.rb +1 -1
- data/lib/puppet/provider/package/urpmi.rb +1 -1
- data/lib/puppet/provider/package/windows.rb +4 -4
- data/lib/puppet/provider/package/windows/package.rb +3 -3
- data/lib/puppet/provider/package/yum.rb +5 -6
- data/lib/puppet/provider/package/zypper.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/service/base.rb +8 -21
- data/lib/puppet/provider/service/smf.rb +2 -2
- data/lib/puppet/provider/service/systemd.rb +1 -2
- data/lib/puppet/provider/service/upstart.rb +1 -3
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +3 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -5
- data/lib/puppet/reference/configuration.rb +0 -2
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +6 -6
- data/lib/puppet/reference/type.rb +2 -2
- data/lib/puppet/relationship.rb +7 -9
- data/lib/puppet/reports/http.rb +8 -6
- data/lib/puppet/resource.rb +75 -134
- data/lib/puppet/resource/capability_finder.rb +1 -1
- data/lib/puppet/resource/catalog.rb +26 -34
- data/lib/puppet/resource/status.rb +13 -24
- data/lib/puppet/resource/type.rb +13 -61
- data/lib/puppet/resource/type_collection.rb +29 -23
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/array_setting.rb +1 -1
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/boolean_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -2
- data/lib/puppet/settings/duration_setting.rb +1 -1
- data/lib/puppet/settings/enum_setting.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +2 -10
- data/lib/puppet/settings/file_setting.rb +2 -2
- data/lib/puppet/settings/priority_setting.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +1 -1
- data/lib/puppet/settings/symbolic_enum_setting.rb +1 -1
- data/lib/puppet/settings/terminus_setting.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/ssl/base.rb +2 -2
- data/lib/puppet/ssl/certificate_authority.rb +21 -21
- data/lib/puppet/ssl/certificate_authority/interface.rb +13 -13
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +14 -14
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/certificate_revocation_list.rb +3 -3
- data/lib/puppet/ssl/host.rb +29 -29
- data/lib/puppet/ssl/inventory.rb +1 -1
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/oids.rb +5 -5
- data/lib/puppet/ssl/validator/default_validator.rb +3 -4
- data/lib/puppet/syntax_checkers/base64.rb +7 -7
- data/lib/puppet/syntax_checkers/json.rb +5 -5
- data/lib/puppet/test/test_helper.rb +0 -4
- data/lib/puppet/transaction.rb +38 -23
- data/lib/puppet/transaction/additional_resource_generator.rb +4 -3
- data/lib/puppet/transaction/event.rb +19 -8
- data/lib/puppet/transaction/event_manager.rb +6 -6
- data/lib/puppet/transaction/persistence.rb +6 -6
- data/lib/puppet/transaction/report.rb +34 -47
- data/lib/puppet/transaction/resource_harness.rb +14 -12
- data/lib/puppet/type.rb +9 -7
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +14 -31
- data/lib/puppet/type/exec.rb +16 -16
- data/lib/puppet/type/file.rb +21 -22
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/group.rb +3 -3
- data/lib/puppet/type/file/mode.rb +6 -6
- data/lib/puppet/type/file/owner.rb +3 -3
- data/lib/puppet/type/file/selcontext.rb +18 -1
- data/lib/puppet/type/file/source.rb +5 -1
- data/lib/puppet/type/filebucket.rb +3 -8
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/host.rb +6 -6
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/mailalias.rb +2 -18
- data/lib/puppet/type/maillist.rb +1 -1
- data/lib/puppet/type/mount.rb +8 -8
- data/lib/puppet/type/notify.rb +2 -0
- data/lib/puppet/type/package.rb +5 -5
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/scheduled_task.rb +9 -8
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +3 -19
- data/lib/puppet/type/sshkey.rb +4 -4
- data/lib/puppet/type/tidy.rb +16 -19
- data/lib/puppet/type/user.rb +35 -70
- data/lib/puppet/type/yumrepo.rb +8 -8
- data/lib/puppet/type/zone.rb +7 -7
- data/lib/puppet/type/zpool.rb +3 -3
- data/lib/puppet/util.rb +16 -12
- data/lib/puppet/util/at_fork.rb +35 -0
- data/lib/puppet/util/at_fork/noop.rb +18 -0
- data/lib/puppet/util/at_fork/solaris.rb +158 -0
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +6 -6
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/command_line.rb +4 -4
- data/lib/puppet/util/command_line/puppet_option_parser.rb +3 -3
- data/lib/puppet/util/command_line/trollop.rb +31 -31
- data/lib/puppet/util/diff.rb +1 -1
- data/lib/puppet/util/errors.rb +4 -4
- data/lib/puppet/util/execution.rb +9 -9
- data/lib/puppet/util/feature.rb +5 -5
- data/lib/puppet/util/fileparsing.rb +8 -8
- data/lib/puppet/util/filetype.rb +15 -15
- data/lib/puppet/util/http_proxy.rb +7 -15
- data/lib/puppet/util/inifile.rb +4 -4
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/json_lockfile.rb +4 -4
- data/lib/puppet/util/ldap/connection.rb +2 -2
- data/lib/puppet/util/ldap/manager.rb +2 -2
- data/lib/puppet/util/limits.rb +1 -1
- data/lib/puppet/util/log.rb +23 -16
- data/lib/puppet/util/log/destinations.rb +10 -16
- data/lib/puppet/util/logging.rb +11 -8
- data/lib/puppet/util/metric.rb +9 -6
- data/lib/puppet/util/monkey_patches.rb +27 -66
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/device.rb +7 -7
- data/lib/puppet/util/network_device/cisco/interface.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +6 -6
- data/lib/puppet/util/network_device/transport/ssh.rb +6 -6
- data/lib/puppet/util/plist.rb +4 -2
- data/lib/puppet/util/posix.rb +5 -5
- data/lib/puppet/util/profiler/wall_clock.rb +1 -1
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/psych_support.rb +3 -11
- data/lib/puppet/util/rdoc.rb +4 -4
- data/lib/puppet/util/reference.rb +14 -7
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/retry_action.rb +2 -2
- data/lib/puppet/util/selinux.rb +54 -12
- data/lib/puppet/util/splayer.rb +1 -1
- data/lib/puppet/util/storage.rb +5 -5
- data/lib/puppet/util/suidmanager.rb +4 -4
- data/lib/puppet/util/symbolic_file_mode.rb +9 -9
- data/lib/puppet/util/tag_set.rb +1 -4
- data/lib/puppet/util/tagging.rb +2 -2
- data/lib/puppet/util/windows.rb +2 -0
- data/lib/puppet/util/windows/adsi.rb +19 -16
- data/lib/puppet/util/windows/api_types.rb +7 -11
- data/lib/puppet/util/windows/com.rb +4 -4
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/eventlog.rb +192 -0
- data/lib/puppet/util/windows/file.rb +13 -96
- data/lib/puppet/util/windows/principal.rb +6 -7
- data/lib/puppet/util/windows/process.rb +6 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/root_certs.rb +1 -1
- data/lib/puppet/util/windows/security.rb +14 -14
- data/lib/puppet/util/windows/sid.rb +13 -66
- data/lib/puppet/util/windows/taskscheduler.rb +62 -62
- data/lib/puppet/util/windows/user.rb +6 -6
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +2 -10
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +1 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +122 -114
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +678 -342
- data/lib/puppet/vendor/semantic_puppet/{lib/semantic_puppet/locales → locales}/config.yaml +0 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/config.yaml +1 -1
- data/locales/puppet.pot +7847 -112
- data/man/man5/puppet.conf.5 +55 -296
- data/man/man8/puppet-agent.8 +10 -32
- data/man/man8/puppet-apply.8 +6 -21
- data/man/man8/puppet-ca.8 +34 -48
- data/man/man8/puppet-catalog.8 +4 -4
- data/man/man8/puppet-cert.8 +6 -23
- data/man/man8/puppet-certificate.8 +28 -44
- data/man/man8/puppet-certificate_request.8 +4 -4
- data/man/man8/puppet-certificate_revocation_list.8 +4 -4
- data/man/man8/puppet-config.8 +5 -5
- data/man/man8/puppet-describe.8 +3 -3
- data/man/man8/puppet-device.8 +13 -23
- data/man/man8/puppet-doc.8 +5 -5
- data/man/man8/puppet-epp.8 +10 -16
- data/man/man8/puppet-facts.8 +4 -4
- data/man/man8/puppet-filebucket.8 +6 -63
- data/man/man8/puppet-help.8 +4 -4
- data/man/man8/puppet-inspect.8 +5 -8
- data/man/man8/puppet-key.8 +4 -4
- data/man/man8/puppet-man.8 +5 -5
- data/man/man8/puppet-master.8 +5 -5
- data/man/man8/puppet-module.8 +13 -22
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +4 -4
- data/man/man8/puppet-plugin.8 +4 -4
- data/man/man8/puppet-report.8 +4 -4
- data/man/man8/puppet-resource.8 +8 -4
- data/man/man8/puppet-status.8 +5 -5
- data/man/man8/puppet.8 +3 -12
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +9 -0
- data/spec/integration/agent/logging_spec.rb +0 -2
- data/spec/integration/application/apply_spec.rb +19 -23
- data/spec/integration/application/lookup_spec.rb +0 -21
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +2 -2
- data/spec/integration/file_bucket/file_spec.rb +5 -20
- data/spec/integration/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/class_spec.rb +6 -6
- data/spec/integration/parser/compiler_spec.rb +184 -142
- data/spec/integration/parser/dynamic_scoping_spec.rb +0 -1
- data/spec/integration/parser/pcore_resource_spec.rb +1 -1
- data/spec/integration/parser/scope_spec.rb +53 -4
- data/spec/integration/provider/cron/crontab_spec.rb +0 -1
- data/spec/integration/resource/catalog_spec.rb +0 -4
- data/spec/integration/transaction/report_spec.rb +2 -2
- data/spec/integration/transaction_spec.rb +4 -37
- data/spec/integration/type/package_spec.rb +7 -1
- data/spec/integration/util/execution_spec.rb +0 -8
- data/spec/integration/util/windows/adsi_spec.rb +1 -86
- data/spec/integration/util/windows/principal_spec.rb +1 -10
- data/spec/integration/util/windows/process_spec.rb +0 -45
- data/spec/lib/matchers/json.rb +3 -3
- data/spec/lib/puppet/indirector_testing.rb +4 -0
- data/spec/lib/puppet_spec/compiler.rb +1 -1
- data/spec/lib/puppet_spec/modules.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +10 -6
- data/spec/shared_contexts/types_setup.rb +28 -9
- data/spec/spec_helper.rb +0 -11
- data/spec/unit/agent_spec.rb +12 -34
- data/spec/unit/application/agent_spec.rb +16 -0
- data/spec/unit/application/apply_spec.rb +37 -13
- data/spec/unit/application/cert_spec.rb +1 -40
- data/spec/unit/application/config_spec.rb +0 -4
- data/spec/unit/application/describe_spec.rb +19 -0
- data/spec/unit/application/device_spec.rb +41 -2
- data/spec/unit/application/face_base_spec.rb +6 -6
- data/spec/unit/application/lookup_spec.rb +1 -31
- data/spec/unit/application/master_spec.rb +22 -6
- data/spec/unit/application/resource_spec.rb +17 -0
- data/spec/unit/application_spec.rb +0 -24
- data/spec/unit/capability_spec.rb +2 -6
- data/spec/unit/configurer/fact_handler_spec.rb +74 -41
- data/spec/unit/configurer/plugin_handler_spec.rb +13 -19
- data/spec/unit/configurer_spec.rb +36 -33
- data/spec/unit/defaults_spec.rb +0 -44
- data/spec/unit/environments_spec.rb +0 -15
- data/spec/unit/face/config_spec.rb +2 -1
- data/spec/unit/face/epp_face_spec.rb +0 -9
- data/spec/unit/face/module/list_spec.rb +60 -0
- data/spec/unit/file_bucket/file_spec.rb +3 -3
- data/spec/unit/file_serving/http_metadata_spec.rb +1 -1
- data/spec/unit/file_serving/metadata_spec.rb +14 -9
- data/spec/unit/forge/forge_spec.rb +2 -2
- data/spec/unit/forge_spec.rb +0 -105
- data/spec/unit/functions/annotate_spec.rb +175 -0
- data/spec/unit/functions/break_spec.rb +52 -83
- data/spec/unit/functions/call_spec.rb +77 -0
- data/spec/unit/functions/contain_spec.rb +1 -1
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +0 -10
- data/spec/unit/functions/hiera_spec.rb +0 -5
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -6
- data/spec/unit/functions/lookup_spec.rb +4 -97
- data/spec/unit/functions/new_spec.rb +1 -1
- data/spec/unit/functions/unique_spec.rb +111 -0
- data/spec/unit/functions4_spec.rb +2 -43
- data/spec/unit/graph/relationship_graph_spec.rb +0 -15
- data/spec/unit/graph/simple_graph_spec.rb +58 -55
- data/spec/unit/indirector/catalog/compiler_spec.rb +206 -174
- data/spec/unit/indirector/catalog/json_spec.rb +50 -1
- data/spec/unit/indirector/facts/facter_spec.rb +1 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
- data/spec/unit/indirector/file_server_spec.rb +17 -2
- data/spec/unit/indirector/indirection_spec.rb +3 -60
- data/spec/unit/indirector/json_spec.rb +27 -6
- data/spec/unit/indirector/node/exec_spec.rb +12 -12
- data/spec/unit/indirector/node/ldap_spec.rb +29 -8
- data/spec/unit/indirector/node/plain_spec.rb +16 -6
- data/spec/unit/indirector/node/write_only_yaml_spec.rb +12 -0
- data/spec/unit/indirector/report/processor_spec.rb +2 -2
- data/spec/unit/indirector/report/rest_spec.rb +29 -3
- data/spec/unit/indirector/request_spec.rb +0 -45
- data/spec/unit/indirector/rest_spec.rb +57 -15
- data/spec/unit/interface/face_collection_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +0 -12
- data/spec/unit/module_spec.rb +10 -31
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -1
- data/spec/unit/module_tool/tar/mini_spec.rb +5 -34
- data/spec/unit/network/format_handler_spec.rb +11 -11
- data/spec/unit/network/format_spec.rb +9 -0
- data/spec/unit/network/formats_spec.rb +322 -138
- data/spec/unit/network/http/api/indirected_routes_spec.rb +62 -52
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +128 -2
- data/spec/unit/network/http/api/master/v3_spec.rb +1 -1
- data/spec/unit/network/http/api_spec.rb +1 -1
- data/spec/unit/network/http/compression_spec.rb +105 -88
- data/spec/unit/network/http/error_spec.rb +1 -2
- data/spec/unit/network/http/factory_spec.rb +9 -38
- data/spec/unit/network/http/handler_spec.rb +8 -12
- data/spec/unit/network/http/request_spec.rb +110 -0
- data/spec/unit/network/http/response_spec.rb +108 -0
- data/spec/unit/network/http/webrick_spec.rb +29 -30
- data/spec/unit/node/facts_spec.rb +13 -13
- data/spec/unit/node_spec.rb +33 -10
- data/spec/unit/parameter_spec.rb +73 -5
- data/spec/unit/parser/ast/leaf_spec.rb +4 -3
- data/spec/unit/parser/compiler_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +0 -2
- data/spec/unit/parser/functions/sprintf_spec.rb +0 -26
- data/spec/unit/parser/resource_spec.rb +86 -24
- data/spec/unit/parser/scope_spec.rb +4 -81
- data/spec/unit/pops/benchmark_spec.rb +8 -26
- data/spec/unit/pops/containment_spec.rb +0 -26
- data/spec/unit/pops/evaluator/access_ops_spec.rb +103 -103
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +59 -6
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +5 -5
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +26 -26
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -7
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +7 -7
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +36 -1
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +10 -10
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
- data/spec/unit/pops/factory_rspec_helper.rb +0 -4
- data/spec/unit/pops/factory_spec.rb +83 -83
- data/spec/unit/pops/loaders/loaders_spec.rb +69 -1
- data/spec/unit/pops/loaders/static_loader_spec.rb +3 -7
- data/spec/unit/pops/model/model_spec.rb +10 -10
- data/spec/unit/pops/parser/epp_parser_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +4 -59
- data/spec/unit/pops/parser/{source_pos_adapter_spec.rb → locator_spec.rb} +9 -11
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -4
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -3
- data/spec/unit/pops/parser/parse_containers_spec.rb +17 -19
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -3
- data/spec/unit/pops/parser/parser_spec.rb +8 -10
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -3
- data/spec/unit/pops/serialization/serialization_spec.rb +87 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +494 -0
- data/spec/unit/pops/time/timestamp_spec.rb +13 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +99 -13
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +8 -8
- data/spec/unit/pops/types/p_type_set_type_spec.rb +1 -9
- data/spec/unit/pops/types/ruby_generator_spec.rb +57 -20
- data/spec/unit/pops/types/string_converter_spec.rb +78 -30
- data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +207 -123
- data/spec/unit/pops/types/type_factory_spec.rb +9 -9
- data/spec/unit/pops/types/type_formatter_spec.rb +32 -19
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +6 -6
- data/spec/unit/pops/types/types_spec.rb +42 -2
- data/spec/unit/pops/validator/validator_spec.rb +25 -86
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property/list_spec.rb +2 -2
- data/spec/unit/provider/augeas/augeas_spec.rb +1 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +22 -79
- data/spec/unit/provider/package/aix_spec.rb +0 -8
- data/spec/unit/provider/package/portage_spec.rb +103 -17
- data/spec/unit/provider/package/rpm_spec.rb +14 -1
- data/spec/unit/provider/package/yum_spec.rb +0 -10
- data/spec/unit/provider/service/base_spec.rb +0 -20
- data/spec/unit/provider/service/smf_spec.rb +4 -2
- data/spec/unit/provider/service/systemd_spec.rb +1 -15
- data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/zfs/zfs_spec.rb +1 -7
- data/spec/unit/puppet_spec.rb +2 -3
- data/spec/unit/relationship_spec.rb +15 -36
- data/spec/unit/reports/http_spec.rb +11 -8
- data/spec/unit/resource/catalog_spec.rb +47 -49
- data/spec/unit/resource/status_spec.rb +114 -103
- data/spec/unit/resource/type_collection_spec.rb +5 -5
- data/spec/unit/resource/type_spec.rb +4 -71
- data/spec/unit/resource_spec.rb +30 -34
- data/spec/unit/settings_spec.rb +4 -2
- data/spec/unit/ssl/host_spec.rb +34 -34
- data/spec/unit/status_spec.rb +7 -7
- data/spec/unit/transaction/event_spec.rb +18 -15
- data/spec/unit/transaction/report_spec.rb +100 -81
- data/spec/unit/transaction/resource_harness_spec.rb +3 -3
- data/spec/unit/transaction_spec.rb +53 -8
- data/spec/unit/type/file/group_spec.rb +2 -2
- data/spec/unit/type/file/mode_spec.rb +9 -9
- data/spec/unit/type/file/owner_spec.rb +2 -2
- data/spec/unit/type/file/selinux_spec.rb +2 -0
- data/spec/unit/type/file/source_spec.rb +13 -0
- data/spec/unit/type/nagios_spec.rb +1 -21
- data/spec/unit/type/ssh_authorized_key_spec.rb +2 -2
- data/spec/unit/type/tidy_spec.rb +0 -14
- data/spec/unit/type/user_spec.rb +2 -4
- data/spec/unit/util/at_fork_spec.rb +150 -0
- data/spec/unit/util/execution_spec.rb +31 -2
- data/spec/unit/util/http_proxy_spec.rb +0 -37
- data/spec/unit/util/log/destinations_spec.rb +5 -6
- data/spec/unit/util/log_spec.rb +62 -17
- data/spec/unit/util/metric_spec.rb +9 -2
- data/spec/unit/util/monkey_patches_spec.rb +6 -188
- data/spec/unit/util/run_mode_spec.rb +17 -10
- data/spec/unit/util/tag_set_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +55 -0
- data/spec/unit/util/windows/adsi_spec.rb +27 -31
- data/spec/unit/util/windows/api_types_spec.rb +0 -51
- data/spec/unit/util/windows/eventlog_spec.rb +123 -0
- data/spec/unit/util/windows/sid_spec.rb +15 -86
- data/spec/unit/util_spec.rb +7 -1
- data/tasks/benchmark.rake +3 -3
- data/tasks/cfpropertylist.rake +1 -1
- data/tasks/generate_ast_model.rake +78 -0
- data/tasks/manpages.rake +1 -1
- data/tasks/parallel.rake +7 -12
- metadata +3436 -3695
- checksums.yaml +0 -7
- data/bin/extlookup2hiera +0 -56
- data/ext/emacs/puppet-mode-init.el +0 -6
- data/ext/emacs/puppet-mode.el +0 -433
- data/ext/vim/README +0 -3
- data/ext/vim/ftdetect/puppet.vim +0 -2
- data/ext/vim/ftplugin/puppet.vim +0 -94
- data/ext/vim/indent/puppet.vim +0 -76
- data/ext/vim/syntax/puppet.vim +0 -115
- data/lib/puppet/application/file.rb +0 -4
- data/lib/puppet/application/inspect.rb +0 -184
- data/lib/puppet/application/resource_type.rb +0 -7
- data/lib/puppet/data_providers.rb +0 -34
- data/lib/puppet/data_providers/data_adapter.rb +0 -37
- data/lib/puppet/data_providers/data_function_support.rb +0 -32
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -26
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -24
- data/lib/puppet/data_providers/hiera_config.rb +0 -151
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +0 -25
- data/lib/puppet/data_providers/hiera_interpolate.rb +0 -21
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +0 -30
- data/lib/puppet/data_providers/hiera_support.rb +0 -42
- data/lib/puppet/data_providers/json_data_provider_factory.rb +0 -38
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +0 -40
- data/lib/puppet/face/file.rb +0 -50
- data/lib/puppet/face/file/download.rb +0 -56
- data/lib/puppet/face/file/store.rb +0 -21
- data/lib/puppet/face/resource_type.rb +0 -84
- data/lib/puppet/feature/cfacter.rb +0 -15
- data/lib/puppet/feature/external_facts.rb +0 -5
- data/lib/puppet/indirector/catalog/static_compiler.rb +0 -232
- data/lib/puppet/indirector/resource_type.rb +0 -5
- data/lib/puppet/indirector/resource_type/parser.rb +0 -108
- data/lib/puppet/indirector/resource_type/rest.rb +0 -7
- data/lib/puppet/parser/yaml_trimmer.rb +0 -7
- data/lib/puppet/plugins/binding_schemes.rb +0 -140
- data/lib/puppet/plugins/data_providers.rb +0 -45
- data/lib/puppet/plugins/data_providers/data_provider.rb +0 -406
- data/lib/puppet/plugins/data_providers/registry.rb +0 -51
- data/lib/puppet/pops/binder/binder.rb +0 -398
- data/lib/puppet/pops/binder/binder_issues.rb +0 -124
- data/lib/puppet/pops/binder/bindings_checker.rb +0 -201
- data/lib/puppet/pops/binder/bindings_composer.rb +0 -181
- data/lib/puppet/pops/binder/bindings_factory.rb +0 -813
- data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -45
- data/lib/puppet/pops/binder/bindings_loader.rb +0 -87
- data/lib/puppet/pops/binder/bindings_model.rb +0 -70
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +0 -215
- data/lib/puppet/pops/binder/bindings_model_meta.rb +0 -215
- data/lib/puppet/pops/binder/bindings_validator_factory.rb +0 -28
- data/lib/puppet/pops/binder/config/binder_config.rb +0 -107
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +0 -142
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +0 -36
- data/lib/puppet/pops/binder/config/issues.rb +0 -90
- data/lib/puppet/pops/binder/injector.rb +0 -771
- data/lib/puppet/pops/binder/injector_entry.rb +0 -57
- data/lib/puppet/pops/binder/key_factory.rb +0 -65
- data/lib/puppet/pops/binder/producers.rb +0 -831
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +0 -34
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +0 -143
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +0 -53
- data/lib/puppet/pops/binder/system_bindings.rb +0 -60
- data/lib/puppet/pops/containment.rb +0 -104
- data/lib/puppet/pops/model/model.rb +0 -131
- data/lib/puppet/pops/model/model_meta.rb +0 -629
- data/lib/puppet/pops/serialization/rgen.rb +0 -152
- data/lib/puppet/vendor/load_rgen.rb +0 -2
- data/lib/puppet/vendor/rgen/CHANGELOG +0 -197
- data/lib/puppet/vendor/rgen/MIT-LICENSE +0 -20
- data/lib/puppet/vendor/rgen/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/rgen/README.rdoc +0 -78
- data/lib/puppet/vendor/rgen/Rakefile +0 -41
- data/lib/puppet/vendor/rgen/TODO +0 -41
- data/lib/puppet/vendor/rgen/anounce.txt +0 -61
- data/lib/puppet/vendor/rgen/design_rationale.txt +0 -71
- data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +0 -54
- data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +0 -32
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +0 -562
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +0 -45
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +0 -43
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +0 -103
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +0 -89
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +0 -559
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +0 -26
- data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +0 -20
- data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +0 -91
- data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +0 -28
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +0 -37
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +0 -172
- data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +0 -45
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +0 -218
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +0 -81
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +0 -69
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +0 -167
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +0 -91
- data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +0 -129
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +0 -63
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +0 -140
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +0 -289
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +0 -66
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +0 -66
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +0 -117
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +0 -169
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +0 -126
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +0 -331
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +0 -94
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +0 -137
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +0 -97
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +0 -128
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +0 -168
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +0 -224
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +0 -556
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +0 -174
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +0 -89
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +0 -77
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +0 -30
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +0 -168
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +0 -23
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +0 -42
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +0 -32
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +0 -334
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +0 -225
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +0 -156
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +0 -121
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +0 -18
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +0 -116
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +0 -71
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +0 -98
- data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +0 -297
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +0 -83
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +0 -87
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +0 -234
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +0 -26
- data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +0 -475
- data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +0 -61
- data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +0 -67
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +0 -124
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +0 -84
- data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +0 -114
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +0 -68
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +0 -142
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +0 -29
- data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +0 -42
- data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +0 -329
- data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +0 -79
- data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +0 -127
- data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +0 -64
- data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +0 -35
- data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +0 -23
- data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +0 -54
- data/lib/puppet/vendor/rgen/test/environment_test.rb +0 -90
- data/lib/puppet/vendor/rgen/test/json_test.rb +0 -171
- data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +0 -1482
- data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +0 -57
- data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +0 -131
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +0 -98
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +0 -70
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +0 -42
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +0 -44
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +0 -9
- data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +0 -178
- data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +0 -59
- data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +0 -242
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +0 -163
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +0 -163
- data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +0 -156
- data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +0 -94
- data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +0 -42
- data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +0 -23
- data/lib/puppet/vendor/rgen/test/model_builder_test.rb +0 -6
- data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +0 -30
- data/lib/puppet/vendor/rgen/test/output_handler_test.rb +0 -58
- data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +0 -48
- data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +0 -102
- data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +0 -117
- data/lib/puppet/vendor/rgen/test/rgen_test.rb +0 -26
- data/lib/puppet/vendor/rgen/test/template_language_test.rb +0 -163
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +0 -29
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +0 -9
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +0 -4
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +0 -12
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +0 -11
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +0 -7
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +0 -8
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +0 -8
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +0 -7
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +0 -12
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +0 -24
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +0 -13
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +0 -10
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +0 -17
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +0 -31
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +0 -9
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +0 -4
- data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +0 -29
- data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +0 -119
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +0 -1029
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +0 -317
- data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +0 -101
- data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +0 -22
- data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +0 -67
- data/lib/puppet/vendor/rgen/test/transformer_test.rb +0 -254
- data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +0 -99
- data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +0 -97
- data/lib/puppet/vendor/rgen/test/util_test.rb +0 -5
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +0 -160
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +0 -94
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +0 -53
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +0 -49
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +0 -75
- data/lib/puppet/vendor/rgen_patch.rb +0 -132
- data/lib/semver.rb +0 -146
- data/man/man8/extlookup2hiera.8 +0 -10
- data/man/man8/puppet-file.8 +0 -189
- data/man/man8/puppet-generate.8 +0 -84
- data/man/man8/puppet-lookup.8 +0 -87
- data/man/man8/puppet-resource_type.8 +0 -188
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +0 -23
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet/bindings/dataprovider/default.rb +0 -54
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +0 -33
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +0 -33
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -10
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -23
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +0 -3
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +0 -9
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
- data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
- data/spec/unit/application/inspect_spec.rb +0 -316
- data/spec/unit/data_providers/custom_data_provider_spec.rb +0 -50
- data/spec/unit/face/file_spec.rb +0 -14
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -255
- data/spec/unit/indirector/resource_type/parser_spec.rb +0 -259
- data/spec/unit/indirector/resource_type/rest_spec.rb +0 -14
- data/spec/unit/pops/binder/binder_spec.rb +0 -43
- data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -155
- data/spec/unit/pops/binder/bindings_composer_spec.rb +0 -64
- data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +0 -18
- data/spec/unit/pops/binder/config/binder_config_spec.rb +0 -42
- data/spec/unit/pops/binder/injector_spec.rb +0 -768
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +0 -23
- data/spec/unit/pops/serialization/rgen_spec.rb +0 -88
- data/spec/unit/semver_spec.rb +0 -546
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'semantic_puppet'
|
2
2
|
|
3
3
|
module SemanticPuppet
|
4
|
-
|
5
4
|
# @note SemanticPuppet::Version subclasses Numeric so that it has sane Range
|
6
5
|
# semantics in Ruby 1.9+.
|
7
6
|
class Version < Numeric
|
@@ -9,69 +8,46 @@ module SemanticPuppet
|
|
9
8
|
|
10
9
|
class ValidationFailure < ArgumentError; end
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
match, major, minor, patch, prerelease, build = *ver.match(/\A#{REGEX_FULL}\Z/)
|
19
|
-
|
20
|
-
if match.nil?
|
21
|
-
raise _("Unable to parse '%{version}' as a semantic version identifier") % {version: ver}
|
22
|
-
end
|
23
|
-
|
24
|
-
prerelease = parse_prerelease(prerelease) if prerelease
|
25
|
-
# Build metadata is not yet supported in semantic_puppet, but we hope to.
|
26
|
-
# The following code prevents build metadata for now.
|
27
|
-
#build = parse_build_metadata(build) if build
|
28
|
-
if !build.nil?
|
29
|
-
raise _("'%{version}' MUST NOT include build identifiers") % {version: ver}
|
30
|
-
end
|
31
|
-
|
32
|
-
self.new(major.to_i, minor.to_i, patch.to_i, prerelease, build)
|
33
|
-
end
|
11
|
+
# Parse a Semantic Version string.
|
12
|
+
#
|
13
|
+
# @param ver [String] the version string to parse
|
14
|
+
# @return [Version] a comparable {Version} object
|
15
|
+
def self.parse(ver)
|
16
|
+
match, major, minor, patch, prerelease, build = *ver.match(REGEX_FULL_RX)
|
34
17
|
|
35
|
-
|
36
|
-
#
|
37
|
-
# @param ver [String] the version string to validate
|
38
|
-
# @return [bool] whether or not the string represents a valid Semantic Version
|
39
|
-
def valid?(ver)
|
40
|
-
!!(ver =~ /\A#{REGEX_FULL}\Z/)
|
41
|
-
end
|
18
|
+
raise ValidationFailure, _("Unable to parse '%{version}' as a semantic version identifier") % {version: ver} unless match
|
42
19
|
|
43
|
-
|
44
|
-
|
45
|
-
subject = 'Prerelease identifiers'
|
46
|
-
prerelease = prerelease.split('.', -1)
|
47
|
-
|
48
|
-
if prerelease.empty? or prerelease.any? { |x| x.empty? }
|
49
|
-
raise _("%{subject} MUST NOT be empty") % {subject: subject}
|
50
|
-
elsif prerelease.any? { |x| x =~ /[^0-9a-zA-Z-]/ }
|
51
|
-
raise _("%{subject} MUST use only ASCII alphanumerics and hyphens") % {subject: subject}
|
52
|
-
elsif prerelease.any? { |x| x =~ /^0\d+$/ }
|
53
|
-
raise _("%{subject} MUST NOT contain leading zeroes") % {subject: subject}
|
54
|
-
end
|
20
|
+
new(major.to_i, minor.to_i, patch.to_i, parse_prerelease(prerelease), parse_build(build)).freeze
|
21
|
+
end
|
55
22
|
|
56
|
-
|
23
|
+
# Validate a Semantic Version string.
|
24
|
+
#
|
25
|
+
# @param ver [String] the version string to validate
|
26
|
+
# @return [bool] whether or not the string represents a valid Semantic Version
|
27
|
+
def self.valid?(ver)
|
28
|
+
match = ver.match(REGEX_FULL_RX)
|
29
|
+
if match.nil?
|
30
|
+
false
|
31
|
+
else
|
32
|
+
prerelease = match[4]
|
33
|
+
prerelease.nil? || prerelease.split('.').all? { |x| !(x =~ /^0\d+/) }
|
57
34
|
end
|
35
|
+
end
|
58
36
|
|
59
|
-
|
60
|
-
|
61
|
-
|
37
|
+
def self.parse_build(build)
|
38
|
+
build.nil? ? nil : build.split('.').freeze
|
39
|
+
end
|
62
40
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
41
|
+
def self.parse_prerelease(prerelease)
|
42
|
+
return nil unless prerelease
|
43
|
+
prerelease.split('.').map do |x|
|
44
|
+
if x =~ /^\d+$/
|
45
|
+
raise ValidationFailure, _('Numeric pre-release identifiers MUST NOT contain leading zeroes') if x.length > 1 && x.start_with?('0')
|
46
|
+
x.to_i
|
47
|
+
else
|
48
|
+
x
|
67
49
|
end
|
68
|
-
|
69
|
-
return build
|
70
|
-
end
|
71
|
-
|
72
|
-
def raise(msg)
|
73
|
-
super ValidationFailure, msg, caller.drop_while { |x| x !~ /\bparse\b/ }
|
74
|
-
end
|
50
|
+
end.freeze
|
75
51
|
end
|
76
52
|
|
77
53
|
attr_reader :major, :minor, :patch
|
@@ -95,24 +71,39 @@ module SemanticPuppet
|
|
95
71
|
end
|
96
72
|
end
|
97
73
|
|
74
|
+
# @return [String] the `prerelease` identifier as a string without the leading '-'
|
98
75
|
def prerelease
|
99
|
-
@prerelease
|
76
|
+
(@prerelease.nil? || @prerelease.empty?) ? nil : @prerelease.join('.')
|
100
77
|
end
|
101
78
|
|
102
79
|
# @return [Boolean] true if this is a stable release
|
103
80
|
def stable?
|
104
|
-
@prerelease.nil?
|
81
|
+
@prerelease.nil? || @prerelease.empty?
|
82
|
+
end
|
83
|
+
|
84
|
+
# @return [Version] this version stripped from any prerelease identifier.
|
85
|
+
def to_stable
|
86
|
+
@prerelease.nil? ? self : Version.new(@major, @minor, @patch, nil, @build)
|
105
87
|
end
|
106
88
|
|
89
|
+
# @return [String] the `build` identifier as a string without the leading '+'
|
107
90
|
def build
|
108
|
-
@build
|
91
|
+
(@build.nil? || @build.empty?) ? nil : @build.join('.')
|
109
92
|
end
|
110
93
|
|
111
94
|
def <=>(other)
|
112
|
-
return
|
113
|
-
|
114
|
-
|
115
|
-
|
95
|
+
return nil unless other.is_a?(Version)
|
96
|
+
cmp = @major <=> other.major
|
97
|
+
if cmp == 0
|
98
|
+
cmp = @minor <=> other.minor
|
99
|
+
if cmp == 0
|
100
|
+
cmp = @patch <=> other.patch
|
101
|
+
if cmp == 0
|
102
|
+
cmp = compare_prerelease(other)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
cmp
|
116
107
|
end
|
117
108
|
|
118
109
|
def eql?(other)
|
@@ -126,70 +117,87 @@ module SemanticPuppet
|
|
126
117
|
alias == eql?
|
127
118
|
|
128
119
|
def to_s
|
129
|
-
"#{major}.#{minor}.#{patch}"
|
130
|
-
|
131
|
-
|
120
|
+
s = "#{@major}.#{@minor}.#{@patch}"
|
121
|
+
|
122
|
+
# Appending the @prerelease and @build in a thoroughly tested and optimized
|
123
|
+
# way. Using interpolations and/or array joins may look simpler but will slows
|
124
|
+
# things down. Don't change this code without measuring performance of new
|
125
|
+
# solution.
|
126
|
+
unless @prerelease.nil?
|
127
|
+
s << '-' << @prerelease[0].to_s
|
128
|
+
i = 0
|
129
|
+
l = @prerelease.length
|
130
|
+
while (i += 1) < l
|
131
|
+
s << '.' << @prerelease[i].to_s
|
132
|
+
end
|
133
|
+
end
|
134
|
+
unless @build.nil?
|
135
|
+
s << '+' << @build[0].to_s
|
136
|
+
i = 0
|
137
|
+
l = @build.length
|
138
|
+
while (i += 1) < l
|
139
|
+
s << '.' << @build[i].to_s
|
140
|
+
end
|
141
|
+
end
|
142
|
+
s
|
132
143
|
end
|
144
|
+
alias inspect to_s
|
133
145
|
|
134
146
|
def hash
|
135
|
-
|
147
|
+
(((((@major * 0x100) ^ @minor) * 0x100) ^ @patch) * 0x100) ^ @prerelease.hash
|
136
148
|
end
|
137
149
|
|
138
|
-
private
|
139
|
-
# This is a hack; tildes sort later than any valid identifier. The
|
140
|
-
# advantage is that we don't need to handle stable vs. prerelease
|
141
|
-
# comparisons separately.
|
142
|
-
@@STABLE_RELEASE = [ '~' ].freeze
|
143
|
-
|
144
150
|
def compare_prerelease(other)
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
#
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
return
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
151
|
+
mine = @prerelease
|
152
|
+
|
153
|
+
# Need to use the instance variable here to avoid getting a string
|
154
|
+
yours = other.instance_variable_get(:@prerelease)
|
155
|
+
|
156
|
+
# A version that has a prerelease is always less than a version that doesn't
|
157
|
+
if mine.nil?
|
158
|
+
yours.nil? ? 0 : 1
|
159
|
+
elsif yours.nil?
|
160
|
+
-1
|
161
|
+
else
|
162
|
+
# Compare all prerelease identifier segments that can be compared. Should
|
163
|
+
# all segments compare equal up to the point where one of the prereleases
|
164
|
+
# have no more segments, then the one with more segements is greater.
|
165
|
+
your_max = yours.size
|
166
|
+
mine.each_with_index do |x, idx|
|
167
|
+
# 'mine' win if 'your' list of segments is exhausted
|
168
|
+
return 1 if idx >= your_max
|
169
|
+
y = yours[idx]
|
170
|
+
|
171
|
+
# Integer always wins over String
|
172
|
+
cmp = if x.is_a?(Integer)
|
173
|
+
y.is_a?(Integer) ? x <=> y : -1
|
174
|
+
elsif y.is_a?(Integer)
|
175
|
+
1
|
176
|
+
else
|
177
|
+
x <=> y
|
178
|
+
end
|
179
|
+
|
180
|
+
# No need to continue if a diff is found
|
181
|
+
return cmp unless cmp == 0
|
171
182
|
end
|
172
|
-
end
|
173
183
|
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
self.class.new(@major, @minor, @patch, [])
|
184
|
+
# All segments, up to the point where at least one list of segement is exhausted,
|
185
|
+
# compared equal. The one with the highest segment count wins.
|
186
|
+
mine.size <=> your_max
|
187
|
+
end
|
179
188
|
end
|
180
189
|
|
181
|
-
public
|
182
|
-
|
183
190
|
# Version string matching regexes
|
184
|
-
REGEX_NUMERIC =
|
185
|
-
REGEX_PRE =
|
186
|
-
REGEX_BUILD =
|
187
|
-
REGEX_FULL = REGEX_NUMERIC + REGEX_PRE + REGEX_BUILD
|
191
|
+
REGEX_NUMERIC = '(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)'.freeze # Major . Minor . Patch
|
192
|
+
REGEX_PRE = '(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?'.freeze # Prerelease
|
193
|
+
REGEX_BUILD = '(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?'.freeze # Build
|
194
|
+
REGEX_FULL = REGEX_NUMERIC + REGEX_PRE + REGEX_BUILD.freeze
|
195
|
+
REGEX_FULL_RX = /\A#{REGEX_FULL}\Z/.freeze
|
188
196
|
|
189
197
|
# The lowest precedence Version possible
|
190
|
-
MIN = self.new(0, 0, 0, []).freeze
|
198
|
+
MIN = self.new(0, 0, 0, [].freeze).freeze
|
191
199
|
|
192
200
|
# The highest precedence Version possible
|
193
|
-
MAX = self.new(
|
201
|
+
MAX = self.new(Float::INFINITY, 0, 0).freeze
|
194
202
|
end
|
195
203
|
end
|
@@ -1,422 +1,758 @@
|
|
1
1
|
require 'semantic_puppet'
|
2
2
|
|
3
3
|
module SemanticPuppet
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
4
|
+
# A Semantic Version Range.
|
5
|
+
#
|
6
|
+
# @see https://github.com/npm/node-semver for full specification
|
7
|
+
# @api public
|
8
|
+
class VersionRange
|
9
|
+
UPPER_X = 'X'.freeze
|
10
|
+
LOWER_X = 'x'.freeze
|
11
|
+
STAR = '*'.freeze
|
12
|
+
|
13
|
+
NR = '0|[1-9][0-9]*'.freeze
|
14
|
+
XR = '(x|X|\*|' + NR + ')'.freeze
|
15
|
+
XR_NC = '(?:x|X|\*|' + NR + ')'.freeze
|
16
|
+
|
17
|
+
PART = '(?:[0-9A-Za-z-]+)'.freeze
|
18
|
+
PARTS = PART + '(?:\.' + PART + ')*'.freeze
|
19
|
+
QUALIFIER = '(?:-(' + PARTS + '))?(?:\+(' + PARTS + '))?'.freeze
|
20
|
+
QUALIFIER_NC = '(?:-' + PARTS + ')?(?:\+' + PARTS + ')?'.freeze
|
21
|
+
|
22
|
+
PARTIAL = XR_NC + '(?:\.' + XR_NC + '(?:\.' + XR_NC + QUALIFIER_NC + ')?)?'.freeze
|
23
|
+
|
24
|
+
# The ~> isn't in the spec but allowed
|
25
|
+
SIMPLE = '([<>=~^]|<=|>=|~>|~=)?(' + PARTIAL + ')'.freeze
|
26
|
+
SIMPLE_EXPR = /\A#{SIMPLE}\z/.freeze
|
27
|
+
|
28
|
+
SIMPLE_WITH_EXTRA_WS = '([<>=~^]|<=|>=)?\s+(' + PARTIAL + ')'.freeze
|
29
|
+
SIMPLE_WITH_EXTRA_WS_EXPR = /\A#{SIMPLE_WITH_EXTRA_WS}\z/.freeze
|
30
|
+
|
31
|
+
HYPHEN = '(' + PARTIAL + ')\s+-\s+(' + PARTIAL + ')'.freeze
|
32
|
+
HYPHEN_EXPR = /\A#{HYPHEN}\z/.freeze
|
33
|
+
|
34
|
+
PARTIAL_EXPR = /\A#{XR}(?:\.#{XR}(?:\.#{XR}#{QUALIFIER})?)?\z/.freeze
|
35
|
+
|
36
|
+
LOGICAL_OR = /\s*\|\|\s*/.freeze
|
37
|
+
RANGE_SPLIT = /\s+/.freeze
|
38
|
+
|
39
|
+
# Parses a version range string into a comparable {VersionRange} instance.
|
40
|
+
#
|
41
|
+
# Currently parsed version range string may take any of the following:
|
42
|
+
# forms:
|
43
|
+
#
|
44
|
+
# * Regular Semantic Version strings
|
45
|
+
# * ex. `"1.0.0"`, `"1.2.3-pre"`
|
46
|
+
# * Partial Semantic Version strings
|
47
|
+
# * ex. `"1.0.x"`, `"1"`, `"2.X"`, `"3.*"`,
|
48
|
+
# * Inequalities
|
49
|
+
# * ex. `"> 1.0.0"`, `"<3.2.0"`, `">=4.0.0"`
|
50
|
+
# * Approximate Caret Versions
|
51
|
+
# * ex. `"^1"`, `"^3.2"`, `"^4.1.0"`
|
52
|
+
# * Approximate Tilde Versions
|
53
|
+
# * ex. `"~1.0.0"`, `"~ 3.2.0"`, `"~4.0.0"`
|
54
|
+
# * Inclusive Ranges
|
55
|
+
# * ex. `"1.0.0 - 1.3.9"`
|
56
|
+
# * Range Intersections
|
57
|
+
# * ex. `">1.0.0 <=2.3.0"`
|
58
|
+
# * Combined ranges
|
59
|
+
# * ex, `">=1.0.0 <2.3.0 || >=2.5.0 <3.0.0"`
|
60
|
+
#
|
61
|
+
# @param range_string [String] the version range string to parse
|
62
|
+
# @param strict_semver [Boolean] `false` if pre-releases should be included even when not explicitly appointed
|
63
|
+
# @return [VersionRange] a new {VersionRange} instance
|
64
|
+
# @api public
|
65
|
+
def self.parse(range_string, strict_semver = true)
|
66
|
+
# Remove extra whitespace after operators. Such whitespace should not cause a split
|
67
|
+
range_set = range_string.gsub(/([><=~^])(?:\s+|\s*v)/, '\1')
|
68
|
+
ranges = range_set.split(LOGICAL_OR)
|
69
|
+
return ALL_RANGE if ranges.empty?
|
70
|
+
|
71
|
+
new(ranges.map do |range|
|
72
|
+
if range =~ HYPHEN_EXPR
|
73
|
+
MinMaxRange.create(GtEqRange.new(parse_version($1)), LtEqRange.new(parse_version($2)))
|
44
74
|
else
|
45
|
-
|
75
|
+
# Split on whitespace
|
76
|
+
simples = range.split(RANGE_SPLIT).map do |simple|
|
77
|
+
match_data = SIMPLE_EXPR.match(simple)
|
78
|
+
raise ArgumentError, _("Unparsable version range: \"%{range}\"") % { range: range_string } unless match_data
|
79
|
+
operand = match_data[2]
|
80
|
+
|
81
|
+
# Case based on operator
|
82
|
+
case match_data[1]
|
83
|
+
when '~', '~>', '~='
|
84
|
+
parse_tilde(operand)
|
85
|
+
when '^'
|
86
|
+
parse_caret(operand)
|
87
|
+
when '>'
|
88
|
+
parse_gt_version(operand)
|
89
|
+
when '>='
|
90
|
+
GtEqRange.new(parse_version(operand))
|
91
|
+
when '<'
|
92
|
+
LtRange.new(parse_version(operand))
|
93
|
+
when '<='
|
94
|
+
parse_lteq_version(operand)
|
95
|
+
when '='
|
96
|
+
parse_xrange(operand)
|
97
|
+
else
|
98
|
+
parse_xrange(operand)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
simples.size == 1 ? simples[0] : MinMaxRange.create(*simples)
|
46
102
|
end
|
103
|
+
end.uniq, range_string, strict_semver).freeze
|
104
|
+
end
|
47
105
|
|
48
|
-
|
49
|
-
|
50
|
-
|
106
|
+
def self.parse_partial(expr)
|
107
|
+
match_data = PARTIAL_EXPR.match(expr)
|
108
|
+
raise ArgumentError, _("Unparsable version range: \"%{expr}\"") % { expr: expr } unless match_data
|
109
|
+
match_data
|
110
|
+
end
|
111
|
+
private_class_method :parse_partial
|
51
112
|
|
52
|
-
|
113
|
+
def self.parse_caret(expr)
|
114
|
+
match_data = parse_partial(expr)
|
115
|
+
major = digit(match_data[1])
|
116
|
+
major == 0 ? allow_patch_updates(major, match_data) : allow_minor_updates(major, match_data)
|
117
|
+
end
|
118
|
+
private_class_method :parse_caret
|
53
119
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
expr.split(/[ ]+/).map { |x| parse(x) }.inject { |a,b| a & b }
|
60
|
-
end
|
120
|
+
def self.parse_tilde(expr)
|
121
|
+
match_data = parse_partial(expr)
|
122
|
+
allow_patch_updates(digit(match_data[1]), match_data)
|
123
|
+
end
|
124
|
+
private_class_method :parse_tilde
|
61
125
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
# @param expr [String] a "loose" version expression
|
68
|
-
# @return [VersionRange] a version range representing `expr`
|
69
|
-
def parse_loose_version_expression(expr)
|
70
|
-
start, finish = process_loose_expr(expr)
|
126
|
+
def self.parse_xrange(expr)
|
127
|
+
match_data = parse_partial(expr)
|
128
|
+
allow_patch_updates(digit(match_data[1]), match_data, false)
|
129
|
+
end
|
130
|
+
private_class_method :parse_xrange
|
71
131
|
|
72
|
-
|
73
|
-
|
74
|
-
end
|
132
|
+
def self.allow_patch_updates(major, match_data, tilde_or_caret = true)
|
133
|
+
return AllRange::SINGLETON unless major
|
75
134
|
|
76
|
-
|
77
|
-
|
78
|
-
finish = finish.send(:first_prerelease)
|
79
|
-
end
|
135
|
+
minor = digit(match_data[2])
|
136
|
+
return MinMaxRange.new(GtEqRange.new(Version.new(major, 0, 0)), LtRange.new(Version.new(major + 1, 0, 0))) unless minor
|
80
137
|
|
81
|
-
|
82
|
-
|
138
|
+
patch = digit(match_data[3])
|
139
|
+
return MinMaxRange.new(GtEqRange.new(Version.new(major, minor, 0)), LtRange.new(Version.new(major, minor + 1, 0))) unless patch
|
83
140
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
when '<'
|
108
|
-
parse_lt_expression(expr)
|
109
|
-
when '<='
|
110
|
-
parse_lte_expression(expr)
|
141
|
+
version = Version.new(major, minor, patch, Version.parse_prerelease(match_data[4]), Version.parse_build(match_data[5]))
|
142
|
+
return EqRange.new(version) unless tilde_or_caret
|
143
|
+
|
144
|
+
MinMaxRange.new(GtEqRange.new(version), LtRange.new(Version.new(major, minor + 1, 0)))
|
145
|
+
end
|
146
|
+
private_class_method :allow_patch_updates
|
147
|
+
|
148
|
+
def self.allow_minor_updates(major, match_data)
|
149
|
+
return AllRange.SINGLETON unless major
|
150
|
+
minor = digit(match_data[2])
|
151
|
+
if minor
|
152
|
+
patch = digit(match_data[3])
|
153
|
+
if patch.nil?
|
154
|
+
MinMaxRange.new(GtEqRange.new(Version.new(major, minor, 0)), LtRange.new(Version.new(major + 1, 0, 0)))
|
155
|
+
else
|
156
|
+
if match_data[4].nil?
|
157
|
+
MinMaxRange.new(GtEqRange.new(Version.new(major, minor, patch)), LtRange.new(Version.new(major + 1, 0, 0)))
|
158
|
+
else
|
159
|
+
MinMaxRange.new(
|
160
|
+
GtEqRange.new(
|
161
|
+
Version.new(major, minor, patch, Version.parse_prerelease(match_data[4]), Version.parse_build(match_data[5]))),
|
162
|
+
LtRange.new(Version.new(major + 1, 0, 0)))
|
163
|
+
end
|
111
164
|
end
|
165
|
+
else
|
166
|
+
MinMaxRange.new(GtEqRange.new(Version.new(major, 0, 0)), LtRange.new(Version.new(major + 1, 0, 0)))
|
112
167
|
end
|
168
|
+
end
|
169
|
+
private_class_method :allow_minor_updates
|
113
170
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
171
|
+
def self.digit(str)
|
172
|
+
(str.nil? || UPPER_X == str || LOWER_X == str || STAR == str) ? nil : str.to_i
|
173
|
+
end
|
174
|
+
private_class_method :digit
|
175
|
+
|
176
|
+
def self.parse_version(expr)
|
177
|
+
match_data = parse_partial(expr)
|
178
|
+
major = digit(match_data[1]) || 0
|
179
|
+
minor = digit(match_data[2]) || 0
|
180
|
+
patch = digit(match_data[3]) || 0
|
181
|
+
Version.new(major, minor, patch, Version.parse_prerelease(match_data[4]), Version.parse_build(match_data[5]))
|
182
|
+
end
|
183
|
+
private_class_method :parse_version
|
184
|
+
|
185
|
+
def self.parse_gt_version(expr)
|
186
|
+
match_data = parse_partial(expr)
|
187
|
+
major = digit(match_data[1])
|
188
|
+
return LtRange::MATCH_NOTHING unless major
|
189
|
+
minor = digit(match_data[2])
|
190
|
+
return GtEqRange.new(Version.new(major + 1, 0, 0)) unless minor
|
191
|
+
patch = digit(match_data[3])
|
192
|
+
return GtEqRange.new(Version.new(major, minor + 1, 0)) unless patch
|
193
|
+
return GtRange.new(Version.new(major, minor, patch, Version.parse_prerelease(match_data[4]), Version.parse_build(match_data[5])))
|
194
|
+
end
|
195
|
+
private_class_method :parse_gt_version
|
196
|
+
|
197
|
+
def self.parse_lteq_version(expr)
|
198
|
+
match_data = parse_partial(expr)
|
199
|
+
major = digit(match_data[1])
|
200
|
+
return AllRange.SINGLETON unless major
|
201
|
+
minor = digit(match_data[2])
|
202
|
+
return LtRange.new(Version.new(major + 1, 0, 0)) unless minor
|
203
|
+
patch = digit(match_data[3])
|
204
|
+
return LtRange.new(Version.new(major, minor + 1, 0)) unless patch
|
205
|
+
return LtEqRange.new(Version.new(major, minor, patch, Version.parse_prerelease(match_data[4]), Version.parse_build(match_data[5])))
|
206
|
+
end
|
207
|
+
private_class_method :parse_lteq_version
|
208
|
+
|
209
|
+
# Provides read access to the ranges. For internal use only
|
210
|
+
# @api private
|
211
|
+
attr_reader :ranges
|
212
|
+
|
213
|
+
# Creates a new version range
|
214
|
+
# @overload initialize(from, to, exclude_end = false)
|
215
|
+
# Creates a new instance using ruby `Range` semantics
|
216
|
+
# @param begin [String,Version] the version denoting the start of the range (always inclusive)
|
217
|
+
# @param end [String,Version] the version denoting the end of the range
|
218
|
+
# @param exclude_end [Boolean] `true` if the `end` version should be excluded from the range
|
219
|
+
# @overload initialize(ranges, string)
|
220
|
+
# Creates a new instance based on parsed content. For internal use only
|
221
|
+
# @param ranges [Array<AbstractRange>] the ranges to include in this range
|
222
|
+
# @param string [String] the original string representation that was parsed to produce the ranges
|
223
|
+
# @param strict_semver [Boolean] `false` if pre-releases should be included even when not explicitly appointed
|
224
|
+
#
|
225
|
+
# @api private
|
226
|
+
def initialize(ranges, string, exclude_end = nil)
|
227
|
+
if ranges.is_a?(Array)
|
228
|
+
@strict_semver = exclude_end.nil? ? true : exclude_end
|
229
|
+
else
|
230
|
+
lb = GtEqRange.new(ranges)
|
231
|
+
if exclude_end
|
232
|
+
ub = LtRange.new(string)
|
233
|
+
string = ">=#{string} <#{ranges}"
|
122
234
|
else
|
123
|
-
|
235
|
+
ub = LtEqRange.new(string)
|
236
|
+
string = "#{string} - #{ranges}"
|
124
237
|
end
|
238
|
+
ranges = [MinMaxRange.create(lb, ub)]
|
239
|
+
@strict_semver = true
|
240
|
+
end
|
241
|
+
ranges.compact!
|
242
|
+
|
243
|
+
merge_happened = true
|
244
|
+
while ranges.size > 1 && merge_happened
|
245
|
+
# merge ranges if possible
|
246
|
+
merge_happened = false
|
247
|
+
result = []
|
248
|
+
until ranges.empty?
|
249
|
+
unmerged = []
|
250
|
+
x = ranges.pop
|
251
|
+
result << ranges.reduce(x) do |memo, y|
|
252
|
+
merged = memo.merge(y)
|
253
|
+
if merged.nil?
|
254
|
+
unmerged << y
|
255
|
+
else
|
256
|
+
merge_happened = true
|
257
|
+
memo = merged
|
258
|
+
end
|
259
|
+
memo
|
260
|
+
end
|
261
|
+
ranges = unmerged
|
262
|
+
end
|
263
|
+
ranges = result.reverse!
|
264
|
+
end
|
265
|
+
|
266
|
+
ranges = [LtRange::MATCH_NOTHING] if ranges.empty?
|
267
|
+
@ranges = ranges
|
268
|
+
@string = string.nil? ? ranges.join(' || ') : string
|
269
|
+
end
|
270
|
+
|
271
|
+
def eql?(range)
|
272
|
+
range.is_a?(VersionRange) && @ranges.eql?(range.ranges)
|
273
|
+
end
|
274
|
+
alias == eql?
|
275
|
+
|
276
|
+
def hash
|
277
|
+
@ranges.hash
|
278
|
+
end
|
125
279
|
|
126
|
-
|
280
|
+
# Returns the version that denotes the beginning of this range.
|
281
|
+
#
|
282
|
+
# Since this really is an OR between disparate ranges, it may have multiple beginnings. This method
|
283
|
+
# returns `nil` if that is the case.
|
284
|
+
#
|
285
|
+
# @return [Version] the beginning of the range, or `nil` if there are multiple beginnings
|
286
|
+
# @api public
|
287
|
+
def begin
|
288
|
+
@ranges.size == 1 ? @ranges[0].begin : nil
|
289
|
+
end
|
290
|
+
|
291
|
+
# Returns the version that denotes the end of this range.
|
292
|
+
#
|
293
|
+
# Since this really is an OR between disparate ranges, it may have multiple ends. This method
|
294
|
+
# returns `nil` if that is the case.
|
295
|
+
#
|
296
|
+
# @return [Version] the end of the range, or `nil` if there are multiple ends
|
297
|
+
# @api public
|
298
|
+
def end
|
299
|
+
@ranges.size == 1 ? @ranges[0].end : nil
|
300
|
+
end
|
301
|
+
|
302
|
+
# Returns `true` if the beginning is excluded from the range.
|
303
|
+
#
|
304
|
+
# Since this really is an OR between disparate ranges, it may have multiple beginnings. This method
|
305
|
+
# returns `nil` if that is the case.
|
306
|
+
#
|
307
|
+
# @return [Boolean] `true` if the beginning is excluded from the range, `false` if included, or `nil` if there are multiple beginnings
|
308
|
+
# @api public
|
309
|
+
def exclude_begin?
|
310
|
+
@ranges.size == 1 ? @ranges[0].exclude_begin? : nil
|
311
|
+
end
|
312
|
+
|
313
|
+
# Returns `true` if the end is excluded from the range.
|
314
|
+
#
|
315
|
+
# Since this really is an OR between disparate ranges, it may have multiple ends. This method
|
316
|
+
# returns `nil` if that is the case.
|
317
|
+
#
|
318
|
+
# @return [Boolean] `true` if the end is excluded from the range, `false` if not, or `nil` if there are multiple ends
|
319
|
+
# @api public
|
320
|
+
def exclude_end?
|
321
|
+
@ranges.size == 1 ? @ranges[0].exclude_end? : nil
|
322
|
+
end
|
323
|
+
|
324
|
+
# @return [Boolean] `true` if the given version is included in the range
|
325
|
+
# @api public
|
326
|
+
def include?(version)
|
327
|
+
if @strict_semver
|
328
|
+
@ranges.any? { |range| range.include?(version) && (version.stable? || range.test_prerelease?(version)) }
|
329
|
+
else
|
330
|
+
@ranges.any? { |range| range.include?(version) || !version.stable? && range.stable? && range.include?(version.to_stable) }
|
127
331
|
end
|
332
|
+
end
|
333
|
+
alias member? include?
|
334
|
+
alias cover? include?
|
335
|
+
alias === include?
|
128
336
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
337
|
+
# Computes the intersection of a pair of ranges. If the ranges have no
|
338
|
+
# useful intersection, an empty range is returned.
|
339
|
+
#
|
340
|
+
# @param other [VersionRange] the range to intersect with
|
341
|
+
# @return [VersionRange] the common subset
|
342
|
+
# @api public
|
343
|
+
def intersection(other)
|
344
|
+
raise ArgumentError, _("value must be a %{type}") % { :type => self.class.name } unless other.is_a?(VersionRange)
|
345
|
+
result = @ranges.map { |range| other.ranges.map { |o_range| range.intersection(o_range) } }.flatten
|
346
|
+
result.compact!
|
347
|
+
result.uniq!
|
348
|
+
result.empty? ? EMPTY_RANGE : VersionRange.new(result, nil)
|
349
|
+
end
|
350
|
+
alias :& :intersection
|
351
|
+
|
352
|
+
# Returns a string representation of this range. This will be the string that was used
|
353
|
+
# when the range was parsed.
|
354
|
+
#
|
355
|
+
# @return [String] a range expression representing this VersionRange
|
356
|
+
# @api public
|
357
|
+
def to_s
|
358
|
+
@string
|
359
|
+
end
|
360
|
+
|
361
|
+
# Returns a canonical string representation of this range, assembled from the internal
|
362
|
+
# matchers.
|
363
|
+
#
|
364
|
+
# @return [String] a range expression representing this VersionRange
|
365
|
+
# @api public
|
366
|
+
def inspect
|
367
|
+
@ranges.join(' || ')
|
368
|
+
end
|
141
369
|
|
142
|
-
|
370
|
+
# @api private
|
371
|
+
class AbstractRange
|
372
|
+
def include?(_)
|
373
|
+
true
|
143
374
|
end
|
144
375
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
# @return [VersionRange] a range covering all versions less than the
|
149
|
-
# given `expr`
|
150
|
-
def parse_lt_expression(expr)
|
151
|
-
if expr =~ /^[^+]*-/
|
152
|
-
finish = Version.parse(expr)
|
153
|
-
else
|
154
|
-
finish = process_loose_expr(expr).first.send(:first_prerelease)
|
155
|
-
end
|
376
|
+
def begin
|
377
|
+
Version::MIN
|
378
|
+
end
|
156
379
|
|
157
|
-
|
380
|
+
def end
|
381
|
+
Version::MAX
|
158
382
|
end
|
159
383
|
|
160
|
-
|
161
|
-
|
162
|
-
#
|
163
|
-
# @param expr [String] the version to be less than or equal to
|
164
|
-
# @return [VersionRange] a range covering all versions less than or equal
|
165
|
-
# to the given `expr`
|
166
|
-
def parse_lte_expression(expr)
|
167
|
-
if expr =~ /^[^+]*-/
|
168
|
-
finish = Version.parse(expr)
|
169
|
-
self.new(SemanticPuppet::Version::MIN, finish)
|
170
|
-
else
|
171
|
-
finish = process_loose_expr(expr).last.send(:first_prerelease)
|
172
|
-
self.new(SemanticPuppet::Version::MIN, finish, true)
|
173
|
-
end
|
384
|
+
def exclude_begin?
|
385
|
+
false
|
174
386
|
end
|
175
387
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
#
|
180
|
-
# ~[Version]
|
181
|
-
#
|
182
|
-
# The general semantics of these expressions are that the given version
|
183
|
-
# forms a lower bound for the range, and the upper bound is either the
|
184
|
-
# next version number increment (at whatever precision the expression
|
185
|
-
# provides) or the next stable version (in the case of a prerelease
|
186
|
-
# version).
|
187
|
-
#
|
188
|
-
# @example "Reasonably close" major version
|
189
|
-
# "~1" # => (>=1.0.0 <2.0.0)
|
190
|
-
# @example "Reasonably close" minor version
|
191
|
-
# "~1.2" # => (>=1.2.0 <1.3.0)
|
192
|
-
# @example "Reasonably close" patch version
|
193
|
-
# "~1.2.3" # => (>=1.2.3 <1.3.0)
|
194
|
-
# @example "Reasonably close" prerelease version
|
195
|
-
# "~1.2.3-alpha" # => (>=1.2.3-alpha <1.2.4)
|
196
|
-
#
|
197
|
-
# @param expr [String] a "loose" expression to build the range around
|
198
|
-
# @return [VersionRange] a "reasonably close" version range
|
199
|
-
def parse_reasonably_close_expression(expr)
|
200
|
-
parsed, succ = process_loose_expr(expr)
|
388
|
+
def exclude_end?
|
389
|
+
false
|
390
|
+
end
|
201
391
|
|
202
|
-
|
203
|
-
|
392
|
+
def eql?(other)
|
393
|
+
other.class.eql?(self.class)
|
394
|
+
end
|
204
395
|
|
205
|
-
|
206
|
-
|
396
|
+
def ==(other)
|
397
|
+
eql?(other)
|
398
|
+
end
|
207
399
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
400
|
+
def lower_bound?
|
401
|
+
false
|
402
|
+
end
|
403
|
+
|
404
|
+
def upper_bound?
|
405
|
+
false
|
213
406
|
end
|
214
407
|
|
215
|
-
#
|
216
|
-
# version numbers) and creates a range that covers all versions between
|
217
|
-
# them. These take the form:
|
408
|
+
# Merge two ranges so that the result matches the intersection of all matching versions.
|
218
409
|
#
|
219
|
-
#
|
410
|
+
# @param range [AbastractRange] the range to intersect with
|
411
|
+
# @return [AbastractRange,nil] the intersection between the ranges
|
220
412
|
#
|
221
|
-
# @
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
413
|
+
# @api private
|
414
|
+
def intersection(range)
|
415
|
+
cmp = self.begin <=> range.end
|
416
|
+
if cmp > 0
|
417
|
+
nil
|
418
|
+
elsif cmp == 0
|
419
|
+
exclude_begin? || range.exclude_end? ? nil : EqRange.new(self.begin)
|
420
|
+
else
|
421
|
+
cmp = range.begin <=> self.end
|
422
|
+
if cmp > 0
|
423
|
+
nil
|
424
|
+
elsif cmp == 0
|
425
|
+
range.exclude_begin? || exclude_end? ? nil : EqRange.new(range.begin)
|
426
|
+
else
|
427
|
+
cmp = self.begin <=> range.begin
|
428
|
+
min = if cmp < 0
|
429
|
+
range
|
430
|
+
elsif cmp > 0
|
431
|
+
self
|
432
|
+
else
|
433
|
+
self.exclude_begin? ? self : range
|
434
|
+
end
|
435
|
+
|
436
|
+
cmp = self.end <=> range.end
|
437
|
+
max = if cmp > 0
|
438
|
+
range
|
439
|
+
elsif cmp < 0
|
440
|
+
self
|
441
|
+
else
|
442
|
+
self.exclude_end? ? self : range
|
443
|
+
end
|
444
|
+
|
445
|
+
if !max.upper_bound?
|
446
|
+
min
|
447
|
+
elsif !min.lower_bound?
|
448
|
+
max
|
449
|
+
else
|
450
|
+
MinMaxRange.new(min, max)
|
451
|
+
end
|
452
|
+
end
|
232
453
|
end
|
233
|
-
|
234
|
-
self.new(start, finish, exclude)
|
235
454
|
end
|
236
455
|
|
237
|
-
#
|
238
|
-
#
|
239
|
-
#
|
240
|
-
# * [Major].[Minor].[Patch]-[Prerelease]
|
241
|
-
# * [Major].[Minor].[Patch]
|
242
|
-
# * [Major].[Minor]
|
243
|
-
# * [Major]
|
456
|
+
# Merge two ranges so that the result matches the sum of all matching versions. A merge
|
457
|
+
# is only possible when the ranges are either adjacent or have an overlap.
|
244
458
|
#
|
245
|
-
#
|
246
|
-
#
|
459
|
+
# @param other [AbastractRange] the range to merge with
|
460
|
+
# @return [AbastractRange,nil] the result of the merge
|
247
461
|
#
|
248
|
-
#
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
462
|
+
# @api private
|
463
|
+
def merge(other)
|
464
|
+
if include?(other.begin) || other.include?(self.begin)
|
465
|
+
cmp = self.begin <=> other.begin
|
466
|
+
if cmp < 0
|
467
|
+
min = self.begin
|
468
|
+
excl_begin = exclude_begin?
|
469
|
+
elsif cmp > 0
|
470
|
+
min = other.begin
|
471
|
+
excl_begin = other.exclude_begin?
|
472
|
+
else
|
473
|
+
min = self.begin
|
474
|
+
excl_begin = exclude_begin? && other.exclude_begin?
|
475
|
+
end
|
476
|
+
|
477
|
+
cmp = self.end <=> other.end
|
478
|
+
if cmp > 0
|
479
|
+
max = self.end
|
480
|
+
excl_end = self.exclude_end?
|
481
|
+
elsif cmp < 0
|
482
|
+
max = other.end
|
483
|
+
excl_end = other.exclude_end?
|
484
|
+
else
|
485
|
+
max = self.end
|
486
|
+
excl_end = exclude_end && other.exclude_end?
|
487
|
+
end
|
488
|
+
|
489
|
+
MinMaxRange.create(excl_begin ? GtRange.new(min) : GtEqRange.new(min), excl_end ? LtRange.new(max) : LtEqRange.new(max))
|
490
|
+
elsif exclude_end? && !other.exclude_begin? && self.end == other.begin
|
491
|
+
# Adjacent, self before other
|
492
|
+
from_to(self, other)
|
493
|
+
elsif other.exclude_end? && !exclude_begin? && other.end == self.begin
|
494
|
+
# Adjacent, other before self
|
495
|
+
from_to(other, self)
|
496
|
+
elsif !exclude_end? && !other.exclude_begin? && self.end.next(:patch) == other.begin
|
497
|
+
# Adjacent, self before other
|
498
|
+
from_to(self, other)
|
499
|
+
elsif !other.exclude_end? && !exclude_begin? && other.end.next(:patch) == self.begin
|
500
|
+
# Adjacent, other before self
|
501
|
+
from_to(other, self)
|
502
|
+
else
|
503
|
+
# No overlap
|
504
|
+
nil
|
266
505
|
end
|
506
|
+
end
|
267
507
|
|
268
|
-
|
508
|
+
# Checks if this matcher accepts a prerelease with the same major, minor, patch triple as the given version. Only matchers
|
509
|
+
# where this has been explicitly stated will respond `true` to this method
|
510
|
+
#
|
511
|
+
# @return [Boolean] `true` if this matcher accepts a prerelase with the tuple from the given version
|
512
|
+
def test_prerelease?(_)
|
513
|
+
false
|
514
|
+
end
|
269
515
|
|
270
|
-
|
271
|
-
|
272
|
-
|
516
|
+
def stable?
|
517
|
+
false
|
518
|
+
end
|
519
|
+
|
520
|
+
private
|
273
521
|
|
274
|
-
|
522
|
+
def from_to(a, b)
|
523
|
+
MinMaxRange.create(a.exclude_begin? ? GtRange.new(a.begin) : GtEqRange.new(a.begin), b.exclude_end? ? LtRange.new(b.end) : LtEqRange.new(b.end))
|
275
524
|
end
|
276
525
|
end
|
277
526
|
|
278
|
-
#
|
279
|
-
|
280
|
-
|
281
|
-
# @param other [VersionRange] the range to intersect with
|
282
|
-
# @return [VersionRange] the common subset
|
283
|
-
def intersection(other)
|
284
|
-
raise NOT_A_VERSION_RANGE unless other.kind_of?(VersionRange)
|
527
|
+
# @api private
|
528
|
+
class AllRange < AbstractRange
|
529
|
+
SINGLETON = AllRange.new
|
285
530
|
|
286
|
-
|
287
|
-
|
531
|
+
def intersection(range)
|
532
|
+
range
|
288
533
|
end
|
289
534
|
|
290
|
-
|
291
|
-
|
535
|
+
def merge(range)
|
536
|
+
self
|
292
537
|
end
|
293
538
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
alias :& :intersection
|
539
|
+
def test_prerelease?(_)
|
540
|
+
true
|
541
|
+
end
|
298
542
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
inclusive = exclude_end? ? '' : '='
|
306
|
-
|
307
|
-
case
|
308
|
-
when EMPTY_RANGE == self
|
309
|
-
"<0.0.0"
|
310
|
-
when exact_version?, patch_version?
|
311
|
-
"#{ start }"
|
312
|
-
when minor_version?
|
313
|
-
"#{ start }".sub(/.0$/, '.x')
|
314
|
-
when major_version?
|
315
|
-
"#{ start }".sub(/.0.0$/, '.x')
|
316
|
-
when open_end? && start.to_s =~ /-.*[.]0$/
|
317
|
-
">#{ start }".sub(/.0$/, '')
|
318
|
-
when open_end?
|
319
|
-
">=#{ start }"
|
320
|
-
when open_begin?
|
321
|
-
"<#{ inclusive }#{ finish }"
|
322
|
-
else
|
323
|
-
">=#{ start } <#{ inclusive }#{ finish }"
|
543
|
+
def stable?
|
544
|
+
true
|
545
|
+
end
|
546
|
+
|
547
|
+
def to_s
|
548
|
+
'*'
|
324
549
|
end
|
325
550
|
end
|
326
|
-
alias :inspect :to_s
|
327
551
|
|
328
|
-
private
|
552
|
+
# @api private
|
553
|
+
class MinMaxRange < AbstractRange
|
554
|
+
attr_reader :min, :max
|
329
555
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
# @param other [VersionRange] the range to compare against
|
334
|
-
# @return [Boolean] true if the endpoint for this range is less than or
|
335
|
-
# equal to the endpoint of the `other` range.
|
336
|
-
def ends_before?(other)
|
337
|
-
self.end < other.end || (self.end == other.end && self.exclude_end?)
|
338
|
-
end
|
556
|
+
def self.create(*ranges)
|
557
|
+
ranges.reduce { |memo, range| memo.intersection(range) }
|
558
|
+
end
|
339
559
|
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
end
|
560
|
+
def initialize(min, max)
|
561
|
+
@min = min.is_a?(MinMaxRange) ? min.min : min
|
562
|
+
@max = max.is_a?(MinMaxRange) ? max.max : max
|
563
|
+
end
|
345
564
|
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
self.begin == SemanticPuppet::Version::MIN
|
350
|
-
end
|
565
|
+
def begin
|
566
|
+
@min.begin
|
567
|
+
end
|
351
568
|
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
569
|
+
def end
|
570
|
+
@max.end
|
571
|
+
end
|
572
|
+
|
573
|
+
def exclude_begin?
|
574
|
+
@min.exclude_begin?
|
575
|
+
end
|
576
|
+
|
577
|
+
def exclude_end?
|
578
|
+
@max.exclude_end?
|
579
|
+
end
|
580
|
+
|
581
|
+
def eql?(other)
|
582
|
+
super && @min.eql?(other.min) && @max.eql?(other.max)
|
583
|
+
end
|
584
|
+
|
585
|
+
def hash
|
586
|
+
@min.hash ^ @max.hash
|
587
|
+
end
|
588
|
+
|
589
|
+
def include?(version)
|
590
|
+
@min.include?(version) && @max.include?(version)
|
591
|
+
end
|
592
|
+
|
593
|
+
def lower_bound?
|
594
|
+
@min.lower_bound?
|
595
|
+
end
|
596
|
+
|
597
|
+
def upper_bound?
|
598
|
+
@max.upper_bound?
|
599
|
+
end
|
600
|
+
|
601
|
+
def test_prerelease?(version)
|
602
|
+
@min.test_prerelease?(version) || @max.test_prerelease?(version)
|
603
|
+
end
|
604
|
+
|
605
|
+
def stable?
|
606
|
+
@min.stable? && @max.stable?
|
607
|
+
end
|
358
608
|
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
start, finish = self.begin, self.end
|
364
|
-
|
365
|
-
exclude_end? &&
|
366
|
-
start.major.next == finish.major &&
|
367
|
-
same_minor? && start.minor == 0 &&
|
368
|
-
same_patch? && start.patch == 0 &&
|
369
|
-
[start.prerelease, finish.prerelease] == ['', '']
|
609
|
+
def to_s
|
610
|
+
"#{@min} #{@max}"
|
611
|
+
end
|
612
|
+
alias inspect to_s
|
370
613
|
end
|
371
614
|
|
372
|
-
#
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
615
|
+
# @api private
|
616
|
+
class ComparatorRange < AbstractRange
|
617
|
+
attr_reader :version
|
618
|
+
|
619
|
+
def initialize(version)
|
620
|
+
@version = version
|
621
|
+
end
|
622
|
+
|
623
|
+
def eql?(other)
|
624
|
+
super && @version.eql?(other.version)
|
625
|
+
end
|
626
|
+
|
627
|
+
def hash
|
628
|
+
@class.hash ^ @version.hash
|
629
|
+
end
|
630
|
+
|
631
|
+
# Checks if this matcher accepts a prerelease with the same major, minor, patch triple as the given version
|
632
|
+
def test_prerelease?(version)
|
633
|
+
!@version.stable? && @version.major == version.major && @version.minor == version.minor && @version.patch == version.patch
|
634
|
+
end
|
635
|
+
|
636
|
+
def stable?
|
637
|
+
@version.stable?
|
638
|
+
end
|
383
639
|
end
|
384
640
|
|
385
|
-
#
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
641
|
+
# @api private
|
642
|
+
class GtRange < ComparatorRange
|
643
|
+
def include?(version)
|
644
|
+
version > @version
|
645
|
+
end
|
646
|
+
|
647
|
+
def exclude_begin?
|
648
|
+
true
|
649
|
+
end
|
650
|
+
|
651
|
+
def begin
|
652
|
+
@version
|
653
|
+
end
|
654
|
+
|
655
|
+
def lower_bound?
|
656
|
+
true
|
657
|
+
end
|
658
|
+
|
659
|
+
def to_s
|
660
|
+
">#{@version}"
|
661
|
+
end
|
396
662
|
end
|
397
663
|
|
398
|
-
# @
|
399
|
-
|
400
|
-
|
664
|
+
# @api private
|
665
|
+
class GtEqRange < ComparatorRange
|
666
|
+
def include?(version)
|
667
|
+
version >= @version
|
668
|
+
end
|
669
|
+
|
670
|
+
def begin
|
671
|
+
@version
|
672
|
+
end
|
673
|
+
|
674
|
+
def lower_bound?
|
675
|
+
@version != Version::MIN
|
676
|
+
end
|
677
|
+
|
678
|
+
def to_s
|
679
|
+
">=#{@version}"
|
680
|
+
end
|
401
681
|
end
|
402
682
|
|
403
|
-
# @
|
404
|
-
|
405
|
-
|
683
|
+
# @api private
|
684
|
+
class LtRange < ComparatorRange
|
685
|
+
MATCH_NOTHING = LtRange.new(Version::MIN)
|
686
|
+
|
687
|
+
def include?(version)
|
688
|
+
version < @version
|
689
|
+
end
|
690
|
+
|
691
|
+
def exclude_end?
|
692
|
+
true
|
693
|
+
end
|
694
|
+
|
695
|
+
def end
|
696
|
+
@version
|
697
|
+
end
|
698
|
+
|
699
|
+
def upper_bound?
|
700
|
+
true
|
701
|
+
end
|
702
|
+
|
703
|
+
def to_s
|
704
|
+
self.equal?(MATCH_NOTHING) ? '<0.0.0' : "<#{@version}"
|
705
|
+
end
|
406
706
|
end
|
407
707
|
|
408
|
-
# @
|
409
|
-
|
410
|
-
|
708
|
+
# @api private
|
709
|
+
class LtEqRange < ComparatorRange
|
710
|
+
def include?(version)
|
711
|
+
version <= @version
|
712
|
+
end
|
713
|
+
|
714
|
+
def end
|
715
|
+
@version
|
716
|
+
end
|
717
|
+
|
718
|
+
def upper_bound?
|
719
|
+
@version != Version::MAX
|
720
|
+
end
|
721
|
+
|
722
|
+
def to_s
|
723
|
+
"<=#{@version}"
|
724
|
+
end
|
411
725
|
end
|
412
726
|
|
413
|
-
|
727
|
+
# @api private
|
728
|
+
class EqRange < ComparatorRange
|
729
|
+
def include?(version)
|
730
|
+
version == @version
|
731
|
+
end
|
414
732
|
|
415
|
-
|
733
|
+
def begin
|
734
|
+
@version
|
735
|
+
end
|
736
|
+
|
737
|
+
def lower_bound?
|
738
|
+
@version != Version::MIN
|
739
|
+
end
|
416
740
|
|
417
|
-
|
741
|
+
def upper_bound?
|
742
|
+
@version != Version::MAX
|
743
|
+
end
|
744
|
+
|
745
|
+
def end
|
746
|
+
@version
|
747
|
+
end
|
748
|
+
|
749
|
+
def to_s
|
750
|
+
@version.to_s
|
751
|
+
end
|
752
|
+
end
|
418
753
|
|
419
754
|
# A range that matches no versions
|
420
|
-
EMPTY_RANGE = VersionRange.
|
755
|
+
EMPTY_RANGE = VersionRange.new([], nil).freeze
|
756
|
+
ALL_RANGE = VersionRange.new([AllRange::SINGLETON], '*')
|
421
757
|
end
|
422
758
|
end
|