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
@@ -86,4 +86,4 @@ undocumented option
86
86
  TERMINI: <%= face.class.terminus_classes(face.indirection.name).join(", ") %>
87
87
 
88
88
  <% end -%>
89
- See 'puppet man <%= face.name %>' or 'man puppet-<%= face.name %>' for full help.
89
+ See 'puppet help <%= face.name %>' or 'man puppet-<%= face.name %>' for full help.
@@ -111,4 +111,4 @@ end -%>
111
111
  TERMINI: <%= face.class.terminus_classes(face.indirection.name).join(", ") %>
112
112
 
113
113
  <% end -%>
114
- See 'puppet man <%= face.name %>' or 'man puppet-<%= face.name %>' for full help.
114
+ See 'puppet help <%= face.name %>' or 'man puppet-<%= face.name %>' for full help.
@@ -10,8 +10,10 @@ Puppet::Face.define(:man, '0.0.1') do
10
10
  summary _("Display Puppet manual pages.")
11
11
 
12
12
  description <<-EOT
13
- This subcommand displays manual pages for all Puppet subcommands. If the
14
- `ronn` gem (<https://github.com/rtomayko/ronn/>) is installed on your
13
+ Please use the command 'puppet help <subcommand>' or the system manpage system
14
+ 'man puppet-<subcommand>' to display information about Puppet subcommands. The
15
+ deprecated man subcommand displays manual pages for all Puppet subcommands. If
16
+ the `ronn` gem (<https://github.com/rtomayko/ronn/>) is installed on your
15
17
  system, puppet man will display fully-formatted man pages. If `ronn` is not
16
18
  available, puppet man will display the raw (but human-readable) source text
17
19
  in a pager.
@@ -33,18 +35,40 @@ Puppet::Face.define(:man, '0.0.1') do
33
35
  text (e.g. for use in a pipeline), call this action with '--render-as s'.
34
36
  EOT
35
37
  examples <<-'EOT'
36
- View the manual page for a subcommand:
38
+ View the installed manual page for the subcommand 'config':
37
39
 
38
- $ puppet man facts
40
+ $ man puppet-config
41
+
42
+ (Deprecated) View the manual page for the subcommand 'config':
43
+
44
+ $ puppet man config
39
45
  EOT
40
46
 
41
47
  default
42
- when_invoked do |name, options|
43
- if legacy_applications.include? name then
44
- return Puppet::Application[name].help
48
+ when_invoked do |*args|
49
+ # 'args' is an array of the subcommand and arguments from the command line and an options hash
50
+ # [<arg1>, ..., {options}]
51
+ _options = args.pop
52
+
53
+ unless valid_command_line?(args)
54
+ print_man_help
55
+ #TRANSLATORS 'puppet man' is a specific command line and should not be translated
56
+ raise ArgumentError, _("The 'puppet man' command takes a single subcommand to review the subcommand's manpage")
45
57
  end
46
58
 
47
- face = Puppet::Face[name.to_sym, :current]
59
+ manpage = args.first
60
+ if default_case?(manpage)
61
+ print_man_help
62
+ return nil
63
+ end
64
+
65
+ if legacy_applications.include?(manpage)
66
+ return Puppet::Application[manpage].help
67
+ end
68
+
69
+ # set 'face' as it's used in the erb processing.
70
+ face = Puppet::Face[manpage.to_sym, :current]
71
+ _face = face # suppress the unused variable warning
48
72
 
49
73
  file = (Pathname(__FILE__).dirname + "help" + 'man.erb')
50
74
  erb = ERB.new(file.read, nil, '-')
@@ -55,7 +79,6 @@ Puppet::Face.define(:man, '0.0.1') do
55
79
  return erb.result(binding)
56
80
  end
57
81
 
58
-
59
82
  when_rendering :console do |text|
60
83
  # OK, if we have Ronn on the path we can delegate to it and override the
61
84
  # normal output process. Otherwise delegate to a pager on the raw text,
@@ -72,16 +95,16 @@ Puppet::Face.define(:man, '0.0.1') do
72
95
  pager = [ENV['MANPAGER'], ENV['PAGER'], 'less', 'most', 'more'].
73
96
  detect {|x| x and x.length > 0 and Puppet::Util.which(x) }
74
97
 
75
- if ronn then
98
+ if ronn
76
99
  # ronn is a stupid about pager selection, we can be smarter. :)
77
- if pager then ENV['PAGER'] = pager end
100
+ ENV['PAGER'] = pager if pager
78
101
 
79
102
  args = "--man --manual='Puppet Manual' --organization='Puppet Inc., LLC'"
80
103
  # manual pages could contain UTF-8 text
81
104
  IO.popen("#{ronn} #{args}", 'w:UTF-8') do |fh| fh.write text end
82
105
 
83
106
  '' # suppress local output, neh?
84
- elsif pager then
107
+ elsif pager
85
108
  # manual pages could contain UTF-8 text
86
109
  IO.popen(pager, 'w:UTF-8') do |fh| fh.write text end
87
110
  ''
@@ -91,6 +114,24 @@ Puppet::Face.define(:man, '0.0.1') do
91
114
  end
92
115
  end
93
116
 
117
+ def valid_command_line?(args)
118
+ # not too many arguments
119
+ # This allows the command line case of "puppet man man man" to not throw an error because face_based eats
120
+ # one of the "man"'s, which means this command line ends up looking like this in the code: 'manface.man("man")'
121
+ # However when we generate manpages, we do the same call. So we have to allow it and generate the real manpage.
122
+ args.length <= 1
123
+ end
124
+
125
+ # by default, if you ask for the man manpage "puppet man man" face_base removes the "man" from the args that we
126
+ # are passed, so we get nil instead
127
+ def default_case?(manpage)
128
+ manpage.nil?
129
+ end
130
+
131
+ def print_man_help
132
+ puts Puppet::Face[:help, :current].help(:man)
133
+ end
134
+
94
135
  def legacy_applications
95
136
  # The list of applications, less those that are duplicated as a face.
96
137
  Puppet::Application.available_application_names.reject do |appname|
@@ -99,4 +140,6 @@ Puppet::Face.define(:man, '0.0.1') do
99
140
  %w{face_base indirection_base}.include? appname
100
141
  end
101
142
  end
143
+
144
+ deprecate
102
145
  end
@@ -64,12 +64,20 @@ Puppet::Face.define(:parser, '0.0.1') do
64
64
 
65
65
  action (:dump) do
66
66
  summary _("Outputs a dump of the internal parse tree for debugging")
67
- arguments "-e " + _("<source>| [<manifest> ...] ")
67
+ arguments "[--format <old|pn|json>] [--pretty] { -e <source> | [<templates> ...] } "
68
68
  returns _("A dump of the resulting AST model unless there are syntax or validation errors.")
69
69
  description <<-'EOT'
70
70
  This action parses and validates the Puppet DSL syntax without compiling a catalog
71
71
  or syncing any resources.
72
72
 
73
+ The output format can be controlled using the --format <old|pn|json> where:
74
+ * 'old' is the default, but now deprecated format which is not API.
75
+ * 'pn' is the Puppet Extended S-Expression Notation.
76
+ * 'json' outputs the same graph as 'pn' but with JSON syntax.
77
+
78
+ The output will be "pretty printed" when the option --pretty is given together with --format 'pn' or 'json'.
79
+ This option has no effect on the 'old' format.
80
+
73
81
  The command accepts one or more manifests (.pp) files, or an -e followed by the puppet
74
82
  source text.
75
83
  If no arguments are given, the stdin is read (unless it is attached to a terminal)
@@ -87,6 +95,14 @@ Puppet::Face.define(:parser, '0.0.1') do
87
95
  summary _("Whether or not to validate the parsed result, if no-validate only syntax errors are reported")
88
96
  end
89
97
 
98
+ option('--format ' + _('<old, pn, or json>')) do
99
+ summary _("Get result in 'old' (deprecated format), 'pn' (new format), or 'json' (new format in JSON).")
100
+ end
101
+
102
+ option('--pretty') do
103
+ summary _('Pretty print output. Only applicable together with --format pn or json')
104
+ end
105
+
90
106
  when_invoked do |*args|
91
107
  require 'puppet/pops'
92
108
  options = args.pop
@@ -120,7 +136,6 @@ Puppet::Face.define(:parser, '0.0.1') do
120
136
 
121
137
  def dump_parse(source, filename, options, show_filename = true)
122
138
  output = ""
123
- dumper = Puppet::Pops::Model::ModelTreeDumper.new
124
139
  evaluating_parser = Puppet::Pops::Parser::EvaluatingParser.new
125
140
  begin
126
141
  if options[:validate]
@@ -132,7 +147,19 @@ Puppet::Face.define(:parser, '0.0.1') do
132
147
  if show_filename
133
148
  output << "--- #{filename}"
134
149
  end
135
- output << dumper.dump(parse_result) << "\n"
150
+ fmt = options[:format]
151
+ if fmt.nil? || fmt == 'old'
152
+ output << Puppet::Pops::Model::ModelTreeDumper.new.dump(parse_result) << "\n"
153
+ else
154
+ require 'puppet/pops/pn'
155
+ pn = Puppet::Pops::Model::PNTransformer.transform(parse_result)
156
+ case fmt
157
+ when 'json'
158
+ options[:pretty] ? JSON.pretty_unparse(pn.to_data) : JSON.dump(pn.to_data)
159
+ else
160
+ pn.format(options[:pretty] ? Puppet::Pops::PN::Indent.new(' ') : nil, output)
161
+ end
162
+ end
136
163
  rescue Puppet::ParseError => detail
137
164
  if show_filename
138
165
  Puppet.err("--- #{filename}")
@@ -74,8 +74,6 @@ class Puppet::FileBucket::File
74
74
  self.new(contents)
75
75
  end
76
76
 
77
- private
78
-
79
77
  class StringContents
80
78
  def initialize(content)
81
79
  @contents = content;
@@ -22,17 +22,17 @@ class Puppet::FileServing::Base
22
22
  # Return the full path to our file. Fails if there's no path set.
23
23
  def full_path
24
24
  if relative_path.nil? or relative_path == "" or relative_path == "."
25
- full_path = path
26
- else
27
- full_path = File.join(path, relative_path)
28
- end
25
+ full_path = path
26
+ else
27
+ full_path = File.join(path, relative_path)
28
+ end
29
29
 
30
- if Puppet.features.microsoft_windows?
31
- # Replace multiple slashes as long as they aren't at the beginning of a filename
32
- full_path.gsub(%r{(./)/+}, '\1')
33
- else
34
- full_path.gsub(%r{//+}, '/')
35
- end
30
+ if Puppet.features.microsoft_windows?
31
+ # Replace multiple slashes as long as they aren't at the beginning of a filename
32
+ full_path.gsub(%r{(./)/+}, '\1')
33
+ else
34
+ full_path.gsub(%r{//+}, '/')
35
+ end
36
36
  end
37
37
 
38
38
  def initialize(path, options = {})
@@ -5,7 +5,7 @@ require 'net/http'
5
5
  require 'tempfile'
6
6
  require 'uri'
7
7
  require 'pathname'
8
- require 'json'
8
+ require 'puppet/util/json'
9
9
  require 'semantic_puppet'
10
10
 
11
11
  class Puppet::Forge < SemanticPuppet::Dependency::Source
@@ -64,7 +64,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source
64
64
  response = make_http_request(uri)
65
65
 
66
66
  if response.code == '200'
67
- result = JSON.parse(response.body)
67
+ result = Puppet::Util::Json.load(response.body)
68
68
  uri = decode_uri(result['pagination']['next'])
69
69
  matches.concat result['results']
70
70
  else
@@ -101,7 +101,7 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source
101
101
  response = make_http_request(uri)
102
102
 
103
103
  if response.code == '200'
104
- response = JSON.parse(response.body)
104
+ response = Puppet::Util::Json.load(response.body)
105
105
  else
106
106
  raise ResponseError.new(:uri => URI.parse(@host).merge(uri), :response => response)
107
107
  end
@@ -1,4 +1,4 @@
1
- require 'json'
1
+ require 'puppet/util/json'
2
2
  require 'puppet/error'
3
3
  require 'puppet/forge'
4
4
 
@@ -82,11 +82,11 @@ module Puppet::Forge::Errors
82
82
  @response = "#{response.code} #{response.message.strip}"
83
83
 
84
84
  begin
85
- body = JSON.parse(response.body)
85
+ body = Puppet::Util::Json.load(response.body)
86
86
  if body['message']
87
87
  @message ||= body['message'].strip
88
88
  end
89
- rescue JSON::ParserError
89
+ rescue Puppet::Util::Json::ParseError
90
90
  end
91
91
 
92
92
  message = if @message
@@ -564,7 +564,7 @@ module Puppet::Functions
564
564
  @block_name = nil
565
565
  @return_type = nil
566
566
  @argument_mismatch_hander = argument_mismatch_handler
567
- self.instance_eval &block
567
+ self.instance_eval(&block)
568
568
  callable_t = create_callable(@types, @block_type, @return_type, @min, @max)
569
569
  @dispatcher.add(Puppet::Pops::Functions::Dispatch.new(callable_t, meth_name, @names, @max == :default, @block_name, @injections, @weaving, @argument_mismatch_hander))
570
570
  end
@@ -650,8 +650,6 @@ module Puppet::Functions
650
650
  end
651
651
  end
652
652
 
653
- private
654
-
655
653
  # @note WARNING: This style of creating functions is not public. It is a system
656
654
  # under development that will be used for creating "system" functions.
657
655
  #
@@ -1,4 +1,4 @@
1
- # Log a message on the server at level alert.
1
+ # Logs a message on the server at level `alert`.
2
2
  Puppet::Functions.create_function(:alert, Puppet::Functions::InternalFunction) do
3
3
  # @param values The values to log.
4
4
  # @return [Undef]
@@ -18,11 +18,11 @@
18
18
  #
19
19
  # @example Using the `all` function with an Array and a one-parameter lambda
20
20
  #
21
- # ~~~ puppet
21
+ # ```puppet
22
22
  # # For the array $data, run a lambda that checks that all values are multiples of 10
23
23
  # $data = [10, 20, 30]
24
24
  # notice $data.all |$item| { $item % 10 == 0 }
25
- # ~~~
25
+ # ```
26
26
  #
27
27
  # Would notice `true`.
28
28
  #
@@ -31,11 +31,11 @@
31
31
  #
32
32
  # @example Using the `all` function with a `Hash` and a one-parameter lambda
33
33
  #
34
- # ~~~ puppet
34
+ # ```puppet
35
35
  # # For the hash $data, run a lambda using each item as a key-value array
36
36
  # $data = { 'a_0'=> 10, 'b_1' => 20 }
37
37
  # notice $data.all |$item| { $item[1] % 10 == 0 }
38
- # ~~~
38
+ # ```
39
39
  #
40
40
  # Would notice `true` if all values in the hash are multiples of 10.
41
41
  #
@@ -45,11 +45,11 @@
45
45
  #
46
46
  # @example Using the `all` function with a hash and a two-parameter lambda
47
47
  #
48
- # ~~~ puppet
48
+ # ```puppet
49
49
  # # Check that all values are a multiple of 10 and keys start with 'abc'
50
50
  # $data = {abc_123 => 10, abc_42 => 20, abc_blue => 30}
51
51
  # notice $data.all |$key, $value| { $value % 10 == 0 and $key =~ /^abc/ }
52
- # ~~~
52
+ # ```
53
53
  #
54
54
  # Would notice true.
55
55
  #
@@ -5,11 +5,11 @@
5
5
  #
6
6
  # @example Using `annotate` with two arguments
7
7
  #
8
- # ~~~ puppet
8
+ # ```puppet
9
9
  # $annotation = Mod::NickNameAdapter.annotate(o)
10
10
  #
11
11
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o)
12
- # ~~~
12
+ # ```
13
13
  #
14
14
  # With three arguments, an `Annotation` type, an object, and a block, the function returns the
15
15
  # annotation for the object of the given type, or annotates it with a new annotation initialized
@@ -18,11 +18,11 @@
18
18
  #
19
19
  # @example Using `annotate` with two arguments and a block
20
20
  #
21
- # ~~~ puppet
21
+ # ```puppet
22
22
  # $annotation = Mod::NickNameAdapter.annotate(o) || { { 'nick_name' => 'Buddy' } }
23
23
  #
24
24
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o) || { { 'nick_name' => 'Buddy' } }
25
- # ~~~
25
+ # ```
26
26
  #
27
27
  # With three arguments, an `Annotation` type, an object, and an `Hash`, the function will annotate
28
28
  # the given object with a new annotation of the given type that is initialized from the given hash.
@@ -30,11 +30,11 @@
30
30
  #
31
31
  # @example Using `annotate` with three arguments where third argument is a Hash
32
32
  #
33
- # ~~~ puppet
33
+ # ```puppet
34
34
  # $annotation = Mod::NickNameAdapter.annotate(o, { 'nick_name' => 'Buddy' })
35
35
  #
36
36
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o, { 'nick_name' => 'Buddy' })
37
- # ~~~
37
+ # ```
38
38
  #
39
39
  # With three arguments, an `Annotation` type, an object, and an the string `clear`, the function will
40
40
  # clear the annotation of the given type in the given object. The old annotation is returned if
@@ -42,11 +42,11 @@
42
42
  #
43
43
  # @example Using `annotate` with three arguments where third argument is the string 'clear'
44
44
  #
45
- # ~~~ puppet
45
+ # ```puppet
46
46
  # $annotation = Mod::NickNameAdapter.annotate(o, clear)
47
47
  #
48
48
  # $annotation = annotate(Mod::NickNameAdapter.annotate, o, clear)
49
- # ~~~
49
+ # ```
50
50
  #
51
51
  # With three arguments, the type `Pcore`, an object, and a Hash of hashes keyed by `Annotation` types,
52
52
  # the function will annotate the given object with all types used as keys in the given hash. Each annotation
@@ -54,12 +54,12 @@
54
54
  #
55
55
  # @example Add multiple annotations to a new instance of `Mod::Person` using the `Pcore` type.
56
56
  #
57
- # ~~~ puppet
57
+ # ```puppet
58
58
  # $person = Pcore.annotate(Mod::Person({'name' => 'William'}), {
59
59
  # Mod::NickNameAdapter >= { 'nick_name' => 'Bill' },
60
60
  # Mod::HobbiesAdapter => { 'hobbies' => ['Ham Radio', 'Philatelist'] }
61
61
  # })
62
- # ~~~
62
+ # ```
63
63
  #
64
64
  # @since 5.0.0
65
65
  #
@@ -18,12 +18,12 @@
18
18
  #
19
19
  # @example Using the `any` function with an Array and a one-parameter lambda
20
20
  #
21
- # ~~~ puppet
21
+ # ```puppet
22
22
  # # For the array $data, run a lambda that checks if an unknown hash contains those keys
23
23
  # $data = ["routers", "servers", "workstations"]
24
24
  # $looked_up = lookup('somekey', Hash)
25
25
  # notice $data.any |$item| { $looked_up[$item] }
26
- # ~~~
26
+ # ```
27
27
  #
28
28
  # Would notice `true` if the looked up hash had a value that is neither `false` nor `undef` for at least
29
29
  # one of the keys. That is, it is equivalent to the expression
@@ -34,12 +34,12 @@
34
34
  #
35
35
  # @example Using the `any` function with a `Hash` and a one-parameter lambda
36
36
  #
37
- # ~~~ puppet
37
+ # ```puppet
38
38
  # # For the hash $data, run a lambda using each item as a key-value array.
39
39
  # $data = {"rtr" => "Router", "svr" => "Server", "wks" => "Workstation"}
40
40
  # $looked_up = lookup('somekey', Hash)
41
41
  # notice $data.any |$item| { $looked_up[$item[0]] }
42
- # ~~~
42
+ # ```
43
43
  #
44
44
  # Would notice `true` if the looked up hash had a value for one of the wanted key that is
45
45
  # neither `false` nor `undef`.
@@ -50,11 +50,11 @@
50
50
  #
51
51
  # @example Using the `any` function with an array and a two-parameter lambda
52
52
  #
53
- # ~~~ puppet
53
+ # ```puppet
54
54
  # # Check if there is an even numbered index that has a non String value
55
55
  # $data = [key1, 1, 2, 2]
56
56
  # notice $data.any |$index, $value| { $index % 2 == 0 and $value !~ String }
57
- # ~~~
57
+ # ```
58
58
  #
59
59
  # Would notice true as the index `2` is even and not a `String`
60
60
  #