puppet 4.8.2-x64-mingw32 → 4.9.0-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet.rb +52 -0
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2607
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
| @@ -22,6 +22,12 @@ class Puppet::Settings::FileOrDirectorySetting < Puppet::Settings::FileSetting | |
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              # @api private
         | 
| 25 | 
            +
              #
         | 
| 26 | 
            +
              # @param option [String] Extra file operation mode information to use
         | 
| 27 | 
            +
              #   (defaults to read-only mode 'r')
         | 
| 28 | 
            +
              #   This is the standard mechanism Ruby uses in the IO class, and therefore
         | 
| 29 | 
            +
              #   encoding may be explicitly like fmode : encoding or fmode : "BOM|UTF-*"
         | 
| 30 | 
            +
              #   for example, a:ASCII or w+:UTF-8
         | 
| 25 31 | 
             
              def open_file(filename, option = 'r', &block)
         | 
| 26 32 | 
             
                if type == :file
         | 
| 27 33 | 
             
                  super
         | 
| @@ -185,6 +185,11 @@ class Puppet::Settings::FileSetting < Puppet::Settings::StringSetting | |
| 185 185 | 
             
              end
         | 
| 186 186 |  | 
| 187 187 | 
             
              # @api private
         | 
| 188 | 
            +
              # @param option [String] Extra file operation mode information to use
         | 
| 189 | 
            +
              #   (defaults to read-only mode 'r')
         | 
| 190 | 
            +
              #   This is the standard mechanism Ruby uses in the IO class, and therefore
         | 
| 191 | 
            +
              #   encoding may be explicitly like fmode : encoding or fmode : "BOM|UTF-*"
         | 
| 192 | 
            +
              #   for example, a:ASCII or w+:UTF-8
         | 
| 188 193 | 
             
              def exclusive_open(option = 'r', &block)
         | 
| 189 194 | 
             
                controlled_access do |mode|
         | 
| 190 195 | 
             
                  Puppet::FileSystem.exclusive_open(file(), mode, option, &block)
         | 
| @@ -192,6 +197,11 @@ class Puppet::Settings::FileSetting < Puppet::Settings::StringSetting | |
| 192 197 | 
             
              end
         | 
| 193 198 |  | 
| 194 199 | 
             
              # @api private
         | 
| 200 | 
            +
              # @param option [String] Extra file operation mode information to use
         | 
| 201 | 
            +
              #   (defaults to read-only mode 'r')
         | 
| 202 | 
            +
              #   This is the standard mechanism Ruby uses in the IO class, and therefore
         | 
| 203 | 
            +
              #   encoding may be explicitly like fmode : encoding or fmode : "BOM|UTF-*"
         | 
| 204 | 
            +
              #   for example, a:ASCII or w+:UTF-8
         | 
| 195 205 | 
             
              def open(option = 'r', &block)
         | 
| 196 206 | 
             
                controlled_access do |mode|
         | 
| 197 207 | 
             
                  Puppet::FileSystem.open(file, mode, option, &block)
         | 
| @@ -189,7 +189,7 @@ class Puppet::SSL::CertificateAuthority | |
| 189 189 | 
             
              #
         | 
| 190 190 | 
             
              # @return [Array<String>]
         | 
| 191 191 | 
             
              def list(name='*')
         | 
| 192 | 
            -
                 | 
| 192 | 
            +
                Puppet::SSL::Certificate.indirection.search(name).collect { |c| c.name }
         | 
| 193 193 | 
             
              end
         | 
| 194 194 |  | 
| 195 195 | 
             
              # Return all the certificate objects as found by the indirector
         | 
| @@ -205,7 +205,10 @@ class Puppet::SSL::CertificateAuthority | |
| 205 205 | 
             
              # @param name [Array<string>] filter to cerificate names
         | 
| 206 206 | 
             
              #
         | 
| 207 207 | 
             
              # @return [Array<Puppet::SSL::Certificate>]
         | 
