puppet 5.4.0 → 5.5.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/Gemfile +3 -3
- data/MAINTAINERS +0 -19
- data/README.md +5 -5
- data/Rakefile +26 -0
- data/conf/auth.conf +5 -0
- data/ext/project_data.yaml +1 -0
- data/ext/regexp_nodes/regexp_nodes.rb +3 -4
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/cert.rb +3 -1
- data/lib/puppet/application/device.rb +100 -13
- data/lib/puppet/application/facts.rb +5 -0
- data/lib/puppet/application/lookup.rb +12 -2
- data/lib/puppet/configurer.rb +37 -17
- data/lib/puppet/confine.rb +4 -1
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +6 -3
- data/lib/puppet/external/dot.rb +0 -7
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/face/config.rb +92 -10
- data/lib/puppet/face/epp.rb +31 -6
- data/lib/puppet/face/facts.rb +49 -0
- data/lib/puppet/face/help.rb +33 -35
- data/lib/puppet/face/help/action.erb +1 -1
- data/lib/puppet/face/help/face.erb +1 -1
- data/lib/puppet/face/man.rb +55 -12
- data/lib/puppet/face/parser.rb +30 -3
- data/lib/puppet/file_bucket/file.rb +0 -2
- data/lib/puppet/file_serving/base.rb +10 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/functions.rb +1 -3
- data/lib/puppet/functions/alert.rb +1 -1
- data/lib/puppet/functions/all.rb +6 -6
- data/lib/puppet/functions/annotate.rb +10 -10
- data/lib/puppet/functions/any.rb +6 -6
- data/lib/puppet/functions/assert_type.rb +4 -4
- data/lib/puppet/functions/binary_file.rb +14 -2
- data/lib/puppet/functions/break.rb +31 -2
- data/lib/puppet/functions/call.rb +4 -4
- data/lib/puppet/functions/contain.rb +19 -3
- data/lib/puppet/functions/convert_to.rb +6 -5
- data/lib/puppet/functions/crit.rb +1 -1
- data/lib/puppet/functions/debug.rb +1 -1
- data/lib/puppet/functions/defined.rb +11 -9
- data/lib/puppet/functions/dig.rb +26 -2
- data/lib/puppet/functions/each.rb +8 -8
- data/lib/puppet/functions/emerg.rb +1 -1
- data/lib/puppet/functions/empty.rb +79 -0
- data/lib/puppet/functions/err.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
- data/lib/puppet/functions/filter.rb +7 -7
- data/lib/puppet/functions/find_file.rb +15 -1
- data/lib/puppet/functions/flatten.rb +64 -0
- data/lib/puppet/functions/hiera.rb +6 -6
- data/lib/puppet/functions/hiera_array.rb +6 -6
- data/lib/puppet/functions/hiera_hash.rb +6 -6
- data/lib/puppet/functions/hiera_include.rb +8 -8
- data/lib/puppet/functions/include.rb +28 -2
- data/lib/puppet/functions/info.rb +1 -1
- data/lib/puppet/functions/inline_epp.rb +2 -2
- data/lib/puppet/functions/join.rb +56 -0
- data/lib/puppet/functions/json_data.rb +2 -2
- data/lib/puppet/functions/keys.rb +25 -0
- data/lib/puppet/functions/length.rb +44 -0
- data/lib/puppet/functions/lest.rb +39 -1
- data/lib/puppet/functions/lookup.rb +2 -1
- data/lib/puppet/functions/map.rb +10 -9
- data/lib/puppet/functions/match.rb +6 -6
- data/lib/puppet/functions/new.rb +995 -2
- data/lib/puppet/functions/next.rb +1 -1
- data/lib/puppet/functions/notice.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -6
- data/lib/puppet/functions/regsubst.rb +9 -3
- data/lib/puppet/functions/require.rb +36 -2
- data/lib/puppet/functions/return.rb +1 -1
- data/lib/puppet/functions/reverse_each.rb +71 -2
- data/lib/puppet/functions/slice.rb +23 -9
- data/lib/puppet/functions/split.rb +12 -10
- data/lib/puppet/functions/step.rb +73 -1
- data/lib/puppet/functions/strftime.rb +176 -2
- data/lib/puppet/functions/then.rb +65 -2
- data/lib/puppet/functions/tree_each.rb +19 -19
- data/lib/puppet/functions/type.rb +42 -1
- data/lib/puppet/functions/unique.rb +13 -13
- data/lib/puppet/functions/unwrap.rb +8 -4
- data/lib/puppet/functions/values.rb +25 -0
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/functions/warning.rb +1 -1
- data/lib/puppet/functions/with.rb +6 -4
- data/lib/puppet/functions/yaml_data.rb +3 -1
- data/lib/puppet/indirector/certificate_status/file.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +1 -3
- data/lib/puppet/indirector/facts/rest.rb +21 -0
- data/lib/puppet/indirector/facts/yaml.rb +0 -4
- data/lib/puppet/indirector/rest.rb +2 -2
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module/task.rb +2 -3
- data/lib/puppet/module_tool/applications/application.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/network/authconfig.rb +1 -1
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +5 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
- data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
- data/lib/puppet/network/http/error.rb +3 -3
- data/lib/puppet/network/resolver.rb +1 -2
- data/lib/puppet/parser/compiler.rb +12 -5
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
- data/lib/puppet/parser/functions/new.rb +31 -46
- data/lib/puppet/parser/parser_factory.rb +1 -1
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +11 -11
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/issue_reporter.rb +18 -1
- data/lib/puppet/pops/issues.rb +6 -3
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
- data/lib/puppet/pops/loaders.rb +18 -7
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
- data/lib/puppet/pops/model/factory.rb +6 -3
- data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
- data/lib/puppet/pops/model/pn_transformer.rb +400 -0
- data/lib/puppet/pops/parser/egrammar.ra +1 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/lexer_support.rb +3 -2
- data/lib/puppet/pops/parser/locator.rb +0 -2
- data/lib/puppet/pops/parser/pn_parser.rb +316 -0
- data/lib/puppet/pops/pcore.rb +17 -17
- data/lib/puppet/pops/pn.rb +236 -0
- data/lib/puppet/pops/serialization/json.rb +7 -7
- data/lib/puppet/pops/types/class_loader.rb +6 -3
- data/lib/puppet/pops/types/implementation_registry.rb +28 -35
- data/lib/puppet/pops/types/p_object_type.rb +3 -3
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
- data/lib/puppet/pops/types/ruby_generator.rb +3 -4
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_factory.rb +0 -4
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +14 -7
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/utils.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +3 -1
- data/lib/puppet/provider/group/windows_adsi.rb +4 -7
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/package/pacman.rb +4 -4
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgutil.rb +2 -2
- data/lib/puppet/provider/package/portage.rb +9 -9
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +6 -2
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/type.rb +11 -11
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +5 -5
- data/lib/puppet/resource/catalog.rb +6 -3
- data/lib/puppet/resource/status.rb +9 -2
- data/lib/puppet/resource/type.rb +1 -1
- data/lib/puppet/settings.rb +31 -19
- data/lib/puppet/settings/base_setting.rb +5 -0
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +5 -0
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +0 -2
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +18 -12
- data/lib/puppet/type.rb +9 -13
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +11 -6
- data/lib/puppet/type/exec.rb +1 -1
- data/lib/puppet/type/file.rb +4 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/k5login.rb +30 -54
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/schedule.rb +12 -12
- data/lib/puppet/type/scheduled_task.rb +2 -2
- data/lib/puppet/type/ssh_authorized_key.rb +5 -5
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +26 -5
- data/lib/puppet/util.rb +0 -4
- data/lib/puppet/util/backups.rb +1 -1
- data/lib/puppet/util/inifile.rb +3 -4
- data/lib/puppet/util/json.rb +68 -0
- data/lib/puppet/util/json_lockfile.rb +3 -3
- data/lib/puppet/util/log.rb +2 -5
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -8
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +0 -2
- data/lib/puppet/util/windows/adsi.rb +15 -18
- data/lib/puppet/util/windows/com.rb +2 -1
- data/lib/puppet/util/windows/file.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +7 -6
- data/lib/puppet/util/windows/sid.rb +60 -7
- data/lib/puppet/util/windows/taskscheduler.rb +0 -9
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +53 -48
- data/locales/ja/puppet.po +1357 -912
- data/locales/puppet.pot +549 -466
- data/man/man5/puppet.conf.5 +103 -20
- data/man/man8/puppet-agent.8 +6 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +35 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +33 -11
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +34 -12
- data/man/man8/puppet-facts.8 +50 -1
- data/man/man8/puppet-filebucket.8 +38 -11
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +10 -4
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +15 -6
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +31 -8
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +67 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +3 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
- data/spec/integration/application/apply_spec.rb +15 -15
- data/spec/integration/application/lookup_spec.rb +21 -0
- data/spec/integration/faces/config_spec.rb +16 -4
- data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +17 -18
- data/spec/integration/parser/pcore_resource_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +2 -2
- data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/key_spec.rb +1 -1
- data/spec/integration/transaction/report_spec.rb +3 -3
- data/spec/integration/transaction_spec.rb +0 -1
- data/spec/integration/type/file_spec.rb +10 -11
- data/spec/integration/type_spec.rb +1 -2
- data/spec/integration/util/windows/adsi_spec.rb +86 -1
- data/spec/integration/util/windows/principal_spec.rb +11 -2
- data/spec/integration/util/windows/security_spec.rb +2 -2
- data/spec/lib/matchers/json.rb +4 -4
- data/spec/lib/puppet_spec/language.rb +34 -35
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/shared_behaviours/file_server_terminus.rb +0 -2
- data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/application/cert_spec.rb +21 -9
- data/spec/unit/application/device_spec.rb +96 -2
- data/spec/unit/application/face_base_spec.rb +2 -2
- data/spec/unit/application/lookup_spec.rb +0 -1
- data/spec/unit/configurer_spec.rb +14 -0
- data/spec/unit/confine_spec.rb +16 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
- data/spec/unit/datatypes_spec.rb +49 -0
- data/spec/unit/environments_spec.rb +7 -0
- data/spec/unit/face/config_spec.rb +116 -12
- data/spec/unit/face/epp_face_spec.rb +53 -2
- data/spec/unit/face/facts_spec.rb +53 -0
- data/spec/unit/face/help_spec.rb +62 -69
- data/spec/unit/face/man_spec.rb +26 -0
- data/spec/unit/face/module/list_spec.rb +0 -1
- data/spec/unit/face/parser_spec.rb +78 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -4
- data/spec/unit/file_serving/content_spec.rb +0 -1
- data/spec/unit/file_serving/fileset_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +0 -1
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
- data/spec/unit/forge_spec.rb +1 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +77 -0
- data/spec/unit/functions/epp_spec.rb +1 -1
- data/spec/unit/functions/flatten_spec.rb +31 -0
- data/spec/unit/functions/include_spec.rb +2 -2
- data/spec/unit/functions/inline_epp_spec.rb +1 -1
- data/spec/unit/functions/join_spec.rb +33 -0
- data/spec/unit/functions/keys_spec.rb +31 -0
- data/spec/unit/functions/length_spec.rb +50 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
- data/spec/unit/functions/lookup_spec.rb +52 -0
- data/spec/unit/functions/shared.rb +1 -1
- data/spec/unit/functions/values_spec.rb +30 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +30 -32
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
- data/spec/unit/indirector/facts/rest_spec.rb +45 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +2 -2
- data/spec/unit/indirector/request_spec.rb +0 -2
- data/spec/unit/indirector/rest_spec.rb +2 -2
- data/spec/unit/indirector_spec.rb +0 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +1 -1
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/module_spec.rb +0 -5
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
- data/spec/unit/network/formats_spec.rb +5 -13
- data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/handler_spec.rb +3 -2
- data/spec/unit/node/environment_spec.rb +1 -1
- data/spec/unit/node_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/environment_compiler_spec.rb +8 -8
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/fail_spec.rb +1 -1
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
- data/spec/unit/parser/functions/realize_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +0 -1
- data/spec/unit/parser/scope_spec.rb +3 -3
- data/spec/unit/parser/type_loader_spec.rb +1 -1
- data/spec/unit/pops/adaptable_spec.rb +0 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
- data/spec/unit/pops/factory_rspec_helper.rb +1 -1
- data/spec/unit/pops/factory_spec.rb +5 -5
- data/spec/unit/pops/issues_spec.rb +23 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
- data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
- data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
- data/spec/unit/pops/pn_spec.rb +148 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
- data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
- data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
- data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
- data/spec/unit/pops/types/string_converter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +3 -1
- data/spec/unit/property_spec.rb +2 -2
- data/spec/unit/provider/aixobject_spec.rb +1 -1
- data/spec/unit/provider/cron/crontab_spec.rb +3 -3
- data/spec/unit/provider/exec/posix_spec.rb +6 -6
- data/spec/unit/provider/group/groupadd_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
- data/spec/unit/provider/ldap_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +3 -4
- data/spec/unit/provider/package/yum_spec.rb +6 -2
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/init_spec.rb +2 -2
- data/spec/unit/provider/service/openrc_spec.rb +2 -2
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_spec.rb +7 -7
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +15 -9
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
- data/spec/unit/puppet_pal_2pec.rb +4 -5
- data/spec/unit/resource/catalog_spec.rb +8 -3
- data/spec/unit/resource/status_spec.rb +15 -4
- data/spec/unit/resource/type_spec.rb +2 -3
- data/spec/unit/settings_spec.rb +9 -4
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
- data/spec/unit/ssl/certificate_request_spec.rb +1 -2
- data/spec/unit/transaction/report_spec.rb +41 -0
- data/spec/unit/transaction_spec.rb +1 -1
- data/spec/unit/type/exec_spec.rb +7 -9
- data/spec/unit/type/file/selinux_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +4 -3
- data/spec/unit/type/k5login_spec.rb +79 -10
- data/spec/unit/type/mount_spec.rb +1 -1
- data/spec/unit/type/nagios_spec.rb +6 -6
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +18 -0
- data/spec/unit/type/zfs_spec.rb +1 -1
- data/spec/unit/type_spec.rb +14 -15
- data/spec/unit/util/docs_spec.rb +1 -1
- data/spec/unit/util/execution_spec.rb +0 -1
- data/spec/unit/util/inifile_spec.rb +35 -4
- data/spec/unit/util/log/destinations_spec.rb +2 -2
- data/spec/unit/util/log_spec.rb +6 -5
- data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +1 -7
- data/spec/unit/util/windows/adsi_spec.rb +31 -27
- data/spec/unit/util/windows/sid_spec.rb +86 -15
- data/spec/unit/util_spec.rb +2 -2
- data/spec/watchr.rb +0 -1
- data/tasks/benchmark.rake +37 -0
- data/tasks/manpages.rake +1 -1
- metadata +71 -11
- checksums.yaml +0 -7
@@ -50,7 +50,9 @@ Puppet::Functions.create_function(:eyaml_lookup_key) do
|
|
50
50
|
if data.is_a?(Hash)
|
51
51
|
Puppet::Pops::Lookup::HieraConfig.symkeys_to_string(data)
|
52
52
|
else
|
53
|
-
|
53
|
+
msg = _("%{path}: file does not contain a valid yaml hash") % { path: path }
|
54
|
+
raise Puppet::DataBinding::LookupError, msg if Puppet[:strict] == :error && data != false
|
55
|
+
Puppet.warning(msg)
|
54
56
|
{}
|
55
57
|
end
|
56
58
|
rescue YAML::SyntaxError => ex
|
@@ -21,19 +21,19 @@
|
|
21
21
|
#
|
22
22
|
# @example Using the `filter` function with an array and a one-parameter lambda
|
23
23
|
#
|
24
|
-
#
|
24
|
+
# ```puppet
|
25
25
|
# # For the array $data, return an array containing the values that end with "berry"
|
26
26
|
# $data = ["orange", "blueberry", "raspberry"]
|
27
27
|
# $filtered_data = $data.filter |$items| { $items =~ /berry$/ }
|
28
28
|
# # $filtered_data = [blueberry, raspberry]
|
29
|
-
#
|
29
|
+
# ```
|
30
30
|
#
|
31
31
|
# When the first argument is a hash, Puppet passes each key and value pair to the lambda
|
32
32
|
# as an array in the form `[key, value]` and returns a hash containing the results.
|
33
33
|
#
|
34
34
|
# @example Using the `filter` function with a hash and a one-parameter lambda
|
35
35
|
#
|
36
|
-
#
|
36
|
+
# ```puppet
|
37
37
|
# # For the hash $data, return a hash containing all values of keys that end with "berry"
|
38
38
|
# $data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
|
39
39
|
# $filtered_data = $data.filter |$items| { $items[0] =~ /berry$/ }
|
@@ -45,26 +45,26 @@
|
|
45
45
|
#
|
46
46
|
# @example Using the `filter` function with an array and a two-parameter lambda
|
47
47
|
#
|
48
|
-
#
|
48
|
+
# ```puppet
|
49
49
|
# # For the array $data, return an array of all keys that both end with "berry" and have
|
50
50
|
# # an even-numbered index
|
51
51
|
# $data = ["orange", "blueberry", "raspberry"]
|
52
52
|
# $filtered_data = $data.filter |$indexes, $values| { $indexes % 2 == 0 and $values =~ /berry$/ }
|
53
53
|
# # $filtered_data = [raspberry]
|
54
|
-
#
|
54
|
+
# ```
|
55
55
|
#
|
56
56
|
# When the first argument is a hash, Puppet passes its keys to the first parameter and its
|
57
57
|
# values to the second parameter.
|
58
58
|
#
|
59
59
|
# @example Using the `filter` function with a hash and a two-parameter lambda
|
60
60
|
#
|
61
|
-
#
|
61
|
+
# ```puppet
|
62
62
|
# # For the hash $data, return a hash of all keys that both end with "berry" and have
|
63
63
|
# # values less than or equal to 1
|
64
64
|
# $data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
|
65
65
|
# $filtered_data = $data.filter |$keys, $values| { $keys =~ /berry$/ and $values <= 1 }
|
66
66
|
# # $filtered_data = {blueberry => 1}
|
67
|
-
#
|
67
|
+
# ```
|
68
68
|
#
|
69
69
|
# @since 4.0.0
|
70
70
|
#
|
@@ -1,5 +1,19 @@
|
|
1
1
|
# Finds an existing file from a module and returns its path.
|
2
|
-
#
|
2
|
+
#
|
3
|
+
# The argument to this function should be a String as a `<MODULE NAME>/<FILE>`
|
4
|
+
# reference, which will search for `<FILE>` relative to a module's `files`
|
5
|
+
# directory. (For example, the reference `mysql/mysqltuner.pl` will search for the
|
6
|
+
# file `<MODULES DIRECTORY>/mysql/files/mysqltuner.pl`.)
|
7
|
+
#
|
8
|
+
# This function can also accept:
|
9
|
+
#
|
10
|
+
# * An absolute String path, which will check for the existence of a file from anywhere on disk.
|
11
|
+
# * Multiple String arguments, which will return the path of the **first** file
|
12
|
+
# found, skipping non existing files.
|
13
|
+
# * An array of string paths, which will return the path of the **first** file
|
14
|
+
# found from the given paths in the array, skipping non existing files.
|
15
|
+
#
|
16
|
+
# The function returns `undef` if none of the given paths were found
|
3
17
|
#
|
4
18
|
# @since 4.8.0
|
5
19
|
#
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Returns a flat Array produced from its possibly deeply nested given arguments.
|
2
|
+
#
|
3
|
+
# One or more arguments of any data type can be given to this function.
|
4
|
+
# The result is always a flat array representation where any nested arrays are recursively flattened.
|
5
|
+
#
|
6
|
+
# @example Typical use of `flatten()`
|
7
|
+
#
|
8
|
+
# ```puppet
|
9
|
+
# flatten(['a', ['b', ['c']]])
|
10
|
+
# # Would return: ['a','b','c']
|
11
|
+
# ```
|
12
|
+
#
|
13
|
+
# To flatten other kinds of iterables (for example hashes, or intermediate results like from a `reverse_each`)
|
14
|
+
# first convert the result to an array using `Array($x)`, or `$x.convert_to(Array)`. See the `new` function
|
15
|
+
# for details and options when performing a conversion.
|
16
|
+
#
|
17
|
+
# @example Flattening a Hash
|
18
|
+
#
|
19
|
+
# ```puppet
|
20
|
+
# $hsh = { a => 1, b => 2}
|
21
|
+
#
|
22
|
+
# # -- without conversion
|
23
|
+
# $hsh.flatten()
|
24
|
+
# # Would return [{a => 1, b => 2}]
|
25
|
+
#
|
26
|
+
# # -- with conversion
|
27
|
+
# $hsh.convert_to(Array).flatten()
|
28
|
+
# # Would return [a,1,b,2]
|
29
|
+
#
|
30
|
+
# flatten(Array($hsh))
|
31
|
+
# # Would also return [a,1,b,2]
|
32
|
+
# ```
|
33
|
+
#
|
34
|
+
# @example Flattening and concatenating at the same time
|
35
|
+
#
|
36
|
+
# ```puppet
|
37
|
+
# $a1 = [1, [2, 3]]
|
38
|
+
# $a2 = [[4,[5,6]]
|
39
|
+
# $x = 7
|
40
|
+
# flatten($a1, $a2, $x)
|
41
|
+
# # would return [1,2,3,4,5,6,7]
|
42
|
+
# ```
|
43
|
+
#
|
44
|
+
# @example Transforming to Array if not already an Array
|
45
|
+
#
|
46
|
+
# ```puppet
|
47
|
+
# flatten(42)
|
48
|
+
# # Would return [42]
|
49
|
+
#
|
50
|
+
# flatten([42])
|
51
|
+
# # Would also return [42]
|
52
|
+
# ```
|
53
|
+
#
|
54
|
+
# @since 5.5.0 support for flattening and concatenating at the same time
|
55
|
+
#
|
56
|
+
Puppet::Functions.create_function(:flatten) do
|
57
|
+
dispatch :flatten_args do
|
58
|
+
repeated_param 'Any', :args
|
59
|
+
end
|
60
|
+
|
61
|
+
def flatten_args(*args)
|
62
|
+
args.flatten()
|
63
|
+
end
|
64
|
+
end
|
@@ -25,7 +25,7 @@ require 'hiera/puppet_function'
|
|
25
25
|
#
|
26
26
|
# @example Using `hiera`
|
27
27
|
#
|
28
|
-
#
|
28
|
+
# ```yaml
|
29
29
|
# # Assuming hiera.yaml
|
30
30
|
# # :hierarchy:
|
31
31
|
# # - web01.example.com
|
@@ -44,16 +44,16 @@ require 'hiera/puppet_function'
|
|
44
44
|
# regular:
|
45
45
|
# - "Iris Jackson"
|
46
46
|
# - "Kelly Lambert"
|
47
|
-
#
|
47
|
+
# ```
|
48
48
|
#
|
49
|
-
#
|
49
|
+
# ```puppet
|
50
50
|
# # Assuming we are not web01.example.com:
|
51
51
|
#
|
52
52
|
# $users = hiera('users', undef)
|
53
53
|
#
|
54
54
|
# # $users contains {admins => ["Edith Franklin", "Ginny Hamilton"],
|
55
55
|
# # regular => ["Iris Jackson", "Kelly Lambert"]}
|
56
|
-
#
|
56
|
+
# ```
|
57
57
|
#
|
58
58
|
# You can optionally generate the default value with a
|
59
59
|
# [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
|
@@ -61,7 +61,7 @@ require 'hiera/puppet_function'
|
|
61
61
|
#
|
62
62
|
# @example Using `hiera` with a lambda
|
63
63
|
#
|
64
|
-
#
|
64
|
+
# ```puppet
|
65
65
|
# # Assuming the same Hiera data as the previous example:
|
66
66
|
#
|
67
67
|
# $users = hiera('users') | $key | { "Key \'${key}\' not found" }
|
@@ -70,7 +70,7 @@ require 'hiera/puppet_function'
|
|
70
70
|
# # regular => ["Iris Jackson", "Kelly Lambert"]}
|
71
71
|
# # If hiera couldn't match its key, it would return the lambda result,
|
72
72
|
# # "Key 'users' not found".
|
73
|
-
#
|
73
|
+
# ```
|
74
74
|
#
|
75
75
|
# The returned value's data type depends on the types of the results. In the example
|
76
76
|
# above, Hiera matches the 'users' key and returns it as a hash.
|
@@ -24,7 +24,7 @@ require 'hiera/puppet_function'
|
|
24
24
|
#
|
25
25
|
# @example Using `hiera_array`
|
26
26
|
#
|
27
|
-
#
|
27
|
+
# ```yaml
|
28
28
|
# # Assuming hiera.yaml
|
29
29
|
# # :hierarchy:
|
30
30
|
# # - web01.example.com
|
@@ -37,13 +37,13 @@ require 'hiera/puppet_function'
|
|
37
37
|
#
|
38
38
|
# # Assuming web01.example.com.yaml:
|
39
39
|
# # users: 'abarry = admin'
|
40
|
-
#
|
40
|
+
# ```
|
41
41
|
#
|
42
|
-
#
|
42
|
+
# ```puppet
|
43
43
|
# $allusers = hiera_array('users', undef)
|
44
44
|
#
|
45
45
|
# # $allusers contains ["cdouglas = regular", "efranklin = regular", "abarry = admin"].
|
46
|
-
#
|
46
|
+
# ```
|
47
47
|
#
|
48
48
|
# You can optionally generate the default value with a
|
49
49
|
# [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
|
@@ -51,7 +51,7 @@ require 'hiera/puppet_function'
|
|
51
51
|
#
|
52
52
|
# @example Using `hiera_array` with a lambda
|
53
53
|
#
|
54
|
-
#
|
54
|
+
# ```puppet
|
55
55
|
# # Assuming the same Hiera data as the previous example:
|
56
56
|
#
|
57
57
|
# $allusers = hiera_array('users') | $key | { "Key \'${key}\' not found" }
|
@@ -59,7 +59,7 @@ require 'hiera/puppet_function'
|
|
59
59
|
# # $allusers contains ["cdouglas = regular", "efranklin = regular", "abarry = admin"].
|
60
60
|
# # If hiera_array couldn't match its key, it would return the lambda result,
|
61
61
|
# # "Key 'users' not found".
|
62
|
-
#
|
62
|
+
# ```
|
63
63
|
#
|
64
64
|
# `hiera_array` expects that all values returned will be strings or arrays. If any matched
|
65
65
|
# value is a hash, Puppet raises a type mismatch error.
|
@@ -29,7 +29,7 @@ require 'hiera/puppet_function'
|
|
29
29
|
#
|
30
30
|
# @example Using `hiera_hash`
|
31
31
|
#
|
32
|
-
#
|
32
|
+
# ```yaml
|
33
33
|
# # Assuming hiera.yaml
|
34
34
|
# # :hierarchy:
|
35
35
|
# # - web01.example.com
|
@@ -44,16 +44,16 @@ require 'hiera/puppet_function'
|
|
44
44
|
# # users:
|
45
45
|
# # administrators:
|
46
46
|
# # 'aberry': 'Amy Berry'
|
47
|
-
#
|
47
|
+
# ```
|
48
48
|
#
|
49
|
-
#
|
49
|
+
# ```puppet
|
50
50
|
# # Assuming we are not web01.example.com:
|
51
51
|
#
|
52
52
|
# $allusers = hiera_hash('users', undef)
|
53
53
|
#
|
54
54
|
# # $allusers contains {regular => {"cdouglas" => "Carrie Douglas"},
|
55
55
|
# # administrators => {"aberry" => "Amy Berry"}}
|
56
|
-
#
|
56
|
+
# ```
|
57
57
|
#
|
58
58
|
# You can optionally generate the default value with a
|
59
59
|
# [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
|
@@ -61,7 +61,7 @@ require 'hiera/puppet_function'
|
|
61
61
|
#
|
62
62
|
# @example Using `hiera_hash` with a lambda
|
63
63
|
#
|
64
|
-
#
|
64
|
+
# ```puppet
|
65
65
|
# # Assuming the same Hiera data as the previous example:
|
66
66
|
#
|
67
67
|
# $allusers = hiera_hash('users') | $key | { "Key \'${key}\' not found" }
|
@@ -70,7 +70,7 @@ require 'hiera/puppet_function'
|
|
70
70
|
# # administrators => {"aberry" => "Amy Berry"}}
|
71
71
|
# # If hiera_hash couldn't match its key, it would return the lambda result,
|
72
72
|
# # "Key 'users' not found".
|
73
|
-
#
|
73
|
+
# ```
|
74
74
|
#
|
75
75
|
# `hiera_hash` expects that all values returned will be hashes. If any of the values
|
76
76
|
# found in the data sources are strings or arrays, Puppet raises a type mismatch error.
|
@@ -11,10 +11,10 @@ require 'hiera/puppet_function'
|
|
11
11
|
#
|
12
12
|
# @example Using `lookup` and `include` instead of of the deprecated `hiera_include`
|
13
13
|
#
|
14
|
-
#
|
14
|
+
# ```puppet
|
15
15
|
# # In site.pp, outside of any node definitions and below any top-scope variables:
|
16
16
|
# lookup('classes', Array[String], 'unique').include
|
17
|
-
#
|
17
|
+
# ```
|
18
18
|
#
|
19
19
|
# The `hiera_include` function requires:
|
20
20
|
#
|
@@ -43,7 +43,7 @@ require 'hiera/puppet_function'
|
|
43
43
|
#
|
44
44
|
# @example Using `hiera_include`
|
45
45
|
#
|
46
|
-
#
|
46
|
+
# ```yaml
|
47
47
|
# # Assuming hiera.yaml
|
48
48
|
# # :hierarchy:
|
49
49
|
# # - web01.example.com
|
@@ -56,14 +56,14 @@ require 'hiera/puppet_function'
|
|
56
56
|
# # Assuming common.yaml:
|
57
57
|
# # classes:
|
58
58
|
# # - apache
|
59
|
-
#
|
59
|
+
# ```
|
60
60
|
#
|
61
|
-
#
|
61
|
+
# ```puppet
|
62
62
|
# # In site.pp, outside of any node definitions and below any top-scope variables:
|
63
63
|
# hiera_include('classes', undef)
|
64
64
|
#
|
65
65
|
# # Puppet assigns the apache and apache::mod::php classes to the web01.example.com node.
|
66
|
-
#
|
66
|
+
# ```
|
67
67
|
#
|
68
68
|
# You can optionally generate the default value with a
|
69
69
|
# [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
|
@@ -71,7 +71,7 @@ require 'hiera/puppet_function'
|
|
71
71
|
#
|
72
72
|
# @example Using `hiera_include` with a lambda
|
73
73
|
#
|
74
|
-
#
|
74
|
+
# ```puppet
|
75
75
|
# # Assuming the same Hiera data as the previous example:
|
76
76
|
#
|
77
77
|
# # In site.pp, outside of any node definitions and below any top-scope variables:
|
@@ -80,7 +80,7 @@ require 'hiera/puppet_function'
|
|
80
80
|
# # Puppet assigns the apache and apache::mod::php classes to the web01.example.com node.
|
81
81
|
# # If hiera_include couldn't match its key, it would return the lambda result,
|
82
82
|
# # "Key 'classes' not found".
|
83
|
-
#
|
83
|
+
# ```
|
84
84
|
#
|
85
85
|
# See
|
86
86
|
# [the 'Using the lookup function' documentation](https://docs.puppet.com/puppet/latest/hiera_use_function.html) for how to perform lookup of data.
|
@@ -1,5 +1,31 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# Declares one or more classes, causing the resources in them to be
|
2
|
+
# evaluated and added to the catalog. Accepts a class name, an array of class
|
3
|
+
# names, or a comma-separated list of class names.
|
4
|
+
#
|
5
|
+
# The `include` function can be used multiple times on the same class and will
|
6
|
+
# only declare a given class once. If a class declared with `include` has any
|
7
|
+
# parameters, Puppet will automatically look up values for them in Hiera, using
|
8
|
+
# `<class name>::<parameter name>` as the lookup key.
|
9
|
+
#
|
10
|
+
# Contrast this behavior with resource-like class declarations
|
11
|
+
# (`class {'name': parameter => 'value',}`), which must be used in only one place
|
12
|
+
# per class and can directly set parameters. You should avoid using both `include`
|
13
|
+
# and resource-like declarations with the same class.
|
14
|
+
#
|
15
|
+
# The `include` function does not cause classes to be contained in the class
|
16
|
+
# where they are declared. For that, see the `contain` function. It also
|
17
|
+
# does not create a dependency relationship between the declared class and the
|
18
|
+
# surrounding class; for that, see the `require` function.
|
19
|
+
#
|
20
|
+
# You must use the class's full name;
|
21
|
+
# relative names are not allowed. In addition to names in string form,
|
22
|
+
# you may also directly use `Class` and `Resource` `Type`-values that are produced by
|
23
|
+
# the resource and relationship expressions.
|
24
|
+
#
|
25
|
+
# - Since < 3.0.0
|
26
|
+
# - Since 4.0.0 support for class and resource type values, absolute names
|
27
|
+
# - Since 4.7.0 returns an `Array[Type[Class]]` of all included classes
|
28
|
+
#
|
3
29
|
Puppet::Functions.create_function(:include, Puppet::Functions::InternalFunction) do
|
4
30
|
dispatch :include do
|
5
31
|
scope_param
|
@@ -35,13 +35,13 @@
|
|
35
35
|
# For example, to evaluate an inline EPP template using a heredoc, call the
|
36
36
|
# `inline_epp` function like this:
|
37
37
|
#
|
38
|
-
#
|
38
|
+
# ```puppet
|
39
39
|
# # Outputs 'Hello given argument planet!'
|
40
40
|
# inline_epp(@(END), { x => 'given argument' })
|
41
41
|
# <%- | $x, $y = planet | -%>
|
42
42
|
# Hello <%= $x %> <%= $y %>!
|
43
43
|
# END
|
44
|
-
#
|
44
|
+
# ```
|
45
45
|
#
|
46
46
|
# @since 4.0.0
|
47
47
|
#
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Joins the values of an Array into a string with elements separated by a delimiter.
|
2
|
+
#
|
3
|
+
# Supports up to two arguments
|
4
|
+
# * **values** - first argument is required and must be an an `Array`
|
5
|
+
# * **delimiter** - second arguments is the delimiter between elements, must be a `String` if given, and defaults to an empty string.
|
6
|
+
#
|
7
|
+
# @example Typical use of `join`
|
8
|
+
#
|
9
|
+
# ```puppet
|
10
|
+
# join(['a','b','c'], ",")
|
11
|
+
# # Would result in: "a,b,c"
|
12
|
+
# ```
|
13
|
+
#
|
14
|
+
# Note that array is flattened before elements are joined, but flattening does not extend to arrays nested in hashes or other objects.
|
15
|
+
#
|
16
|
+
# @example Arrays nested in hashes are not joined
|
17
|
+
#
|
18
|
+
# ```puppet
|
19
|
+
# $a = [1,2, undef, 'hello', [x,y,z], {a => 2, b => [3, 4]}]
|
20
|
+
# notice join($a, ', ')
|
21
|
+
#
|
22
|
+
# # would result in noticing:
|
23
|
+
# # 1, 2, , hello, x, y, z, {"a"=>2, "b"=>[3, 4]}
|
24
|
+
# ```
|
25
|
+
#
|
26
|
+
# For joining iterators and other containers of elements a conversion must first be made to
|
27
|
+
# an `Array`. The reason for this is that there are many options how such a conversion should
|
28
|
+
# be made.
|
29
|
+
#
|
30
|
+
# @example Joining the result of a reverse_each converted to an array
|
31
|
+
#
|
32
|
+
# ```puppet
|
33
|
+
# [1,2,3].reverse_each.convert_to(Array).join(', ')
|
34
|
+
# # would result in: "3, 2, 1"
|
35
|
+
# ```
|
36
|
+
# @example Joining a hash
|
37
|
+
#
|
38
|
+
# ```puppet
|
39
|
+
# {a => 1, b => 2}.convert_to(Array).join(', ')
|
40
|
+
# # would result in "a, 1, b, 2"
|
41
|
+
# ```
|
42
|
+
#
|
43
|
+
# For more detailed control over the formatting (including indentations and line breaks, delimiters around arrays
|
44
|
+
# and hash entries, between key/values in hash entries, and individual formatting of values in the array)
|
45
|
+
# see the `new` function for `String` and its formatting options for `Array` and `Hash`.
|
46
|
+
#
|
47
|
+
Puppet::Functions.create_function(:join) do
|
48
|
+
dispatch :join do
|
49
|
+
param 'Array', :arg
|
50
|
+
optional_param 'String', :delimiter
|
51
|
+
end
|
52
|
+
|
53
|
+
def join(arg, delimiter = '', puppet_formatting = false)
|
54
|
+
arg.join(delimiter)
|
55
|
+
end
|
56
|
+
end
|