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.

Files changed (441) hide show
  1. data/Gemfile +3 -3
  2. data/MAINTAINERS +0 -19
  3. data/README.md +5 -5
  4. data/Rakefile +26 -0
  5. data/conf/auth.conf +5 -0
  6. data/ext/project_data.yaml +1 -0
  7. data/ext/regexp_nodes/regexp_nodes.rb +3 -4
  8. data/lib/puppet/application/apply.rb +1 -1
  9. data/lib/puppet/application/cert.rb +3 -1
  10. data/lib/puppet/application/device.rb +100 -13
  11. data/lib/puppet/application/facts.rb +5 -0
  12. data/lib/puppet/application/lookup.rb +12 -2
  13. data/lib/puppet/configurer.rb +37 -17
  14. data/lib/puppet/confine.rb +4 -1
  15. data/lib/puppet/datatypes.rb +1 -1
  16. data/lib/puppet/environments.rb +1 -1
  17. data/lib/puppet/error.rb +6 -3
  18. data/lib/puppet/external/dot.rb +0 -7
  19. data/lib/puppet/external/nagios/parser.rb +1 -1
  20. data/lib/puppet/face/config.rb +92 -10
  21. data/lib/puppet/face/epp.rb +31 -6
  22. data/lib/puppet/face/facts.rb +49 -0
  23. data/lib/puppet/face/help.rb +33 -35
  24. data/lib/puppet/face/help/action.erb +1 -1
  25. data/lib/puppet/face/help/face.erb +1 -1
  26. data/lib/puppet/face/man.rb +55 -12
  27. data/lib/puppet/face/parser.rb +30 -3
  28. data/lib/puppet/file_bucket/file.rb +0 -2
  29. data/lib/puppet/file_serving/base.rb +10 -10
  30. data/lib/puppet/forge.rb +3 -3
  31. data/lib/puppet/forge/errors.rb +3 -3
  32. data/lib/puppet/functions.rb +1 -3
  33. data/lib/puppet/functions/alert.rb +1 -1
  34. data/lib/puppet/functions/all.rb +6 -6
  35. data/lib/puppet/functions/annotate.rb +10 -10
  36. data/lib/puppet/functions/any.rb +6 -6
  37. data/lib/puppet/functions/assert_type.rb +4 -4
  38. data/lib/puppet/functions/binary_file.rb +14 -2
  39. data/lib/puppet/functions/break.rb +31 -2
  40. data/lib/puppet/functions/call.rb +4 -4
  41. data/lib/puppet/functions/contain.rb +19 -3
  42. data/lib/puppet/functions/convert_to.rb +6 -5
  43. data/lib/puppet/functions/crit.rb +1 -1
  44. data/lib/puppet/functions/debug.rb +1 -1
  45. data/lib/puppet/functions/defined.rb +11 -9
  46. data/lib/puppet/functions/dig.rb +26 -2
  47. data/lib/puppet/functions/each.rb +8 -8
  48. data/lib/puppet/functions/emerg.rb +1 -1
  49. data/lib/puppet/functions/empty.rb +79 -0
  50. data/lib/puppet/functions/err.rb +1 -1
  51. data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
  52. data/lib/puppet/functions/filter.rb +7 -7
  53. data/lib/puppet/functions/find_file.rb +15 -1
  54. data/lib/puppet/functions/flatten.rb +64 -0
  55. data/lib/puppet/functions/hiera.rb +6 -6
  56. data/lib/puppet/functions/hiera_array.rb +6 -6
  57. data/lib/puppet/functions/hiera_hash.rb +6 -6
  58. data/lib/puppet/functions/hiera_include.rb +8 -8
  59. data/lib/puppet/functions/include.rb +28 -2
  60. data/lib/puppet/functions/info.rb +1 -1
  61. data/lib/puppet/functions/inline_epp.rb +2 -2
  62. data/lib/puppet/functions/join.rb +56 -0
  63. data/lib/puppet/functions/json_data.rb +2 -2
  64. data/lib/puppet/functions/keys.rb +25 -0
  65. data/lib/puppet/functions/length.rb +44 -0
  66. data/lib/puppet/functions/lest.rb +39 -1
  67. data/lib/puppet/functions/lookup.rb +2 -1
  68. data/lib/puppet/functions/map.rb +10 -9
  69. data/lib/puppet/functions/match.rb +6 -6
  70. data/lib/puppet/functions/new.rb +995 -2
  71. data/lib/puppet/functions/next.rb +1 -1
  72. data/lib/puppet/functions/notice.rb +1 -1
  73. data/lib/puppet/functions/reduce.rb +6 -6
  74. data/lib/puppet/functions/regsubst.rb +9 -3
  75. data/lib/puppet/functions/require.rb +36 -2
  76. data/lib/puppet/functions/return.rb +1 -1
  77. data/lib/puppet/functions/reverse_each.rb +71 -2
  78. data/lib/puppet/functions/slice.rb +23 -9
  79. data/lib/puppet/functions/split.rb +12 -10
  80. data/lib/puppet/functions/step.rb +73 -1
  81. data/lib/puppet/functions/strftime.rb +176 -2
  82. data/lib/puppet/functions/then.rb +65 -2
  83. data/lib/puppet/functions/tree_each.rb +19 -19
  84. data/lib/puppet/functions/type.rb +42 -1
  85. data/lib/puppet/functions/unique.rb +13 -13
  86. data/lib/puppet/functions/unwrap.rb +8 -4
  87. data/lib/puppet/functions/values.rb +25 -0
  88. data/lib/puppet/functions/versioncmp.rb +1 -1
  89. data/lib/puppet/functions/warning.rb +1 -1
  90. data/lib/puppet/functions/with.rb +6 -4
  91. data/lib/puppet/functions/yaml_data.rb +3 -1
  92. data/lib/puppet/indirector/certificate_status/file.rb +1 -1
  93. data/lib/puppet/indirector/facts/facter.rb +1 -3
  94. data/lib/puppet/indirector/facts/rest.rb +21 -0
  95. data/lib/puppet/indirector/facts/yaml.rb +0 -4
  96. data/lib/puppet/indirector/rest.rb +2 -2
  97. data/lib/puppet/module.rb +3 -3
  98. data/lib/puppet/module/task.rb +2 -3
  99. data/lib/puppet/module_tool/applications/application.rb +4 -4
  100. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  101. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  102. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  103. data/lib/puppet/module_tool/metadata.rb +3 -3
  104. data/lib/puppet/network/authconfig.rb +1 -1
  105. data/lib/puppet/network/format_support.rb +1 -1
  106. data/lib/puppet/network/formats.rb +5 -7
  107. data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
  108. data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
  109. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  110. data/lib/puppet/network/http/error.rb +3 -3
  111. data/lib/puppet/network/resolver.rb +1 -2
  112. data/lib/puppet/parser/compiler.rb +12 -5
  113. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
  114. data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
  115. data/lib/puppet/parser/functions/new.rb +31 -46
  116. data/lib/puppet/parser/parser_factory.rb +1 -1
  117. data/lib/puppet/parser/resource.rb +1 -1
  118. data/lib/puppet/parser/type_loader.rb +11 -11
  119. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  120. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  121. data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
  122. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
  123. data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
  124. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  125. data/lib/puppet/pops/issue_reporter.rb +18 -1
  126. data/lib/puppet/pops/issues.rb +6 -3
  127. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
  128. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  129. data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
  130. data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
  131. data/lib/puppet/pops/loaders.rb +18 -7
  132. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  133. data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
  134. data/lib/puppet/pops/model/factory.rb +6 -3
  135. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  136. data/lib/puppet/pops/model/pn_transformer.rb +400 -0
  137. data/lib/puppet/pops/parser/egrammar.ra +1 -1
  138. data/lib/puppet/pops/parser/eparser.rb +1 -1
  139. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  140. data/lib/puppet/pops/parser/lexer_support.rb +3 -2
  141. data/lib/puppet/pops/parser/locator.rb +0 -2
  142. data/lib/puppet/pops/parser/pn_parser.rb +316 -0
  143. data/lib/puppet/pops/pcore.rb +17 -17
  144. data/lib/puppet/pops/pn.rb +236 -0
  145. data/lib/puppet/pops/serialization/json.rb +7 -7
  146. data/lib/puppet/pops/types/class_loader.rb +6 -3
  147. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  148. data/lib/puppet/pops/types/p_object_type.rb +3 -3
  149. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  150. data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
  151. data/lib/puppet/pops/types/ruby_generator.rb +3 -4
  152. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  153. data/lib/puppet/pops/types/type_factory.rb +0 -4
  154. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  155. data/lib/puppet/pops/types/type_parser.rb +14 -7
  156. data/lib/puppet/pops/types/types.rb +1 -1
  157. data/lib/puppet/pops/utils.rb +2 -2
  158. data/lib/puppet/pops/validation/checker4_0.rb +6 -2
  159. data/lib/puppet/provider/group/groupadd.rb +3 -1
  160. data/lib/puppet/provider/group/windows_adsi.rb +4 -7
  161. data/lib/puppet/provider/nameservice.rb +3 -3
  162. data/lib/puppet/provider/package/pacman.rb +4 -4
  163. data/lib/puppet/provider/package/pip.rb +3 -3
  164. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  165. data/lib/puppet/provider/package/pkgutil.rb +2 -2
  166. data/lib/puppet/provider/package/portage.rb +9 -9
  167. data/lib/puppet/provider/package/zypper.rb +2 -2
  168. data/lib/puppet/provider/service/base.rb +1 -1
  169. data/lib/puppet/provider/service/smf.rb +3 -2
  170. data/lib/puppet/provider/service/systemd.rb +1 -1
  171. data/lib/puppet/provider/user/useradd.rb +6 -2
  172. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  173. data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
  174. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  175. data/lib/puppet/reference/configuration.rb +2 -0
  176. data/lib/puppet/reference/type.rb +11 -11
  177. data/lib/puppet/resource.rb +1 -1
  178. data/lib/puppet/resource/capability_finder.rb +5 -5
  179. data/lib/puppet/resource/catalog.rb +6 -3
  180. data/lib/puppet/resource/status.rb +9 -2
  181. data/lib/puppet/resource/type.rb +1 -1
  182. data/lib/puppet/settings.rb +31 -19
  183. data/lib/puppet/settings/base_setting.rb +5 -0
  184. data/lib/puppet/settings/config_file.rb +1 -1
  185. data/lib/puppet/settings/ttl_setting.rb +5 -0
  186. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  187. data/lib/puppet/ssl/certificate_request.rb +0 -2
  188. data/lib/puppet/syntax_checkers/json.rb +1 -1
  189. data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
  190. data/lib/puppet/transaction/event.rb +1 -1
  191. data/lib/puppet/transaction/report.rb +18 -12
  192. data/lib/puppet/type.rb +9 -13
  193. data/lib/puppet/type/augeas.rb +2 -2
  194. data/lib/puppet/type/cron.rb +11 -6
  195. data/lib/puppet/type/exec.rb +1 -1
  196. data/lib/puppet/type/file.rb +4 -5
  197. data/lib/puppet/type/host.rb +1 -1
  198. data/lib/puppet/type/k5login.rb +30 -54
  199. data/lib/puppet/type/package.rb +3 -3
  200. data/lib/puppet/type/schedule.rb +12 -12
  201. data/lib/puppet/type/scheduled_task.rb +2 -2
  202. data/lib/puppet/type/ssh_authorized_key.rb +5 -5
  203. data/lib/puppet/type/sshkey.rb +2 -2
  204. data/lib/puppet/type/tidy.rb +1 -1
  205. data/lib/puppet/type/user.rb +1 -1
  206. data/lib/puppet/type/yumrepo.rb +26 -5
  207. data/lib/puppet/util.rb +0 -4
  208. data/lib/puppet/util/backups.rb +1 -1
  209. data/lib/puppet/util/inifile.rb +3 -4
  210. data/lib/puppet/util/json.rb +68 -0
  211. data/lib/puppet/util/json_lockfile.rb +3 -3
  212. data/lib/puppet/util/log.rb +2 -5
  213. data/lib/puppet/util/log/destinations.rb +2 -2
  214. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  215. data/lib/puppet/util/plist.rb +1 -1
  216. data/lib/puppet/util/reference.rb +1 -8
  217. data/lib/puppet/util/tagging.rb +1 -1
  218. data/lib/puppet/util/warnings.rb +0 -2
  219. data/lib/puppet/util/windows/adsi.rb +15 -18
  220. data/lib/puppet/util/windows/com.rb +2 -1
  221. data/lib/puppet/util/windows/file.rb +2 -2
  222. data/lib/puppet/util/windows/principal.rb +7 -6
  223. data/lib/puppet/util/windows/sid.rb +60 -7
  224. data/lib/puppet/util/windows/taskscheduler.rb +0 -9
  225. data/lib/puppet/version.rb +1 -1
  226. data/lib/puppet_pal.rb +53 -48
  227. data/locales/ja/puppet.po +1357 -912
  228. data/locales/puppet.pot +549 -466
  229. data/man/man5/puppet.conf.5 +103 -20
  230. data/man/man8/puppet-agent.8 +6 -2
  231. data/man/man8/puppet-apply.8 +2 -2
  232. data/man/man8/puppet-ca.8 +1 -1
  233. data/man/man8/puppet-catalog.8 +1 -1
  234. data/man/man8/puppet-cert.8 +1 -1
  235. data/man/man8/puppet-certificate.8 +1 -1
  236. data/man/man8/puppet-certificate_request.8 +1 -1
  237. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  238. data/man/man8/puppet-config.8 +35 -1
  239. data/man/man8/puppet-describe.8 +1 -1
  240. data/man/man8/puppet-device.8 +33 -11
  241. data/man/man8/puppet-doc.8 +1 -1
  242. data/man/man8/puppet-epp.8 +34 -12
  243. data/man/man8/puppet-facts.8 +50 -1
  244. data/man/man8/puppet-filebucket.8 +38 -11
  245. data/man/man8/puppet-generate.8 +1 -1
  246. data/man/man8/puppet-help.8 +1 -1
  247. data/man/man8/puppet-key.8 +1 -1
  248. data/man/man8/puppet-lookup.8 +1 -1
  249. data/man/man8/puppet-man.8 +10 -4
  250. data/man/man8/puppet-master.8 +1 -1
  251. data/man/man8/puppet-module.8 +15 -6
  252. data/man/man8/puppet-node.8 +1 -1
  253. data/man/man8/puppet-parser.8 +31 -8
  254. data/man/man8/puppet-plugin.8 +1 -1
  255. data/man/man8/puppet-report.8 +1 -1
  256. data/man/man8/puppet-resource.8 +1 -1
  257. data/man/man8/puppet-script.8 +67 -0
  258. data/man/man8/puppet-status.8 +1 -1
  259. data/man/man8/puppet.8 +3 -3
  260. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  261. data/spec/integration/application/apply_spec.rb +15 -15
  262. data/spec/integration/application/lookup_spec.rb +21 -0
  263. data/spec/integration/faces/config_spec.rb +16 -4
  264. data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
  265. data/spec/integration/parser/catalog_spec.rb +1 -1
  266. data/spec/integration/parser/collection_spec.rb +2 -2
  267. data/spec/integration/parser/compiler_spec.rb +17 -18
  268. data/spec/integration/parser/pcore_resource_spec.rb +2 -2
  269. data/spec/integration/parser/scope_spec.rb +2 -2
  270. data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
  271. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  272. data/spec/integration/ssl/key_spec.rb +1 -1
  273. data/spec/integration/transaction/report_spec.rb +3 -3
  274. data/spec/integration/transaction_spec.rb +0 -1
  275. data/spec/integration/type/file_spec.rb +10 -11
  276. data/spec/integration/type_spec.rb +1 -2
  277. data/spec/integration/util/windows/adsi_spec.rb +86 -1
  278. data/spec/integration/util/windows/principal_spec.rb +11 -2
  279. data/spec/integration/util/windows/security_spec.rb +2 -2
  280. data/spec/lib/matchers/json.rb +4 -4
  281. data/spec/lib/puppet_spec/language.rb +34 -35
  282. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  283. data/spec/shared_behaviours/file_server_terminus.rb +0 -2
  284. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  285. data/spec/spec_helper.rb +1 -1
  286. data/spec/unit/application/cert_spec.rb +21 -9
  287. data/spec/unit/application/device_spec.rb +96 -2
  288. data/spec/unit/application/face_base_spec.rb +2 -2
  289. data/spec/unit/application/lookup_spec.rb +0 -1
  290. data/spec/unit/configurer_spec.rb +14 -0
  291. data/spec/unit/confine_spec.rb +16 -0
  292. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
  293. data/spec/unit/datatypes_spec.rb +49 -0
  294. data/spec/unit/environments_spec.rb +7 -0
  295. data/spec/unit/face/config_spec.rb +116 -12
  296. data/spec/unit/face/epp_face_spec.rb +53 -2
  297. data/spec/unit/face/facts_spec.rb +53 -0
  298. data/spec/unit/face/help_spec.rb +62 -69
  299. data/spec/unit/face/man_spec.rb +26 -0
  300. data/spec/unit/face/module/list_spec.rb +0 -1
  301. data/spec/unit/face/parser_spec.rb +78 -0
  302. data/spec/unit/file_bucket/dipper_spec.rb +0 -4
  303. data/spec/unit/file_serving/content_spec.rb +0 -1
  304. data/spec/unit/file_serving/fileset_spec.rb +0 -1
  305. data/spec/unit/file_serving/metadata_spec.rb +0 -1
  306. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
  307. data/spec/unit/forge_spec.rb +1 -2
  308. data/spec/unit/functions/assert_type_spec.rb +1 -1
  309. data/spec/unit/functions/empty_spec.rb +77 -0
  310. data/spec/unit/functions/epp_spec.rb +1 -1
  311. data/spec/unit/functions/flatten_spec.rb +31 -0
  312. data/spec/unit/functions/include_spec.rb +2 -2
  313. data/spec/unit/functions/inline_epp_spec.rb +1 -1
  314. data/spec/unit/functions/join_spec.rb +33 -0
  315. data/spec/unit/functions/keys_spec.rb +31 -0
  316. data/spec/unit/functions/length_spec.rb +50 -0
  317. data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
  318. data/spec/unit/functions/lookup_spec.rb +52 -0
  319. data/spec/unit/functions/shared.rb +1 -1
  320. data/spec/unit/functions/values_spec.rb +30 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +30 -32
  323. data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
  324. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
  325. data/spec/unit/indirector/facts/rest_spec.rb +45 -0
  326. data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
  327. data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
  328. data/spec/unit/indirector/indirection_spec.rb +1 -1
  329. data/spec/unit/indirector/node/ldap_spec.rb +2 -2
  330. data/spec/unit/indirector/request_spec.rb +0 -2
  331. data/spec/unit/indirector/rest_spec.rb +2 -2
  332. data/spec/unit/indirector_spec.rb +0 -1
  333. data/spec/unit/info_service_spec.rb +1 -1
  334. data/spec/unit/interface/action_manager_spec.rb +1 -1
  335. data/spec/unit/interface/action_spec.rb +1 -1
  336. data/spec/unit/module_spec.rb +0 -5
  337. data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
  338. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
  339. data/spec/unit/network/formats_spec.rb +5 -13
  340. data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
  341. data/spec/unit/network/http/connection_spec.rb +1 -1
  342. data/spec/unit/network/http/handler_spec.rb +3 -2
  343. data/spec/unit/node/environment_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +3 -3
  345. data/spec/unit/parser/compiler_spec.rb +9 -2
  346. data/spec/unit/parser/environment_compiler_spec.rb +8 -8
  347. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  348. data/spec/unit/parser/functions/fail_spec.rb +1 -1
  349. data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
  350. data/spec/unit/parser/functions/realize_spec.rb +1 -1
  351. data/spec/unit/parser/resource_spec.rb +0 -1
  352. data/spec/unit/parser/scope_spec.rb +3 -3
  353. data/spec/unit/parser/type_loader_spec.rb +1 -1
  354. data/spec/unit/pops/adaptable_spec.rb +0 -1
  355. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
  356. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
  357. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  358. data/spec/unit/pops/factory_spec.rb +5 -5
  359. data/spec/unit/pops/issues_spec.rb +23 -8
  360. data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
  361. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  362. data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
  363. data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
  364. data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
  365. data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
  366. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
  367. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
  368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
  370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  371. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
  372. data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
  373. data/spec/unit/pops/pn_spec.rb +148 -0
  374. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  375. data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
  376. data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
  377. data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
  378. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  379. data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
  380. data/spec/unit/pops/types/string_converter_spec.rb +3 -3
  381. data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
  382. data/spec/unit/pops/validator/validator_spec.rb +3 -1
  383. data/spec/unit/property_spec.rb +2 -2
  384. data/spec/unit/provider/aixobject_spec.rb +1 -1
  385. data/spec/unit/provider/cron/crontab_spec.rb +3 -3
  386. data/spec/unit/provider/exec/posix_spec.rb +6 -6
  387. data/spec/unit/provider/group/groupadd_spec.rb +4 -4
  388. data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
  389. data/spec/unit/provider/ldap_spec.rb +0 -1
  390. data/spec/unit/provider/nameservice_spec.rb +5 -5
  391. data/spec/unit/provider/package/rpm_spec.rb +3 -4
  392. data/spec/unit/provider/package/yum_spec.rb +6 -2
  393. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  394. data/spec/unit/provider/service/base_spec.rb +2 -4
  395. data/spec/unit/provider/service/init_spec.rb +2 -2
  396. data/spec/unit/provider/service/openrc_spec.rb +2 -2
  397. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  398. data/spec/unit/provider/service/smf_spec.rb +2 -0
  399. data/spec/unit/provider/service/systemd_spec.rb +3 -3
  400. data/spec/unit/provider/service/upstart_spec.rb +7 -7
  401. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
  402. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
  403. data/spec/unit/provider/user/useradd_spec.rb +15 -9
  404. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  405. data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
  406. data/spec/unit/puppet_pal_2pec.rb +4 -5
  407. data/spec/unit/resource/catalog_spec.rb +8 -3
  408. data/spec/unit/resource/status_spec.rb +15 -4
  409. data/spec/unit/resource/type_spec.rb +2 -3
  410. data/spec/unit/settings_spec.rb +9 -4
  411. data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
  412. data/spec/unit/ssl/certificate_request_spec.rb +1 -2
  413. data/spec/unit/transaction/report_spec.rb +41 -0
  414. data/spec/unit/transaction_spec.rb +1 -1
  415. data/spec/unit/type/exec_spec.rb +7 -9
  416. data/spec/unit/type/file/selinux_spec.rb +0 -1
  417. data/spec/unit/type/file_spec.rb +4 -3
  418. data/spec/unit/type/k5login_spec.rb +79 -10
  419. data/spec/unit/type/mount_spec.rb +1 -1
  420. data/spec/unit/type/nagios_spec.rb +6 -6
  421. data/spec/unit/type/user_spec.rb +1 -1
  422. data/spec/unit/type/yumrepo_spec.rb +18 -0
  423. data/spec/unit/type/zfs_spec.rb +1 -1
  424. data/spec/unit/type_spec.rb +14 -15
  425. data/spec/unit/util/docs_spec.rb +1 -1
  426. data/spec/unit/util/execution_spec.rb +0 -1
  427. data/spec/unit/util/inifile_spec.rb +35 -4
  428. data/spec/unit/util/log/destinations_spec.rb +2 -2
  429. data/spec/unit/util/log_spec.rb +6 -5
  430. data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
  431. data/spec/unit/util/plist_spec.rb +3 -3
  432. data/spec/unit/util/selinux_spec.rb +2 -2
  433. data/spec/unit/util/tagging_spec.rb +1 -7
  434. data/spec/unit/util/windows/adsi_spec.rb +31 -27
  435. data/spec/unit/util/windows/sid_spec.rb +86 -15
  436. data/spec/unit/util_spec.rb +2 -2
  437. data/spec/watchr.rb +0 -1
  438. data/tasks/benchmark.rake +37 -0
  439. data/tasks/manpages.rake +1 -1
  440. metadata +71 -11
  441. checksums.yaml +0 -7