| 208 | 
            +
              #
         | 
| 209 | 
            +
              # @deprecated Use Puppet::SSL::CertificateAuthority#list or Puppet Server Certificate status API
         | 
| 208 210 | 
             
              def list_certificates(name='*')
         | 
| 211 | 
            +
                Puppet.deprecation_warning("Puppet::SSL::CertificateAuthority#list_certificates is deprecated. Please use Puppet::SSL::CertificateAuthority#list or the certificate status API to query certificate information. See https://docs.puppet.com/puppet/latest/http_api/http_certificate_status.html")
         | 
| 209 212 | 
             
                Puppet::SSL::Certificate.indirection.search(name)
         | 
| 210 213 | 
             
              end
         | 
| 211 214 |  | 
| @@ -417,6 +420,11 @@ class Puppet::SSL::CertificateAuthority | |
| 417 420 | 
             
              #   of the X509 Store
         | 
| 418 421 | 
             
              #
         | 
| 419 422 | 
             
              # @return [OpenSSL::X509::Store]
         | 
| 423 | 
            +
              #
         | 
| 424 | 
            +
              # @deprecated Strictly speaking, #x509_store is marked API private, so we
         | 
| 425 | 
            +
              #   don't need to publicly deprecate it. But it marked as deprecated here to
         | 
| 426 | 
            +
              #   avoid the exceedingly small chance that someone comes in and uses it from
         | 
| 427 | 
            +
              #   within this class before it is removed.
         | 
| 420 428 | 
             
              def x509_store(options = {})
         | 
| 421 429 | 
             
                if (options[:cache])
         | 
| 422 430 | 
             
                  return @x509store unless @x509store.nil?
         | 
| @@ -464,7 +472,10 @@ class Puppet::SSL::CertificateAuthority | |
| 464 472 | 
             
              # @param cert [Puppet::SSL::Certificate] the certificate to check validity of
         | 
| 465 473 | 
             
              #
         | 
| 466 474 | 
             
              # @return [Boolean] true if signed, false if unsigned or revoked
         | 
| 475 | 
            +
              #
         | 
| 476 | 
            +
              # @deprecated use Puppet::SSL::CertificateAuthority#verify or Puppet Server certificate status API
         | 
| 467 477 | 
             
              def certificate_is_alive?(cert)
         | 
| 478 | 
            +
                Puppet.deprecation_warning("Puppet::SSL::CertificateAuthority#certificate_is_alive? is deprecated. Please use Puppet::SSL::CertificateAuthority#verify or the certificate status API to query certificate information. See https://docs.puppet.com/puppet/latest/http_api/http_certificate_status.html")
         | 
| 468 479 | 
             
                x509_store(:cache => true).verify(cert.content)
         | 
| 469 480 | 
             
              end
         | 
| 470 481 |  | 
| @@ -483,7 +494,7 @@ class Puppet::SSL::CertificateAuthority | |
| 483 494 | 
             
                unless cert = Puppet::SSL::Certificate.indirection.find(name)
         | 
| 484 495 | 
             
                  raise ArgumentError, "Could not find a certificate for #{name}"
         | 
| 485 496 | 
             
                end
         | 
| 486 | 
            -
                store =  | 
| 497 | 
            +
                store = create_x509_store
         | 
| 487 498 |  | 
| 488 499 | 
             
                raise CertificateVerificationError.new(store.error), store.error_string unless store.verify(cert.content)
         | 
| 489 500 | 
             
              end
         | 
    
        data/lib/puppet/ssl/host.rb
    CHANGED
    
    | @@ -227,7 +227,29 @@ ERROR_STRING | |
| 227 227 | 
             
              # Generate all necessary parts of our ssl host.
         | 
| 228 228 | 
             
              def generate
         | 
| 229 229 | 
             
                generate_key unless key
         | 
| 230 | 
            -
                 | 
| 230 | 
            +
                # ask indirector to find any existing requests and download them
         | 
| 231 | 
            +
                existing_request = certificate_request
         | 
| 232 | 
            +
             | 
| 233 | 
            +
                # if CSR downloaded from master, but the local keypair was just generated and
         | 
| 234 | 
            +
                # does not match the public key in the CSR, fail hard
         | 
| 235 | 
            +
                if !existing_request.nil? &&
         | 
| 236 | 
            +
                  (key.content.public_key.to_s != existing_request.content.public_key.to_s)
         | 
| 237 | 
            +
             | 
| 238 | 
            +
                  raise Puppet::Error, <<ERROR_STRING
         | 
| 239 | 
            +
            The CSR retrieved from the master does not match the agent's public key.
         | 
| 240 | 
            +
            CSR fingerprint: #{existing_request.fingerprint}
         | 
| 241 | 
            +
            CSR public key: #{existing_request.content.public_key.to_text}
         | 
| 242 | 
            +
            Agent public key: #{key.content.public_key.to_text}
         | 
| 243 | 
            +
            To fix this, remove the CSR from both the master and the agent and then start a puppet run, which will automatically regenerate a CSR.
         | 
| 244 | 
            +
            On the master:
         | 
| 245 | 
            +
              puppet cert clean #{Puppet[:certname]}
         | 
| 246 | 
            +
            On the agent:
         | 
| 247 | 
            +
              1a. On most platforms: find #{Puppet[:ssldir]} -name #{Puppet[:certname]}.pem -delete
         | 
| 248 | 
            +
              1b. On Windows: del "#{Puppet[:certdir].gsub('/', '\\')}\\#{Puppet[:certname]}.pem" /f
         | 
| 249 | 
            +
              2. puppet agent -t
         | 
| 250 | 
            +
            ERROR_STRING
         | 
| 251 | 
            +
                end
         | 
| 252 | 
            +
                generate_certificate_request unless existing_request
         | 
| 231 253 |  | 
| 232 254 | 
             
                # If we can get a CA instance, then we're a valid CA, and we
         | 
| 233 255 | 
             
                # should use it to sign our request; else, just try to read
         | 
| @@ -79,6 +79,13 @@ class Puppet::Transaction::AdditionalResourceGenerator | |
| 79 79 |  | 
| 80 80 | 
             
              def contain_generated_resources_in(resource, made)
         | 
| 81 81 | 
             
                sentinel = Puppet::Type.type(:whit).new(:name => "completed_#{resource.title}", :catalog => resource.catalog)
         | 
| 82 | 
            +
                # Tag the completed whit with all of the tags of the generating resource
         | 
| 83 | 
            +
                # except the type name to allow event propogation to succeed beyond the whit
         | 
| 84 | 
            +
                # "boundary" when filtering resources with tags. We include auto-generated
         | 
| 85 | 
            +
                # tags such as the type name to support implicit filtering as well as
         | 
| 86 | 
            +
                # explicit. Note that resource#tags returns a duplicate of the resource's
         | 
| 87 | 
            +
                # tags.
         | 
| 88 | 
            +
                sentinel.tag(*resource.tags)
         | 
| 82 89 | 
             
                priority = @prioritizer.generate_priority_contained_in(resource, sentinel)
         | 
| 83 90 | 
             
                @relationship_graph.add_vertex(sentinel, priority)
         | 
| 84 91 |  | 
    
        data/lib/puppet/type/user.rb
    CHANGED
    
    | @@ -171,10 +171,23 @@ module Puppet | |
| 171 171 |  | 
| 172 172 | 
             
                newproperty(:comment) do
         | 
| 173 173 | 
             
                  desc "A description of the user.  Generally the user's full name."
         | 
| 174 | 
            -
                   | 
| 175 | 
            -
                     | 
| 176 | 
            -
             | 
| 174 | 
            +
                  def insync?(is)
         | 
| 175 | 
            +
                    # nameservice provider requires special attention to encoding
         | 
| 176 | 
            +
                    # Overrides Puppet::Property#insync?
         | 