@@ -1,4 +1,4 @@
1
- # Make iteration continue with the next value optionally given a value for this iteration.
1
+ # Makes iteration continue with the next value, optionally with a given value for this iteration.
2
2
  # If a value is not given it defaults to `undef`
3
3
  #
4
4
  # @since 4.7.0
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level notice.
1
+ # Logs a message on the server at level `notice`.
2
2
  Puppet::Functions.create_function(:notice, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -47,7 +47,7 @@
47
47
  #
48
48
  # @example Using the `reduce` function
49
49
  #
50
- # ~~~ puppet
50
+ # ```puppet
51
51
  # # Reduce the array $data, returning the sum of all values in the array.
52
52
  # $data = [1, 2, 3]
53
53
  # $sum = $data.reduce |$memo, $value| { $memo + $value }
@@ -68,11 +68,11 @@
68
68
  # [$string, $number]
69
69
  # }
70
70
  # # $combine contains [abc, 6]
71
- # ~~~
71
+ # ```
72
72
  #
73
73
  # @example Using the `reduce` function with a start memo and two-parameter lambda
74
74
  #
75
- # ~~~ puppet
75
+ # ```puppet
76
76
  # # Reduce the array $data, returning the sum of all values in the array and starting
77
77
  # # with $memo set to an arbitrary value instead of $data's first value.
78
78
  # $data = [1, 2, 3]
@@ -92,11 +92,11 @@
92
92
  # # At the start of the lambda's first iteration, $memo contains [d, 4] and $value
93
93
  # # contains [a, 1].
94
94
  # # $combine contains [dabc, 10]
95
- # ~~~
95
+ # ```
96
96
  #
97
97
  # @example Using the `reduce` function to reduce a hash of hashes
98
98
  #
99
- # ~~~ puppet
99
+ # ```puppet
100
100
  # # Reduce a hash of hashes $data, merging defaults into the inner hashes.
101
101
  # $data = {
102
102
  # 'connection1' => {
@@ -123,7 +123,7 @@
123
123
  # # the first [key, value] tuple. The key in $data is, therefore, given by $x[0]. In
124
124
  # # subsequent rounds, $memo retains the value returned by the expression, i.e.
125
125
  # # $memo + { $x[0] => $defaults + $data[$x[0]] }.
126
- # ~~~
126
+ # ```
127
127
  #
128
128
  # @since 4.0.0
129
129
  #
@@ -1,4 +1,4 @@
1
- # Perform regexp replacement on a string or array of strings.
1
+ # Performs regexp replacement on a string or array of strings.
2
2
  #
3
3
  # @param target [String, Array[String]]
4
4
  # The string or array of strings to operate on. If an array, the replacement will be
@@ -27,10 +27,16 @@
27
27
  # @return [Array[String], String] The result of the substitution. Result type is the same as for the target parameter.
28
28
  #
29
29
  # @example Get the third octet from the node's IP address:
30
- # $i3 = regsubst($ipaddress,'^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$','\\3')
30
+ #
31
+ # ```puppet
32
+ # $i3 = regsubst($ipaddress,'^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$','\\3')
33
+ # ```
31
34
  #
32
35
  # @example Put angle brackets around each octet in the node's IP address:
33
- # $x = regsubst($ipaddress, /([0-9]+)/, '<\\1>', 'G')
36
+ #
37
+ # ```puppet
38
+ # $x = regsubst($ipaddress, /([0-9]+)/, '<\\1>', 'G')
39
+ # ```
34
40
  #
35
41
  Puppet::Functions.create_function(:regsubst) do
36
42
  dispatch :regsubst_string do
@@ -1,5 +1,39 @@
1
- # Requires the specified classes
2
- # For documentation see the 3.x function stub
1
+ # Requires the specified classes.
2
+ # Evaluate one or more classes, adding the required class as a dependency.
3
+ #
4
+ # The relationship metaparameters work well for specifying relationships
5
+ # between individual resources, but they can be clumsy for specifying
6
+ # relationships between classes. This function is a superset of the
7
+ # 'include' function, adding a class relationship so that the requiring
8
+ # class depends on the required class.
9
+ #
10
+ # Warning: using require in place of include can lead to unwanted dependency cycles.
11
+ #
12
+ # For instance the following manifest, with 'require' instead of 'include' would produce a nasty
13
+ # dependence cycle, because notify imposes a before between File[/foo] and Service[foo]:
14
+ #
15
+ # ```puppet
16
+ # class myservice {
17
+ # service { foo: ensure => running }
18
+ # }
19
+ #
20
+ # class otherstuff {
21
+ # include myservice
22
+ # file { '/foo': notify => Service[foo] }
23
+ # }
24
+ # ```
25
+ #
26
+ # Note that this function only works with clients 0.25 and later, and it will
27
+ # fail if used with earlier clients.
28
+ #
29
+ # You must use the class's full name;
30
+ # relative names are not allowed. In addition to names in string form,
31
+ # you may also directly use Class and Resource Type values that are produced when evaluating
32
+ # resource and relationship expressions.
33
+ #
34
+ # - Since 4.0.0 Class and Resource types, absolute names
35
+ # - Since 4.7.0 Returns an Array[Type[Class]] with references to the required classes
36
+ #
3
37
  Puppet::Functions.create_function(:require, Puppet::Functions::InternalFunction) do
4
38
  dispatch :require_impl do
5
39
  scope_param
@@ -1,4 +1,4 @@
1
- # Make iteration continue with the next value optionally given a value for this iteration.
1
+ # Makes iteration continue with the next value, optionally with a given value for this iteration.
2
2
  # If a value is not given it defaults to `undef`
3
3
  #
4
4
  # @since 4.7.0
@@ -1,5 +1,74 @@
1
- # Reverses the order of the elements of something that is iterable.
2
- # (Documentation in 3.x stub)
1
+ # Reverses the order of the elements of something that is iterable and optionally runs a
2
+ # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) for each
3
+ # element.
4
+ #
5
+ # This function takes one to two arguments:
6
+ #
7
+ # 1. An `Iterable` that the function will iterate over.
8
+ # 2. An optional lambda, which the function calls for each element in the first argument. It must
9
+ # request one parameter.
10
+ #
11
+ # @example Using the `reverse_each` function
12
+ #
13
+ # ```puppet
14
+ # $data.reverse_each |$parameter| { <PUPPET CODE BLOCK> }
15
+ # ```
16
+ #
17
+ # or
18
+ #
19
+ # ```puppet
20
+ # $reverse_data = $data.reverse_each
21
+ # ```
22
+ #
23
+ # or
24
+ #
25
+ # ```puppet
26
+ # reverse_each($data) |$parameter| { <PUPPET CODE BLOCK> }
27
+ # ```
28
+ #
29
+ # or
30
+ #
31
+ # ```puppet
32
+ # $reverse_data = reverse_each($data)
33
+ # ```
34
+ #
35
+ # When no second argument is present, Puppet returns an `Iterable` that represents the reverse
36
+ # order of its first argument. This allows methods on `Iterable` to be chained.
37
+ #
38
+ # When a lambda is given as the second argument, Puppet iterates the first argument in reverse
39
+ # order and passes each value in turn to the lambda, then returns `undef`.
40
+ #
41
+ # @example Using the `reverse_each` function with an array and a one-parameter lambda
42
+ #
43
+ # ```puppet
44
+ # # Puppet will log a notice for each of the three items
45
+ # # in $data in reverse order.
46
+ # $data = [1,2,3]
47
+ # $data.reverse_each |$item| { notice($item) }
48
+ # ```
49
+ #
50
+ # When no second argument is present, Puppet returns a new `Iterable` which allows it to
51
+ # be directly chained into another function that takes an `Iterable` as an argument.
52
+ #
53
+ # @example Using the `reverse_each` function chained with a `map` function.
54
+ #
55
+ # ```puppet
56
+ # # For the array $data, return an array containing each
57
+ # # value multiplied by 10 in reverse order
58
+ # $data = [1,2,3]
59
+ # $transformed_data = $data.reverse_each.map |$item| { $item * 10 }
60
+ # # $transformed_data is set to [30,20,10]
61
+ # ```
62
+ #
63
+ # @example Using `reverse_each` function chained with a `map` in alternative syntax
64
+ #
65
+ # ```puppet
66
+ # # For the array $data, return an array containing each
67
+ # # value multiplied by 10 in reverse order
68
+ # $data = [1,2,3]
69
+ # $transformed_data = map(reverse_each($data)) |$item| { $item * 10 }
70
+ # # $transformed_data is set to [30,20,10]
71
+ # ```
3
72
  #
4
73
  # @since 4.4.0
5
74
  #
@@ -1,24 +1,34 @@
1
+ # Slices an array or hash into pieces of a given size.
2
+ #
1
3
  # This function takes two mandatory arguments: the first should be an array or hash, and the second specifies
2
4
  # the number of elements to include in each slice.
3
5
  #
4
6
  # When the first argument is a hash, each key value pair is counted as one. For example, a slice size of 2 will produce
5
7
  # an array of two arrays with key, and value.
6
8
  #
7
- # $a.slice(2) |$entry| { notice "first ${$entry[0]}, second ${$entry[1]}" }
8
- # $a.slice(2) |$first, $second| { notice "first ${first}, second ${second}" }
9
+ # @example Slicing a Hash
9
10
  #
11
+ # ```puppet
12
+ # $a.slice(2) |$entry| { notice "first ${$entry[0]}, second ${$entry[1]}" }
13
+ # $a.slice(2) |$first, $second| { notice "first ${first}, second ${second}" }
14
+ # ```
10
15
  # The function produces a concatenated result of the slices.
11
16
  #
12
- # slice([1,2,3,4,5,6], 2) # produces [[1,2], [3,4], [5,6]]
13
- # slice(Integer[1,6], 2) # produces [[1,2], [3,4], [5,6]]
14
- # slice(4,2) # produces [[0,1], [2,3]]
15
- # slice('hello',2) # produces [[h, e], [l, l], [o]]
17
+ # @example Slicing an Array
16
18
  #
19
+ # ```puppet
20
+ # slice([1,2,3,4,5,6], 2) # produces [[1,2], [3,4], [5,6]]
21
+ # slice(Integer[1,6], 2) # produces [[1,2], [3,4], [5,6]]
22
+ # slice(4,2) # produces [[0,1], [2,3]]
23
+ # slice('hello',2) # produces [[h, e], [l, l], [o]]
24
+ # ```
17
25
  #
18
- # You can also optionally pass a lambda to slice.
26
+ # @example Passing a lambda to a slice (optional)
19
27
  #
20
- # $a.slice($n) |$x| { ... }
21
- # slice($a) |$x| { ... }
28
+ # ```puppet
29
+ # $a.slice($n) |$x| { ... }
30
+ # slice($a) |$x| { ... }
31
+ # ```
22
32
  #
23
33
  # The lambda should have either one parameter (receiving an array with the slice), or the same number
24
34
  # of parameters as specified by the slice size (each parameter receiving its part of the slice).
@@ -26,7 +36,11 @@
26
36
  # elements. If the lambda has multiple parameters, excess parameters are set to undef for an array, or
27
37
  # to empty arrays for a hash.
28
38
  #
39
+ # @example Getting individual values of a slice
40
+ #
41
+ # ```puppet
29
42
  # $a.slice(2) |$first, $second| { ... }
43
+ # ```
30
44
  #
31
45
  # @since 4.0.0
32
46
  #
@@ -1,19 +1,21 @@
1
- # Split a string variable into an array using the specified pattern.
1
+ # Splits a string into an array using a given pattern.
2
2
  # The pattern can be a string, regexp or regexp type.
3
3
  #
4
- # @example
4
+ # @example Splitting a String value
5
5
  #
6
- # $string = 'v1.v2:v3.v4'
7
- # $array_var1 = split($string, /:/)
8
- # $array_var2 = split($string, '[.]')
9
- # $array_var3 = split($string, Regexp['[.:]'])
6
+ # ```puppet
7
+ # $string = 'v1.v2:v3.v4'
8
+ # $array_var1 = split($string, /:/)
9
+ # $array_var2 = split($string, '[.]')
10
+ # $array_var3 = split($string, Regexp['[.:]'])
10
11
  #
11
- # `$array_var1` now holds the result `['v1.v2', 'v3.v4']`,
12
- # while `$array_var2` holds `['v1', 'v2:v3', 'v4']`, and
13
- # `$array_var3` holds `['v1', 'v2', 'v3', 'v4']`.
12
+ # #`$array_var1` now holds the result `['v1.v2', 'v3.v4']`,
13
+ # # while `$array_var2` holds `['v1', 'v2:v3', 'v4']`, and
14
+ # # `$array_var3` holds `['v1', 'v2', 'v3', 'v4']`.
15
+ # ```
14
16
  #
15
17
  # Note that in the second example, we split on a literal string that contains
16
- # a regexp meta-character (.), which must be escaped. A simple
18
+ # a regexp meta-character (`.`), which must be escaped. A simple
17
19
  # way to do that for a single character is to enclose it in square
18
20
  # brackets; a backslash will also escape a single character.
19
21
  #
@@ -1,4 +1,76 @@
1
- # (Documentation in 3.x stub)
1
+ # Provides stepping with given interval over elements in an iterable and optionally runs a
2
+ # [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) for each
3
+ # element.
4
+ #
5
+ # This function takes two to three arguments:
6
+ #
7
+ # 1. An 'Iterable' that the function will iterate over.
8
+ # 2. An `Integer` step factor. This must be a positive integer.
9
+ # 3. An optional lambda, which the function calls for each element in the interval. It must
10
+ # request one parameter.
11
+ #
12
+ # @example Using the `step` function
13
+ #
14
+ # ```puppet
15
+ # $data.step(<n>) |$parameter| { <PUPPET CODE BLOCK> }
16
+ # ```
17
+ #
18
+ # or
19
+ #
20
+ # ```puppet
21
+ # $stepped_data = $data.step(<n>)
22
+ # ```
23
+ #
24
+ # or
25
+ #
26
+ # ```puppet
27
+ # step($data, <n>) |$parameter| { <PUPPET CODE BLOCK> }
28
+ # ```
29
+ #
30
+ # or
31
+ #
32
+ # ```puppet
33
+ # $stepped_data = step($data, <n>)
34
+ # ```
35
+ #
36
+ # When no block is given, Puppet returns an `Iterable` that yields the first element and every nth successor
37
+ # element, from its first argument. This allows functions on iterables to be chained.
38
+ # When a block is given, Puppet iterates and calls the block with the first element and then with
39
+ # every nth successor element. It then returns `undef`.
40
+ #
41
+ # @example Using the `step` function with an array, a step factor, and a one-parameter block
42
+ #
43
+ # ```puppet
44
+ # # For the array $data, call a block with the first element and then with each 3rd successor element
45
+ # $data = [1,2,3,4,5,6,7,8]
46
+ # $data.step(3) |$item| {
47
+ # notice($item)
48
+ # }
49
+ # # Puppet notices the values '1', '4', '7'.
50
+ # ```
51
+
52
+ # When no block is given, Puppet returns a new `Iterable` which allows it to be directly chained into
53
+ # another function that takes an `Iterable` as an argument.
54
+ #
55
+ # @example Using the `step` function chained with a `map` function.
56
+ #
57
+ # ```puppet
58
+ # # For the array $data, return an array, set to the first element and each 5th successor element, in reverse
59
+ # # order multiplied by 10
60
+ # $data = Integer[0,20]
61
+ # $transformed_data = $data.step(5).map |$item| { $item * 10 }
62
+ # $transformed_data contains [0,50,100,150,200]
63
+ # ```
64
+ #
65
+ # @example The same example using `step` function chained with a `map` in alternative syntax
66
+ #
67
+ # ```puppet
68
+ # # For the array $data, return an array, set to the first and each 5th
69
+ # # successor, in reverse order, multiplied by 10
70
+ # $data = Integer[0,20]
71
+ # $transformed_data = map(step($data, 5)) |$item| { $item * 10 }
72
+ # $transformed_data contains [0,50,100,150,200]
73
+ # ```
2
74
  #
3
75
  # @since 4.4.0
4
76
  #
@@ -1,7 +1,181 @@
1
- # (Documentation in 3.x stub)
1
+ # Formats timestamp or timespan according to the directives in the given format string. The directives begins with a percent (%) character.
2
+ # Any text not listed as a directive will be passed through to the output string.
2
3
  #
3
- # @since 4.8.0
4
+ # A third optional timezone argument can be provided. The first argument will then be formatted to represent a local time in that
5
+ # timezone. The timezone can be any timezone that is recognized when using the '%z' or '%Z' formats, or the word 'current', in which
6
+ # case the current timezone of the evaluating process will be used. The timezone argument is case insensitive.
4
7
  #
8
+ # The default timezone, when no argument is provided, or when using the keyword `default`, is 'UTC'.
9
+ #
10
+ # The directive consists of a percent (%) character, zero or more flags, optional minimum field width and
11
+ # a conversion specifier as follows:
12
+ #
13
+ # ```
14
+ # %[Flags][Width]Conversion
15
+ # ```
16
+ #
17
+ # ### Flags that controls padding
18
+ #
19
+ # | Flag | Meaning
20
+ # | ---- | ---------------
21
+ # | - | Don't pad numerical output
22
+ # | _ | Use spaces for padding
23
+ # | 0 | Use zeros for padding
24
+ #
25
+ # ### `Timestamp` specific flags
26
+ #
27
+ # | Flag | Meaning
28
+ # | ---- | ---------------
29
+ # | # | Change case
30
+ # | ^ | Use uppercase
31
+ # | : | Use colons for %z
32
+ #
33
+ # ### Format directives applicable to `Timestamp` (names and padding can be altered using flags):
34
+ #
35
+ # **Date (Year, Month, Day):**
36
+ #
37
+ # | Format | Meaning |
38
+ # | ------ | ------- |
39
+ # | Y | Year with century, zero-padded to at least 4 digits |
40
+ # | C | year / 100 (rounded down such as 20 in 2009) |
41
+ # | y | year % 100 (00..99) |
42
+ # | m | Month of the year, zero-padded (01..12) |
43
+ # | B | The full month name ("January") |
44
+ # | b | The abbreviated month name ("Jan") |
45
+ # | h | Equivalent to %b |
46
+ # | d | Day of the month, zero-padded (01..31) |
47
+ # | e | Day of the month, blank-padded ( 1..31) |
48
+ # | j | Day of the year (001..366) |
49
+ #
50
+ # **Time (Hour, Minute, Second, Subsecond):**
51
+ #
52
+ # | Format | Meaning |
53
+ # | ------ | ------- |
54
+ # | H | Hour of the day, 24-hour clock, zero-padded (00..23) |
55
+ # | k | Hour of the day, 24-hour clock, blank-padded ( 0..23) |
56
+ # | I | Hour of the day, 12-hour clock, zero-padded (01..12) |
57
+ # | l | Hour of the day, 12-hour clock, blank-padded ( 1..12) |
58
+ # | P | Meridian indicator, lowercase ("am" or "pm") |
59
+ # | p | Meridian indicator, uppercase ("AM" or "PM") |
60
+ # | M | Minute of the hour (00..59) |
61
+ # | S | Second of the minute (00..60) |
62
+ # | L | Millisecond of the second (000..999). Digits under millisecond are truncated to not produce 1000 |
63
+ # | N | Fractional seconds digits, default is 9 digits (nanosecond). Digits under a specified width are truncated to avoid carry up |
64
+ #
65
+ # **Time (Hour, Minute, Second, Subsecond):**
66
+ #
67
+ # | Format | Meaning |
68
+ # | ------ | ------- |
69
+ # | z | Time zone as hour and minute offset from UTC (e.g. +0900) |
70
+ # | :z | hour and minute offset from UTC with a colon (e.g. +09:00) |
71
+ # | ::z | hour, minute and second offset from UTC (e.g. +09:00:00) |
72
+ # | Z | Abbreviated time zone name or similar information. (OS dependent) |
73
+ #
74
+ # **Weekday:**
75
+ #
76
+ # | Format | Meaning |
77
+ # | ------ | ------- |
78
+ # | A | The full weekday name ("Sunday") |
79
+ # | a | The abbreviated name ("Sun") |
80
+ # | u | Day of the week (Monday is 1, 1..7) |
81
+ # | w | Day of the week (Sunday is 0, 0..6) |
82
+ #
83
+ # **ISO 8601 week-based year and week number:**
84
+ #
85
+ # The first week of YYYY starts with a Monday and includes YYYY-01-04.
86
+ # The days in the year before the first week are in the last week of
87
+ # the previous year.
88
+ #
89
+ # | Format | Meaning |
90
+ # | ------ | ------- |
91
+ # | G | The week-based year |
92
+ # | g | The last 2 digits of the week-based year (00..99) |
93
+ # | V | Week number of the week-based year (01..53) |
94
+ #
95
+ # **Week number:**
96
+ #
97
+ # The first week of YYYY that starts with a Sunday or Monday (according to %U
98
+ # or %W). The days in the year before the first week are in week 0.
99
+ #
100
+ # | Format | Meaning |
101
+ # | ------ | ------- |
102
+ # | U | Week number of the year. The week starts with Sunday. (00..53) |
103
+ # | W | Week number of the year. The week starts with Monday. (00..53) |
104
+ #
105
+ # **Seconds since the Epoch:**
106
+ #
107
+ # | Format | Meaning |
108
+ # | s | Number of seconds since 1970-01-01 00:00:00 UTC. |
109
+ #
110
+ # **Literal string:**
111
+ #
112
+ # | Format | Meaning |
113
+ # | ------ | ------- |
114
+ # | n | Newline character (\n) |
115
+ # | t | Tab character (\t) |
116
+ # | % | Literal "%" character |
117
+ #
118
+ # **Combination:**
119
+ #
120
+ # | Format | Meaning |
121
+ # | ------ | ------- |
122
+ # | c | date and time (%a %b %e %T %Y) |
123
+ # | D | Date (%m/%d/%y) |
124
+ # | F | The ISO 8601 date format (%Y-%m-%d) |
125
+ # | v | VMS date (%e-%^b-%4Y) |
126
+ # | x | Same as %D |
127
+ # | X | Same as %T |
128
+ # | r | 12-hour time (%I:%M:%S %p) |
129
+ # | R | 24-hour time (%H:%M) |
130
+ # | T | 24-hour time (%H:%M:%S) |
131
+ #
132
+ # @example Using `strftime` with a `Timestamp`:
133
+ #
134
+ # ```puppet
135
+ # $timestamp = Timestamp('2016-08-24T12:13:14')
136
+ #
137
+ # # Notice the timestamp using a format that notices the ISO 8601 date format
138
+ # notice($timestamp.strftime('%F')) # outputs '2016-08-24'
139
+ #
140
+ # # Notice the timestamp using a format that notices weekday, month, day, time (as UTC), and year
141
+ # notice($timestamp.strftime('%c')) # outputs 'Wed Aug 24 12:13:14 2016'
142
+ #
143
+ # # Notice the timestamp using a specific timezone
144
+ # notice($timestamp.strftime('%F %T %z', 'PST')) # outputs '2016-08-24 04:13:14 -0800'
145
+ #
146
+ # # Notice the timestamp using timezone that is current for the evaluating process
147
+ # notice($timestamp.strftime('%F %T', 'current')) # outputs the timestamp using the timezone for the current process
148
+ # ```
149
+ #
150
+ # ### Format directives applicable to `Timespan`:
151
+ #
152
+ # | Format | Meaning |
153
+ # | ------ | ------- |
154
+ # | D | Number of Days |
155
+ # | H | Hour of the day, 24-hour clock |
156
+ # | M | Minute of the hour (00..59) |
157
+ # | S | Second of the minute (00..59) |
158
+ # | L | Millisecond of the second (000..999). Digits under millisecond are truncated to not produce 1000. |
159
+ # | N | Fractional seconds digits, default is 9 digits (nanosecond). Digits under a specified length are truncated to avoid carry up |
160
+ #
161
+ # The format directive that represents the highest magnitude in the format will be allowed to overflow.
162
+ # I.e. if no "%D" is used but a "%H" is present, then the hours will be more than 23 in case the
163
+ # timespan reflects more than a day.
164
+ #
165
+ # @example Using `strftime` with a Timespan and a format
166
+ #
167
+ # ```puppet
168
+ # $duration = Timespan({ hours => 3, minutes => 20, seconds => 30 })
169
+ #
170
+ # # Notice the duration using a format that outputs <hours>:<minutes>:<seconds>
171
+ # notice($duration.strftime('%H:%M:%S')) # outputs '03:20:30'
172
+ #
173
+ # # Notice the duration using a format that outputs <minutes>:<seconds>
174
+ # notice($duration.strftime('%M:%S')) # outputs '200:30'
175
+ # ```
176
+ #
177
+ # - Since 4.8.0
178
+ #
5
179
  Puppet::Functions.create_function(:strftime) do
6
180
  dispatch :format_timespan do
7
181
  param 'Timespan', :time_object