| 177 | 
            +
                    if !@should.empty? && provider.respond_to?(:comments_insync?)
         | 
| 178 | 
            +
                      return provider.comments_insync?(is, @should)
         | 
| 179 | 
            +
                    end
         | 
| 180 | 
            +
                    super(is)
         | 
| 181 | 
            +
                  end
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                  # In the case that our comments have incompatible encodings, set external
         | 
| 184 | 
            +
                  # encoding to support concatenation for display.
         | 
| 185 | 
            +
                  # overrides Puppet::Property#change_to_s
         | 
| 186 | 
            +
                  def change_to_s(currentvalue, newvalue)
         | 
| 187 | 
            +
                    if newvalue.respond_to?(:force_encoding) && !Encoding.compatible?(currentvalue, newvalue)
         | 
| 188 | 
            +
                      return super(currentvalue, newvalue.dup.force_encoding(currentvalue.encoding))
         | 
| 177 189 | 
             
                    end
         | 
| 190 | 
            +
                    super(currentvalue, newvalue)
         | 
| 178 191 | 
             
                  end
         | 
| 179 192 | 
             
                end
         | 
| 180 193 |  | 
    
        data/lib/puppet/util.rb
    CHANGED
    
    | @@ -450,6 +450,7 @@ module Util | |
| 450 450 |  | 
| 451 451 | 
             
                begin
         | 
| 452 452 | 
             
                  file     = Puppet::FileSystem.pathname(file)
         | 
| 453 | 
            +
                  # encoding for Uniquefile is not important here because the caller writes to it as it sees fit
         | 
| 453 454 | 
             
                  tempfile = Puppet::FileSystem::Uniquefile.new(Puppet::FileSystem.basename_string(file), Puppet::FileSystem.dir_string(file))
         | 
| 454 455 |  | 
| 455 456 | 
             
                  # Set properties of the temporary file before we write the content, because
         | 
| @@ -184,9 +184,9 @@ module Puppet::Util::Execution | |
| 184 184 | 
             
                null_file = Puppet.features.microsoft_windows? ? 'NUL' : '/dev/null'
         | 
| 185 185 |  | 
| 186 186 | 
             
                begin
         | 
| 187 | 
            -
                  stdin =  | 
| 188 | 
            -
                  stdout = options[:squelch] ?  | 
| 189 | 
            -
                  stderr = options[:combine] ? stdout :  | 
| 187 | 
            +
                  stdin = Puppet::FileSystem.open(options[:stdinfile] || null_file, nil, 'r')
         | 
| 188 | 
            +
                  stdout = options[:squelch] ? Puppet::FileSystem.open(null_file, nil, 'w') : Puppet::FileSystem::Uniquefile.new('puppet')
         | 
| 189 | 
            +
                  stderr = options[:combine] ? stdout : Puppet::FileSystem.open(null_file, nil, 'w')
         | 
| 190 190 |  | 
| 191 191 | 
             
                  exec_args = [command, options, stdin, stdout, stderr]
         | 
| 192 192 |  | 
    
        data/lib/puppet/util/filetype.rb
    CHANGED
    
    | @@ -105,7 +105,9 @@ class Puppet::Util::FileType | |
| 105 105 | 
             
                # Read the file.
         | 
| 106 106 | 
             
                def read
         | 
| 107 107 | 
             
                  if Puppet::FileSystem.exist?(@path)
         | 
| 108 | 
            -
                     | 
| 108 | 
            +
                    # this code path is used by many callers so the original default is
         | 
| 109 | 
            +
                    # being explicitly preserved
         | 
| 110 | 
            +
                    Puppet::FileSystem.read(@path, :encoding => Encoding.default_external)
         | 
| 109 111 | 
             
                  else
         | 
| 110 112 | 
             
                    return nil
         | 
| 111 113 | 
             
                  end
         | 
| @@ -118,7 +120,8 @@ class Puppet::Util::FileType | |
| 118 120 |  | 
| 119 121 | 
             
                # Overwrite the file.
         | 
| 120 122 | 
             
                def write(text)
         | 
| 121 | 
            -
                   | 
| 123 | 
            +
                  # this file is managed by the OS and should be using system encoding
         | 
| 124 | 
            +
                  tf = Tempfile.new("puppet", :encoding => Encoding.default_external)
         | 
| 122 125 | 
             
                  tf.print text; tf.flush
         | 
| 123 126 | 
             
                  File.chmod(@default_mode, tf.path) if @default_mode
         | 
| 124 127 | 
             
                  FileUtils.cp(tf.path, @path)
         | 
| @@ -197,7 +200,8 @@ class Puppet::Util::FileType | |
| 197 200 | 
             
                # Overwrite a specific @path's cron tab; must be passed the @path name
         | 
| 198 201 | 
             
                # and the text with which to create the cron tab.
         | 
| 199 202 | 
             
                def write(text)
         | 
| 200 | 
            -
                   | 
| 203 | 
            +
                  # this file is managed by the OS and should be using system encoding
         | 
| 204 | 
            +
                  IO.popen("#{cmdbase()} -", "w", :encoding => Encoding.default_external) { |p|
         | 
| 201 205 | 
             
                    p.print text
         | 
| 202 206 | 
             
                  }
         | 
| 203 207 | 
             
                end
         | 
| @@ -242,7 +246,8 @@ class Puppet::Util::FileType | |
| 242 246 | 
             
                # Overwrite a specific @path's cron tab; must be passed the @path name
         | 
| 243 247 | 
             
                # and the text with which to create the cron tab.
         | 
| 244 248 | 
             
                def write(text)
         | 
| 245 | 
            -
                   | 
| 249 | 
            +
                  # this file is managed by the OS and should be using system encoding
         | 
| 250 | 
            +
                  output_file = Tempfile.new("puppet_suntab", :encoding => Encoding.default_external)
         | 
| 246 251 | 
             
                  begin
         | 
| 247 252 | 
             
                    output_file.print text
         | 
| 248 253 | 
             
                    output_file.close
         | 
| @@ -284,7 +289,8 @@ class Puppet::Util::FileType | |
| 284 289 | 
             
                # Overwrite a specific @path's cron tab; must be passed the @path name
         | 
| 285 290 | 
             
                # and the text with which to create the cron tab.
         | 
| 286 291 | 
             
                def write(text)
         | 
| 287 | 
            -
                   | 
| 292 | 
            +
                  # this file is managed by the OS and should be using system encoding
         | 
| 293 | 
            +
                  output_file = Tempfile.new("puppet_aixtab", :encoding => Encoding.default_external)
         | 
| 288 294 |  | 
| 289 295 | 
             
                  begin
         | 
| 290 296 | 
             
                    output_file.print text
         | 
    
        data/lib/puppet/util/logging.rb
    CHANGED
    
    | @@ -224,7 +224,8 @@ module Logging | |
| 224 224 | 
             
                # find the same offender, and we'd end up logging it again.
         | 
| 225 225 | 
             
                $logged_deprecation_warnings ||= {}
         | 
| 226 226 |  | 
| 227 | 
            -
                 | 
| 227 | 
            +
                # Deprecation messages are UTF-8 as they are produced by Ruby
         | 
| 228 | 
            +
                Puppet::FileSystem.open(deprecations_file, nil, "a:UTF-8") do |f|
         | 
| 228 229 | 
             
                  if ($deprecation_warnings) then
         | 
| 229 230 | 
             
                    $deprecation_warnings.each do |offender, message|
         | 
| 230 231 | 
             
                      if (! $logged_deprecation_warnings.has_key?(offender)) then
         | 
| @@ -59,7 +59,7 @@ class Puppet::Util::NetworkDevice::Config | |
| 59 59 | 
             
                        device.options = { :debug => false }
         | 
| 60 60 | 
             
                        Puppet.debug "found device: #{device.name} at #{device.line}"
         | 
| 61 61 | 
             
                        devices[name] = device
         | 
| 62 | 
            -
                      when /^\s*(type|url|debug)(\s+(.+))*$/
         | 
| 62 | 
            +
                      when /^\s*(type|url|debug)(\s+(.+)\s*)*$/
         | 
| 63 63 | 
             
                        parse_directive(device, $1, $3, count)
         | 
| 64 64 | 
             
                      else
         | 
| 65 65 | 
             
                        raise Puppet::Error, "Invalid line #{count}: #{line}"
         | 
    
        data/lib/puppet/util/plist.rb
    CHANGED
    
    | @@ -78,6 +78,12 @@ module Puppet::Util::Plist | |
| 78 78 | 
             
                # stubbing purposes
         | 
| 79 79 | 
             
                #
         | 
| 80 80 | 
             
                # @api private
         | 
| 81 | 
            +
                #
         | 
| 82 | 
            +
                # @param args [String] Extra file operation mode information to use
         | 
| 83 | 
            +
                #   (defaults to read-only mode 'r')
         | 
| 84 | 
            +
                #   This is the standard mechanism Ruby uses in the IO class, and therefore
         | 
| 85 | 
            +
                #   encoding may be explicitly like fmode : encoding or fmode : "BOM|UTF-*"
         | 
| 86 | 
            +
                #   for example, a:ASCII or w+:UTF-8
         | 
| 81 87 | 
             
                def open_file_with_args(file, args)
         | 
| 82 88 | 
             
                  File.open(file, args).read
         | 
| 83 89 | 
             
                end
         | 
| @@ -42,7 +42,7 @@ class Puppet::Util::Profiler::Aggregate < Puppet::Util::Profiler::WallClock | |
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              def print_metrics(metrics_hash, prefix)
         | 
| 45 | 
            -
                metrics_hash.sort_by {|k,v| v.time }. | 
| 45 | 
            +
                metrics_hash.sort_by {|k,v| v.time }.reverse_each do |k,v|
         | 
| 46 46 | 
             
                  @logger.call("#{prefix}#{k}: #{v.time} s (#{v.count} calls)")
         | 
| 47 47 | 
             
                  print_metrics(metrics_hash[k], "#{prefix}#{k} -> ")
         | 
| 48 48 | 
             
                end
         | 
| @@ -225,7 +225,7 @@ module Generators | |
| 225 225 | 
             
                    'style_url'  => style_url('', @options.css),
         | 
| 226 226 | 
             
                  }
         | 
| 227 227 |  | 
| 228 | 
            -
                   | 
| 228 | 
            +
                  Puppet::FileSystem.open(filename, nil, "w:UTF-8") do |f|
         | 
| 229 229 | 
             
                    template.write_html_on(f, values)
         | 
| 230 230 | 
             
                  end
         | 
| 231 231 | 
             
                end
         | 
| @@ -301,7 +301,7 @@ module Generators | |
| 301 301 | 
             
                  values["plugins"] = res4 if res4.size>0
         | 
| 302 302 | 
             
                  values["nodes"] = res5 if res5.size>0
         | 
| 303 303 |  | 
| 304 | 
            -
                   | 
| 304 | 
            +
                  Puppet::FileSystem.open(filename, nil, "w:UTF-8") do |f|
         | 
| 305 305 | 
             
                    template.write_html_on(f, values)
         | 
| 306 306 | 
             
                  end
         | 
| 307 307 | 
             
                end
         | 
| @@ -104,7 +104,8 @@ module RDoc::PuppetParserCore | |
| 104 104 | 
             
                comment = ""
         | 
| 105 105 | 
             
                %w{README README.rdoc}.each do |rfile|
         | 
| 106 106 | 
             
                  readme = File.join(File.dirname(File.dirname(@input_file_name)), rfile)
         | 
| 107 | 
            -
                   | 
| 107 | 
            +
                  # module README should be UTF-8, not default system encoding
         | 
| 108 | 
            +
                  comment = File.open(readme,"r:UTF-8") { |f| f.read } if FileTest.readable?(readme)
         | 
| 108 109 | 
             
                end
         | 
| 109 110 | 
             
                look_for_directives_in(container, comment) unless comment.empty?
         | 
| 110 111 |  | 
| @@ -195,10 +195,9 @@ module Puppet::Util::Windows::ADSI | |
| 195 195 | 
             
                end
         | 
| 196 196 |  | 
| 197 197 | 
             
                def [](attribute)
         | 
| 198 | 
            -
                   | 
| 199 | 
            -
                  #  | 
| 200 | 
            -
                   | 
| 201 | 
            -
                  value
         | 
| 198 | 
            +
                  # Setting WIN32OLE.codepage in the microsoft_windows feature ensures
         | 
| 199 | 
            +
                  # values are returned as UTF-8
         | 
| 200 | 
            +
                  native_user.Get(attribute)
         | 
| 202 201 | 
             
                end
         | 
| 203 202 |  | 
| 204 203 | 
             
                def []=(attribute, value)
         | 
| @@ -248,8 +247,9 @@ module Puppet::Util::Windows::ADSI | |
| 248 247 | 
             
                  # https://msdn.microsoft.com/en-us/library/aa746342.aspx
         | 
| 249 248 | 
             
                  # WIN32OLE objects aren't enumerable, so no map
         | 
| 250 249 | 
             
                  groups = []
         | 
| 251 | 
            -
                  #  | 
| 252 | 
            -
                   | 
| 250 | 
            +
                  # Setting WIN32OLE.codepage in the microsoft_windows feature ensures
         | 
| 251 | 
            +
                  # values are returned as UTF-8
         | 
| 252 | 
            +
                  native_user.Groups.each {|g| groups << g.Name} rescue nil
         | 
| 253 253 | 
             
                  groups
         | 
| 254 254 | 
             
                end
         | 
| 255 255 |  | 
| @@ -372,8 +372,9 @@ module Puppet::Util::Windows::ADSI | |
| 372 372 |  | 
| 373 373 | 
             
                  users = []
         | 
| 374 374 | 
             
                  wql.each do |u|
         | 
| 375 | 
            -
                    #  | 
| 376 | 
            -
                     | 
| 375 | 
            +
                    # Setting WIN32OLE.codepage in the microsoft_windows feature ensures
         | 
| 376 | 
            +
                    # values are returned as UTF-8
         | 
| 377 | 
            +
                    users << new(u.name)
         | 
| 377 378 | 
             
                  end
         | 
| 378 379 |  | 
| 379 380 | 
             
                  users.each(&block)
         | 
| @@ -465,8 +466,9 @@ module Puppet::Util::Windows::ADSI | |
| 465 466 | 
             
                def members
         | 
| 466 467 | 
             
                  # WIN32OLE objects aren't enumerable, so no map
         | 
| 467 468 | 
             
                  members = []
         | 
| 468 | 
            -
                  #  | 
| 469 | 
            -
                   | 
| 469 | 
            +
                  # Setting WIN32OLE.codepage in the microsoft_windows feature ensures
         | 
| 470 | 
            +
                  # values are returned as UTF-8
         | 
| 471 | 
            +
                  native_group.Members.each {|m| members << m.Name}
         | 
| 470 472 | 
             
                  members
         | 
| 471 473 | 
             
                end
         | 
| 472 474 |  | 
| @@ -535,8 +537,9 @@ module Puppet::Util::Windows::ADSI | |
| 535 537 |  | 
| 536 538 | 
             
                  groups = []
         | 
| 537 539 | 
             
                  wql.each do |g|
         | 
| 538 | 
            -
                    #  | 
| 539 | 
            -
                     | 
| 540 | 
            +
                    # Setting WIN32OLE.codepage in the microsoft_windows feature ensures
         | 
| 541 | 
            +
                    # values are returned as UTF-8
         | 
| 542 | 
            +
                    groups << new(g.name)
         | 
| 540 543 | 
             
                  end
         | 
| 541 544 |  | 
| 542 545 | 
             
                  groups.each(&block)
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            $: << File.join([File.dirname(__FILE__), "semantic_puppet/lib"])
         | 
| @@ -75,7 +75,8 @@ class PathSpec | |
| 75 75 |  | 
| 76 76 | 
             
              # Generate specs from a filename, such as a .gitignore
         | 
| 77 77 | 
             
              def self.from_filename(filename, type=:git)
         | 
| 78 | 
            -
                 | 
| 78 | 
            +
                # .gitignore is a UTF-8 file
         | 
| 79 | 
            +
                self.from_lines(File.open(filename, 'r', :encoding => Encoding::UTF_8), type)
         | 
| 79 80 | 
             
              end
         | 
| 80 81 |  | 
| 81 82 | 
             
              def self.from_lines(lines, type=:git)
         | 
| @@ -1,7 +1,6 @@ | |
| 1 1 | 
             
            # This adds upfront requirements on vendored code found under lib/vendor/x
         | 
| 2 2 | 
             
            # Add one requirement per vendored package (or a comment if it is loaded on demand).
         | 
| 3 3 |  | 
| 4 | 
            -
            # The vendored library 'semantic' is loaded on demand.
         | 
| 5 4 | 
             
            # The vendored library 'rgen' is loaded on demand.
         | 
| 6 5 | 
             
            # The vendored library 'pathspec' is loaded on demand.
         | 
| 7 6 | 
             
            # The vendored library 'deep_merge' is loaded on demand.
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              require 'gettext-setup'
         | 
| 3 | 
            +
            rescue LoadError
         | 
| 4 | 
            +
              def _(msg)
         | 
| 5 | 
            +
                msg
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            module SemanticPuppet
         | 
| 10 | 
            +
              if defined?(GettextSetup)
         | 
| 11 | 
            +
                GettextSetup.initialize(File.absolute_path('semantic_puppet/locales', File.dirname(__FILE__)))
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              autoload :Version, 'semantic_puppet/version'
         | 
| 15 | 
            +
              autoload :VersionRange, 'semantic_puppet/version_range'
         | 
| 16 | 
            +
              autoload :Dependency, 'semantic_puppet/dependency'
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb
    RENAMED
    
    | @@ -1,15 +1,15 @@ | |
| 1 | 
            -
            require ' | 
| 1 | 
            +
            require 'semantic_puppet'
         | 
| 2 2 |  | 
| 3 | 
            -
            module  | 
| 3 | 
            +
            module SemanticPuppet
         | 
| 4 4 | 
             
              module Dependency
         | 
| 5 5 | 
             
                extend self
         | 
| 6 6 |  | 
| 7 | 
            -
                autoload :Graph,         ' | 
| 8 | 
            -
                autoload :GraphNode,     ' | 
| 9 | 
            -
                autoload :ModuleRelease, ' | 
| 10 | 
            -
                autoload :Source,        ' | 
| 7 | 
            +
                autoload :Graph,         'semantic_puppet/dependency/graph'
         | 
| 8 | 
            +
                autoload :GraphNode,     'semantic_puppet/dependency/graph_node'
         | 
| 9 | 
            +
                autoload :ModuleRelease, 'semantic_puppet/dependency/module_release'
         | 
| 10 | 
            +
                autoload :Source,        'semantic_puppet/dependency/source'
         | 
| 11 11 |  | 
| 12 | 
            -
                autoload :UnsatisfiableGraph, ' | 
| 12 | 
            +
                autoload :UnsatisfiableGraph, 'semantic_puppet/dependency/unsatisfiable_graph'
         | 
| 13 13 |  | 
| 14 14 | 
             
                # @!group Sources
         | 
| 15 15 |  |