openvox 7.37.1 → 8.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1086) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -3
  3. data/Gemfile +17 -12
  4. data/README.md +25 -30
  5. data/Rakefile +43 -33
  6. data/bin/puppet +1 -0
  7. data/examples/hiera/README.md +68 -57
  8. data/examples/hiera/data/common.yaml +12 -0
  9. data/examples/hiera/data/dc1.yaml +6 -0
  10. data/examples/hiera/hiera.yaml +15 -0
  11. data/examples/hiera/modules/ntp/data/common.yaml +4 -0
  12. data/examples/hiera/modules/ntp/hiera.yaml +9 -0
  13. data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
  14. data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
  15. data/examples/hiera/modules/users/manifests/common.pp +7 -2
  16. data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
  17. data/examples/hiera/site.pp +1 -1
  18. data/ext/build_defaults.yaml +1 -1
  19. data/ext/windows/service/daemon.rb +54 -60
  20. data/install.rb +21 -92
  21. data/lib/hiera/puppet_function.rb +8 -6
  22. data/lib/hiera/scope.rb +15 -13
  23. data/lib/hiera_puppet.rb +4 -6
  24. data/lib/puppet/agent/disabler.rb +5 -3
  25. data/lib/puppet/agent/locker.rb +2 -2
  26. data/lib/puppet/agent.rb +6 -4
  27. data/lib/puppet/application/agent.rb +305 -301
  28. data/lib/puppet/application/apply.rb +124 -117
  29. data/lib/puppet/application/catalog.rb +2 -0
  30. data/lib/puppet/application/config.rb +2 -0
  31. data/lib/puppet/application/describe.rb +50 -48
  32. data/lib/puppet/application/device.rb +224 -223
  33. data/lib/puppet/application/doc.rb +57 -58
  34. data/lib/puppet/application/epp.rb +2 -0
  35. data/lib/puppet/application/face_base.rb +18 -17
  36. data/lib/puppet/application/facts.rb +2 -0
  37. data/lib/puppet/application/filebucket.rb +174 -168
  38. data/lib/puppet/application/generate.rb +3 -1
  39. data/lib/puppet/application/help.rb +2 -0
  40. data/lib/puppet/application/indirection_base.rb +2 -0
  41. data/lib/puppet/application/lookup.rb +181 -181
  42. data/lib/puppet/application/module.rb +2 -0
  43. data/lib/puppet/application/node.rb +2 -0
  44. data/lib/puppet/application/parser.rb +2 -0
  45. data/lib/puppet/application/plugin.rb +2 -0
  46. data/lib/puppet/application/report.rb +2 -0
  47. data/lib/puppet/application/resource.rb +106 -96
  48. data/lib/puppet/application/script.rb +76 -74
  49. data/lib/puppet/application/ssl.rb +100 -92
  50. data/lib/puppet/application.rb +32 -32
  51. data/lib/puppet/application_support.rb +3 -2
  52. data/lib/puppet/coercion.rb +5 -3
  53. data/lib/puppet/compilable_resource_type.rb +4 -2
  54. data/lib/puppet/concurrent/lock.rb +2 -3
  55. data/lib/puppet/concurrent/synchronized.rb +2 -2
  56. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  57. data/lib/puppet/concurrent.rb +2 -0
  58. data/lib/puppet/configurer/downloader.rb +11 -5
  59. data/lib/puppet/configurer/fact_handler.rb +17 -16
  60. data/lib/puppet/configurer/plugin_handler.rb +2 -0
  61. data/lib/puppet/configurer.rb +40 -36
  62. data/lib/puppet/confine/any.rb +3 -1
  63. data/lib/puppet/confine/boolean.rb +3 -1
  64. data/lib/puppet/confine/exists.rb +3 -1
  65. data/lib/puppet/confine/false.rb +3 -1
  66. data/lib/puppet/confine/feature.rb +3 -2
  67. data/lib/puppet/confine/true.rb +3 -1
  68. data/lib/puppet/confine/variable.rb +4 -2
  69. data/lib/puppet/confine.rb +5 -2
  70. data/lib/puppet/confine_collection.rb +6 -3
  71. data/lib/puppet/confiner.rb +5 -3
  72. data/lib/puppet/context/trusted_information.rb +12 -10
  73. data/lib/puppet/context.rb +2 -0
  74. data/lib/puppet/daemon.rb +26 -10
  75. data/lib/puppet/data_binding.rb +3 -1
  76. data/lib/puppet/datatypes/error.rb +3 -1
  77. data/lib/puppet/datatypes/impl/error.rb +2 -0
  78. data/lib/puppet/datatypes.rb +12 -7
  79. data/lib/puppet/defaults.rb +164 -125
  80. data/lib/puppet/environments.rb +13 -15
  81. data/lib/puppet/error.rb +19 -15
  82. data/lib/puppet/etc.rb +10 -5
  83. data/lib/puppet/external/dot.rb +65 -75
  84. data/lib/puppet/face/catalog/select.rb +4 -2
  85. data/lib/puppet/face/catalog.rb +7 -5
  86. data/lib/puppet/face/config.rb +30 -31
  87. data/lib/puppet/face/epp.rb +25 -26
  88. data/lib/puppet/face/facts.rb +8 -6
  89. data/lib/puppet/face/generate.rb +5 -2
  90. data/lib/puppet/face/help/action.erb +0 -1
  91. data/lib/puppet/face/help/face.erb +0 -1
  92. data/lib/puppet/face/help/global.erb +1 -1
  93. data/lib/puppet/face/help.rb +80 -62
  94. data/lib/puppet/face/module/changes.rb +4 -3
  95. data/lib/puppet/face/module/install.rb +7 -4
  96. data/lib/puppet/face/module/list.rb +52 -53
  97. data/lib/puppet/face/module/uninstall.rb +2 -0
  98. data/lib/puppet/face/module/upgrade.rb +5 -3
  99. data/lib/puppet/face/module.rb +3 -1
  100. data/lib/puppet/face/node/clean.rb +4 -2
  101. data/lib/puppet/face/node.rb +5 -3
  102. data/lib/puppet/face/parser.rb +18 -19
  103. data/lib/puppet/face/plugin.rb +10 -8
  104. data/lib/puppet/face/report.rb +10 -10
  105. data/lib/puppet/face/resource.rb +2 -0
  106. data/lib/puppet/face.rb +2 -0
  107. data/lib/puppet/facter_impl.rb +1 -1
  108. data/lib/puppet/feature/base.rb +13 -13
  109. data/lib/puppet/feature/bolt.rb +2 -0
  110. data/lib/puppet/feature/cfpropertylist.rb +2 -0
  111. data/lib/puppet/feature/eventlog.rb +2 -0
  112. data/lib/puppet/feature/hiera_eyaml.rb +2 -0
  113. data/lib/puppet/feature/hocon.rb +2 -0
  114. data/lib/puppet/feature/libuser.rb +5 -3
  115. data/lib/puppet/feature/msgpack.rb +2 -0
  116. data/lib/puppet/feature/pe_license.rb +4 -2
  117. data/lib/puppet/feature/pson.rb +6 -0
  118. data/lib/puppet/feature/selinux.rb +2 -0
  119. data/lib/puppet/feature/ssh.rb +3 -1
  120. data/lib/puppet/feature/telnet.rb +3 -7
  121. data/lib/puppet/feature/zlib.rb +3 -1
  122. data/lib/puppet/ffi/posix/constants.rb +3 -1
  123. data/lib/puppet/ffi/posix/functions.rb +2 -1
  124. data/lib/puppet/ffi/posix.rb +2 -0
  125. data/lib/puppet/ffi/windows/api_types.rb +3 -1
  126. data/lib/puppet/ffi/windows/constants.rb +80 -78
  127. data/lib/puppet/ffi/windows/functions.rb +76 -75
  128. data/lib/puppet/ffi/windows/structs.rb +6 -5
  129. data/lib/puppet/ffi/windows.rb +2 -0
  130. data/lib/puppet/file_bucket/dipper.rb +20 -11
  131. data/lib/puppet/file_bucket/file.rb +8 -6
  132. data/lib/puppet/file_bucket.rb +2 -0
  133. data/lib/puppet/file_serving/base.rb +17 -9
  134. data/lib/puppet/file_serving/configuration/parser.rb +13 -10
  135. data/lib/puppet/file_serving/configuration.rb +10 -7
  136. data/lib/puppet/file_serving/content.rb +2 -0
  137. data/lib/puppet/file_serving/fileset.rb +23 -19
  138. data/lib/puppet/file_serving/http_metadata.rb +3 -4
  139. data/lib/puppet/file_serving/metadata.rb +26 -23
  140. data/lib/puppet/file_serving/mount/file.rb +15 -11
  141. data/lib/puppet/file_serving/mount/locales.rb +5 -5
  142. data/lib/puppet/file_serving/mount/modules.rb +3 -0
  143. data/lib/puppet/file_serving/mount/pluginfacts.rb +5 -5
  144. data/lib/puppet/file_serving/mount/plugins.rb +5 -5
  145. data/lib/puppet/file_serving/mount/scripts.rb +3 -0
  146. data/lib/puppet/file_serving/mount/tasks.rb +3 -0
  147. data/lib/puppet/file_serving/mount.rb +4 -1
  148. data/lib/puppet/file_serving/terminus_helper.rb +2 -0
  149. data/lib/puppet/file_serving/terminus_selector.rb +3 -1
  150. data/lib/puppet/file_serving.rb +2 -0
  151. data/lib/puppet/file_system/file_impl.rb +9 -8
  152. data/lib/puppet/file_system/jruby.rb +2 -0
  153. data/lib/puppet/file_system/memory_file.rb +3 -0
  154. data/lib/puppet/file_system/memory_impl.rb +5 -1
  155. data/lib/puppet/file_system/path_pattern.rb +4 -2
  156. data/lib/puppet/file_system/posix.rb +7 -2
  157. data/lib/puppet/file_system/uniquefile.rb +33 -31
  158. data/lib/puppet/file_system/windows.rb +33 -22
  159. data/lib/puppet/file_system.rb +5 -3
  160. data/lib/puppet/forge/cache.rb +4 -3
  161. data/lib/puppet/forge/errors.rb +3 -4
  162. data/lib/puppet/forge/repository.rb +6 -3
  163. data/lib/puppet/forge.rb +20 -22
  164. data/lib/puppet/functions/abs.rb +7 -4
  165. data/lib/puppet/functions/alert.rb +2 -0
  166. data/lib/puppet/functions/all.rb +3 -1
  167. data/lib/puppet/functions/annotate.rb +2 -0
  168. data/lib/puppet/functions/any.rb +3 -1
  169. data/lib/puppet/functions/assert_type.rb +5 -2
  170. data/lib/puppet/functions/binary_file.rb +4 -1
  171. data/lib/puppet/functions/break.rb +4 -2
  172. data/lib/puppet/functions/call.rb +2 -1
  173. data/lib/puppet/functions/camelcase.rb +4 -3
  174. data/lib/puppet/functions/capitalize.rb +4 -3
  175. data/lib/puppet/functions/ceiling.rb +3 -2
  176. data/lib/puppet/functions/chomp.rb +3 -2
  177. data/lib/puppet/functions/chop.rb +3 -2
  178. data/lib/puppet/functions/compare.rb +5 -3
  179. data/lib/puppet/functions/contain.rb +7 -4
  180. data/lib/puppet/functions/convert_to.rb +2 -0
  181. data/lib/puppet/functions/crit.rb +2 -0
  182. data/lib/puppet/functions/debug.rb +2 -0
  183. data/lib/puppet/functions/defined.rb +10 -6
  184. data/lib/puppet/functions/dig.rb +13 -10
  185. data/lib/puppet/functions/downcase.rb +4 -2
  186. data/lib/puppet/functions/each.rb +2 -0
  187. data/lib/puppet/functions/emerg.rb +2 -0
  188. data/lib/puppet/functions/empty.rb +2 -0
  189. data/lib/puppet/functions/epp.rb +2 -1
  190. data/lib/puppet/functions/err.rb +2 -0
  191. data/lib/puppet/functions/eyaml_lookup_key.rb +17 -16
  192. data/lib/puppet/functions/filter.rb +8 -7
  193. data/lib/puppet/functions/find_file.rb +6 -0
  194. data/lib/puppet/functions/find_template.rb +2 -0
  195. data/lib/puppet/functions/flatten.rb +2 -0
  196. data/lib/puppet/functions/floor.rb +3 -2
  197. data/lib/puppet/functions/get.rb +4 -2
  198. data/lib/puppet/functions/getvar.rb +7 -5
  199. data/lib/puppet/functions/group_by.rb +2 -2
  200. data/lib/puppet/functions/hiera.rb +2 -0
  201. data/lib/puppet/functions/hiera_array.rb +2 -0
  202. data/lib/puppet/functions/hiera_hash.rb +2 -0
  203. data/lib/puppet/functions/hiera_include.rb +3 -0
  204. data/lib/puppet/functions/hocon_data.rb +5 -5
  205. data/lib/puppet/functions/import.rb +3 -1
  206. data/lib/puppet/functions/include.rb +5 -2
  207. data/lib/puppet/functions/index.rb +5 -4
  208. data/lib/puppet/functions/info.rb +2 -0
  209. data/lib/puppet/functions/inline_epp.rb +2 -1
  210. data/lib/puppet/functions/join.rb +4 -2
  211. data/lib/puppet/functions/json_data.rb +6 -6
  212. data/lib/puppet/functions/keys.rb +2 -0
  213. data/lib/puppet/functions/length.rb +2 -1
  214. data/lib/puppet/functions/lest.rb +2 -0
  215. data/lib/puppet/functions/lookup.rb +12 -12
  216. data/lib/puppet/functions/lstrip.rb +3 -2
  217. data/lib/puppet/functions/map.rb +4 -2
  218. data/lib/puppet/functions/match.rb +8 -5
  219. data/lib/puppet/functions/max.rb +75 -8
  220. data/lib/puppet/functions/min.rb +75 -8
  221. data/lib/puppet/functions/module_directory.rb +2 -0
  222. data/lib/puppet/functions/new.rb +5 -3
  223. data/lib/puppet/functions/next.rb +3 -1
  224. data/lib/puppet/functions/notice.rb +2 -0
  225. data/lib/puppet/functions/reduce.rb +8 -11
  226. data/lib/puppet/functions/regsubst.rb +15 -16
  227. data/lib/puppet/functions/require.rb +7 -3
  228. data/lib/puppet/functions/return.rb +2 -0
  229. data/lib/puppet/functions/reverse_each.rb +2 -0
  230. data/lib/puppet/functions/round.rb +2 -0
  231. data/lib/puppet/functions/rstrip.rb +3 -2
  232. data/lib/puppet/functions/scanf.rb +2 -0
  233. data/lib/puppet/functions/size.rb +2 -2
  234. data/lib/puppet/functions/slice.rb +4 -1
  235. data/lib/puppet/functions/sort.rb +2 -0
  236. data/lib/puppet/functions/split.rb +2 -0
  237. data/lib/puppet/functions/step.rb +2 -0
  238. data/lib/puppet/functions/strftime.rb +5 -3
  239. data/lib/puppet/functions/strip.rb +3 -2
  240. data/lib/puppet/functions/then.rb +3 -0
  241. data/lib/puppet/functions/tree_each.rb +4 -3
  242. data/lib/puppet/functions/type.rb +2 -0
  243. data/lib/puppet/functions/unique.rb +12 -9
  244. data/lib/puppet/functions/unwrap.rb +2 -0
  245. data/lib/puppet/functions/upcase.rb +4 -2
  246. data/lib/puppet/functions/values.rb +2 -0
  247. data/lib/puppet/functions/versioncmp.rb +2 -1
  248. data/lib/puppet/functions/warning.rb +2 -0
  249. data/lib/puppet/functions/with.rb +2 -0
  250. data/lib/puppet/functions/yaml_data.rb +13 -13
  251. data/lib/puppet/functions.rb +57 -61
  252. data/lib/puppet/generate/models/type/property.rb +4 -1
  253. data/lib/puppet/generate/models/type/type.rb +5 -2
  254. data/lib/puppet/generate/type.rb +11 -5
  255. data/lib/puppet/gettext/config.rb +16 -9
  256. data/lib/puppet/gettext/module_translations.rb +2 -1
  257. data/lib/puppet/gettext/stubs.rb +2 -0
  258. data/lib/puppet/graph/key.rb +2 -0
  259. data/lib/puppet/graph/prioritizer.rb +2 -0
  260. data/lib/puppet/graph/rb_tree_map.rb +43 -24
  261. data/lib/puppet/graph/relationship_graph.rb +31 -29
  262. data/lib/puppet/graph/sequential_prioritizer.rb +2 -0
  263. data/lib/puppet/graph/simple_graph.rb +63 -57
  264. data/lib/puppet/graph.rb +2 -0
  265. data/lib/puppet/http/client.rb +10 -6
  266. data/lib/puppet/http/dns.rb +12 -12
  267. data/lib/puppet/http/errors.rb +4 -2
  268. data/lib/puppet/http/external_client.rb +4 -3
  269. data/lib/puppet/http/factory.rb +3 -1
  270. data/lib/puppet/http/pool.rb +3 -1
  271. data/lib/puppet/http/pool_entry.rb +2 -0
  272. data/lib/puppet/http/proxy.rb +21 -19
  273. data/lib/puppet/http/redirector.rb +5 -3
  274. data/lib/puppet/http/resolver/server_list.rb +5 -4
  275. data/lib/puppet/http/resolver/settings.rb +2 -1
  276. data/lib/puppet/http/resolver/srv.rb +2 -1
  277. data/lib/puppet/http/resolver.rb +4 -2
  278. data/lib/puppet/http/response.rb +2 -0
  279. data/lib/puppet/http/response_converter.rb +4 -3
  280. data/lib/puppet/http/response_net_http.rb +2 -1
  281. data/lib/puppet/http/retry_after_handler.rb +4 -3
  282. data/lib/puppet/http/service/ca.rb +37 -5
  283. data/lib/puppet/http/service/compiler.rb +13 -10
  284. data/lib/puppet/http/service/file_server.rb +5 -3
  285. data/lib/puppet/http/service/puppetserver.rb +3 -2
  286. data/lib/puppet/http/service/report.rb +5 -7
  287. data/lib/puppet/http/service.rb +17 -22
  288. data/lib/puppet/http/session.rb +6 -4
  289. data/lib/puppet/http/site.rb +3 -1
  290. data/lib/puppet/http.rb +4 -2
  291. data/lib/puppet/indirector/catalog/compiler.rb +81 -80
  292. data/lib/puppet/indirector/catalog/json.rb +2 -0
  293. data/lib/puppet/indirector/catalog/msgpack.rb +2 -0
  294. data/lib/puppet/indirector/catalog/rest.rb +2 -0
  295. data/lib/puppet/indirector/catalog/store_configs.rb +3 -3
  296. data/lib/puppet/indirector/catalog/yaml.rb +2 -0
  297. data/lib/puppet/indirector/code.rb +2 -0
  298. data/lib/puppet/indirector/data_binding/hiera.rb +2 -1
  299. data/lib/puppet/indirector/data_binding/none.rb +2 -0
  300. data/lib/puppet/indirector/direct_file_server.rb +4 -1
  301. data/lib/puppet/indirector/envelope.rb +2 -0
  302. data/lib/puppet/indirector/errors.rb +2 -0
  303. data/lib/puppet/indirector/exec.rb +5 -3
  304. data/lib/puppet/indirector/face.rb +17 -28
  305. data/lib/puppet/indirector/fact_search.rb +4 -2
  306. data/lib/puppet/indirector/facts/facter.rb +10 -7
  307. data/lib/puppet/indirector/facts/json.rb +4 -2
  308. data/lib/puppet/indirector/facts/memory.rb +2 -0
  309. data/lib/puppet/indirector/facts/network_device.rb +2 -0
  310. data/lib/puppet/indirector/facts/rest.rb +2 -0
  311. data/lib/puppet/indirector/facts/store_configs.rb +3 -2
  312. data/lib/puppet/indirector/facts/yaml.rb +2 -0
  313. data/lib/puppet/indirector/file_bucket_file/file.rb +33 -27
  314. data/lib/puppet/indirector/file_bucket_file/rest.rb +6 -3
  315. data/lib/puppet/indirector/file_bucket_file/selector.rb +2 -1
  316. data/lib/puppet/indirector/file_content/file.rb +2 -0
  317. data/lib/puppet/indirector/file_content/file_server.rb +2 -0
  318. data/lib/puppet/indirector/file_content/rest.rb +3 -1
  319. data/lib/puppet/indirector/file_content/selector.rb +2 -0
  320. data/lib/puppet/indirector/file_content.rb +2 -0
  321. data/lib/puppet/indirector/file_metadata/file.rb +2 -0
  322. data/lib/puppet/indirector/file_metadata/file_server.rb +2 -0
  323. data/lib/puppet/indirector/file_metadata/http.rb +4 -2
  324. data/lib/puppet/indirector/file_metadata/rest.rb +3 -1
  325. data/lib/puppet/indirector/file_metadata/selector.rb +2 -0
  326. data/lib/puppet/indirector/file_metadata.rb +2 -0
  327. data/lib/puppet/indirector/file_server.rb +3 -0
  328. data/lib/puppet/indirector/generic_http.rb +2 -0
  329. data/lib/puppet/indirector/hiera.rb +8 -7
  330. data/lib/puppet/indirector/indirection.rb +50 -41
  331. data/lib/puppet/indirector/json.rb +9 -6
  332. data/lib/puppet/indirector/memory.rb +5 -2
  333. data/lib/puppet/indirector/msgpack.rb +11 -7
  334. data/lib/puppet/indirector/node/exec.rb +6 -6
  335. data/lib/puppet/indirector/node/json.rb +2 -1
  336. data/lib/puppet/indirector/node/memory.rb +2 -0
  337. data/lib/puppet/indirector/node/msgpack.rb +2 -0
  338. data/lib/puppet/indirector/node/plain.rb +2 -0
  339. data/lib/puppet/indirector/node/rest.rb +2 -0
  340. data/lib/puppet/indirector/node/store_configs.rb +3 -3
  341. data/lib/puppet/indirector/node/yaml.rb +2 -0
  342. data/lib/puppet/indirector/none.rb +3 -2
  343. data/lib/puppet/indirector/plain.rb +2 -0
  344. data/lib/puppet/indirector/report/json.rb +4 -2
  345. data/lib/puppet/indirector/report/msgpack.rb +3 -1
  346. data/lib/puppet/indirector/report/processor.rb +3 -0
  347. data/lib/puppet/indirector/report/rest.rb +2 -13
  348. data/lib/puppet/indirector/report/yaml.rb +4 -2
  349. data/lib/puppet/indirector/request.rb +15 -12
  350. data/lib/puppet/indirector/resource/ral.rb +10 -10
  351. data/lib/puppet/indirector/resource/store_configs.rb +3 -1
  352. data/lib/puppet/indirector/resource/validator.rb +2 -0
  353. data/lib/puppet/indirector/rest.rb +3 -1
  354. data/lib/puppet/indirector/store_configs.rb +2 -0
  355. data/lib/puppet/indirector/terminus.rb +8 -4
  356. data/lib/puppet/indirector/yaml.rb +7 -5
  357. data/lib/puppet/indirector.rb +3 -0
  358. data/lib/puppet/info_service/class_information_service.rb +16 -17
  359. data/lib/puppet/info_service/plan_information_service.rb +5 -3
  360. data/lib/puppet/info_service/task_information_service.rb +10 -9
  361. data/lib/puppet/info_service.rb +1 -0
  362. data/lib/puppet/interface/action.rb +46 -42
  363. data/lib/puppet/interface/action_builder.rb +12 -6
  364. data/lib/puppet/interface/action_manager.rb +9 -6
  365. data/lib/puppet/interface/documentation.rb +40 -34
  366. data/lib/puppet/interface/face_collection.rb +18 -14
  367. data/lib/puppet/interface/option.rb +23 -11
  368. data/lib/puppet/interface/option_builder.rb +14 -9
  369. data/lib/puppet/interface/option_manager.rb +12 -10
  370. data/lib/puppet/interface.rb +9 -8
  371. data/lib/puppet/loaders.rb +2 -1
  372. data/lib/puppet/metatype/manager.rb +16 -15
  373. data/lib/puppet/module/plan.rb +22 -15
  374. data/lib/puppet/module/task.rb +33 -28
  375. data/lib/puppet/module.rb +59 -47
  376. data/lib/puppet/module_tool/applications/application.rb +17 -12
  377. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  378. data/lib/puppet/module_tool/applications/installer.rb +78 -87
  379. data/lib/puppet/module_tool/applications/uninstaller.rb +24 -22
  380. data/lib/puppet/module_tool/applications/unpacker.rb +11 -9
  381. data/lib/puppet/module_tool/applications/upgrader.rb +66 -60
  382. data/lib/puppet/module_tool/applications.rb +2 -0
  383. data/lib/puppet/module_tool/checksums.rb +4 -3
  384. data/lib/puppet/module_tool/dependency.rb +5 -4
  385. data/lib/puppet/module_tool/errors/base.rb +3 -1
  386. data/lib/puppet/module_tool/errors/installer.rb +6 -5
  387. data/lib/puppet/module_tool/errors/shared.rb +16 -15
  388. data/lib/puppet/module_tool/errors/uninstaller.rb +3 -2
  389. data/lib/puppet/module_tool/errors/upgrader.rb +4 -3
  390. data/lib/puppet/module_tool/errors.rb +2 -0
  391. data/lib/puppet/module_tool/install_directory.rb +8 -5
  392. data/lib/puppet/module_tool/installed_modules.rb +5 -2
  393. data/lib/puppet/module_tool/local_tarball.rb +10 -8
  394. data/lib/puppet/module_tool/metadata.rb +36 -30
  395. data/lib/puppet/module_tool/shared_behaviors.rb +61 -43
  396. data/lib/puppet/module_tool/tar/gnu.rb +12 -8
  397. data/lib/puppet/module_tool/tar/mini.rb +6 -4
  398. data/lib/puppet/module_tool/tar.rb +4 -2
  399. data/lib/puppet/module_tool.rb +11 -11
  400. data/lib/puppet/network/authconfig.rb +2 -0
  401. data/lib/puppet/network/authorization.rb +2 -0
  402. data/lib/puppet/network/client_request.rb +7 -4
  403. data/lib/puppet/network/format.rb +9 -3
  404. data/lib/puppet/network/format_handler.rb +9 -7
  405. data/lib/puppet/network/format_support.rb +8 -7
  406. data/lib/puppet/network/formats.rb +34 -25
  407. data/lib/puppet/network/http/api/indirected_routes.rb +38 -45
  408. data/lib/puppet/network/http/api/indirection_type.rb +2 -1
  409. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -1
  410. data/lib/puppet/network/http/api/master/v3.rb +2 -1
  411. data/lib/puppet/network/http/api/master.rb +2 -0
  412. data/lib/puppet/network/http/api/server/v3/environments.rb +21 -15
  413. data/lib/puppet/network/http/api/server/v3.rb +14 -13
  414. data/lib/puppet/network/http/api/server.rb +2 -0
  415. data/lib/puppet/network/http/api.rb +20 -18
  416. data/lib/puppet/network/http/connection.rb +6 -4
  417. data/lib/puppet/network/http/error.rb +5 -3
  418. data/lib/puppet/network/http/handler.rb +12 -14
  419. data/lib/puppet/network/http/issues.rb +2 -0
  420. data/lib/puppet/network/http/memory_response.rb +3 -1
  421. data/lib/puppet/network/http/request.rb +22 -10
  422. data/lib/puppet/network/http/response.rb +2 -0
  423. data/lib/puppet/network/http/route.rb +14 -11
  424. data/lib/puppet/network/http.rb +2 -0
  425. data/lib/puppet/network/http_pool.rb +4 -3
  426. data/lib/puppet/network/uri.rb +2 -0
  427. data/lib/puppet/network.rb +2 -0
  428. data/lib/puppet/node/environment.rb +36 -33
  429. data/lib/puppet/node/facts.rb +10 -10
  430. data/lib/puppet/node/server_facts.rb +6 -6
  431. data/lib/puppet/node.rb +12 -12
  432. data/lib/puppet/pal/catalog_compiler.rb +2 -3
  433. data/lib/puppet/pal/compiler.rb +11 -6
  434. data/lib/puppet/pal/function_signature.rb +5 -3
  435. data/lib/puppet/pal/json_catalog_encoder.rb +7 -2
  436. data/lib/puppet/pal/pal_api.rb +2 -0
  437. data/lib/puppet/pal/pal_impl.rb +103 -108
  438. data/lib/puppet/pal/plan_signature.rb +4 -2
  439. data/lib/puppet/pal/script_compiler.rb +4 -2
  440. data/lib/puppet/pal/task_signature.rb +15 -9
  441. data/lib/puppet/parameter/boolean.rb +2 -0
  442. data/lib/puppet/parameter/package_options.rb +3 -1
  443. data/lib/puppet/parameter/path.rb +7 -3
  444. data/lib/puppet/parameter/value.rb +5 -3
  445. data/lib/puppet/parameter/value_collection.rb +17 -16
  446. data/lib/puppet/parameter.rb +17 -16
  447. data/lib/puppet/parser/abstract_compiler.rb +2 -3
  448. data/lib/puppet/parser/ast/block_expression.rb +4 -2
  449. data/lib/puppet/parser/ast/branch.rb +2 -0
  450. data/lib/puppet/parser/ast/hostclass.rb +4 -2
  451. data/lib/puppet/parser/ast/leaf.rb +3 -0
  452. data/lib/puppet/parser/ast/node.rb +2 -0
  453. data/lib/puppet/parser/ast/pops_bridge.rb +13 -13
  454. data/lib/puppet/parser/ast/resource.rb +8 -8
  455. data/lib/puppet/parser/ast/resource_instance.rb +3 -0
  456. data/lib/puppet/parser/ast/resourceparam.rb +9 -7
  457. data/lib/puppet/parser/ast/top_level_construct.rb +2 -0
  458. data/lib/puppet/parser/ast.rb +16 -15
  459. data/lib/puppet/parser/catalog_compiler.rb +3 -3
  460. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +4 -2
  461. data/lib/puppet/parser/compiler/catalog_validator.rb +2 -0
  462. data/lib/puppet/parser/compiler.rb +45 -44
  463. data/lib/puppet/parser/e4_parser_adapter.rb +17 -16
  464. data/lib/puppet/parser/files.rb +8 -6
  465. data/lib/puppet/parser/functions/assert_type.rb +43 -41
  466. data/lib/puppet/parser/functions/binary_file.rb +16 -14
  467. data/lib/puppet/parser/functions/break.rb +29 -27
  468. data/lib/puppet/parser/functions/contain.rb +3 -1
  469. data/lib/puppet/parser/functions/create_resources.rb +18 -14
  470. data/lib/puppet/parser/functions/defined.rb +104 -102
  471. data/lib/puppet/parser/functions/dig.rb +26 -24
  472. data/lib/puppet/parser/functions/digest.rb +3 -1
  473. data/lib/puppet/parser/functions/each.rb +101 -99
  474. data/lib/puppet/parser/functions/epp.rb +4 -3
  475. data/lib/puppet/parser/functions/fail.rb +11 -9
  476. data/lib/puppet/parser/functions/file.rb +16 -14
  477. data/lib/puppet/parser/functions/filter.rb +57 -55
  478. data/lib/puppet/parser/functions/find_file.rb +19 -18
  479. data/lib/puppet/parser/functions/fqdn_rand.rb +25 -23
  480. data/lib/puppet/parser/functions/generate.rb +23 -21
  481. data/lib/puppet/parser/functions/hiera.rb +95 -93
  482. data/lib/puppet/parser/functions/hiera_array.rb +83 -82
  483. data/lib/puppet/parser/functions/hiera_hash.rb +93 -92
  484. data/lib/puppet/parser/functions/hiera_include.rb +93 -92
  485. data/lib/puppet/parser/functions/include.rb +5 -3
  486. data/lib/puppet/parser/functions/inline_epp.rb +4 -3
  487. data/lib/puppet/parser/functions/inline_template.rb +15 -13
  488. data/lib/puppet/parser/functions/lest.rb +36 -34
  489. data/lib/puppet/parser/functions/lookup.rb +132 -130
  490. data/lib/puppet/parser/functions/map.rb +54 -52
  491. data/lib/puppet/parser/functions/match.rb +31 -29
  492. data/lib/puppet/parser/functions/md5.rb +4 -2
  493. data/lib/puppet/parser/functions/new.rb +916 -915
  494. data/lib/puppet/parser/functions/next.rb +36 -34
  495. data/lib/puppet/parser/functions/realize.rb +13 -11
  496. data/lib/puppet/parser/functions/reduce.rb +134 -132
  497. data/lib/puppet/parser/functions/regsubst.rb +8 -5
  498. data/lib/puppet/parser/functions/require.rb +8 -5
  499. data/lib/puppet/parser/functions/return.rb +90 -88
  500. data/lib/puppet/parser/functions/reverse_each.rb +59 -57
  501. data/lib/puppet/parser/functions/scanf.rb +25 -23
  502. data/lib/puppet/parser/functions/sha1.rb +4 -2
  503. data/lib/puppet/parser/functions/sha256.rb +3 -1
  504. data/lib/puppet/parser/functions/shellquote.rb +2 -0
  505. data/lib/puppet/parser/functions/slice.rb +27 -25
  506. data/lib/puppet/parser/functions/split.rb +7 -6
  507. data/lib/puppet/parser/functions/sprintf.rb +8 -7
  508. data/lib/puppet/parser/functions/step.rb +62 -60
  509. data/lib/puppet/parser/functions/strftime.rb +175 -173
  510. data/lib/puppet/parser/functions/tag.rb +10 -7
  511. data/lib/puppet/parser/functions/tagged.rb +16 -13
  512. data/lib/puppet/parser/functions/template.rb +27 -24
  513. data/lib/puppet/parser/functions/then.rb +54 -52
  514. data/lib/puppet/parser/functions/type.rb +36 -34
  515. data/lib/puppet/parser/functions/versioncmp.rb +3 -2
  516. data/lib/puppet/parser/functions/with.rb +22 -20
  517. data/lib/puppet/parser/functions.rb +12 -9
  518. data/lib/puppet/parser/parser_factory.rb +2 -0
  519. data/lib/puppet/parser/relationship.rb +9 -3
  520. data/lib/puppet/parser/resource/param.rb +4 -2
  521. data/lib/puppet/parser/resource.rb +42 -40
  522. data/lib/puppet/parser/scope.rb +84 -70
  523. data/lib/puppet/parser/script_compiler.rb +12 -12
  524. data/lib/puppet/parser/templatewrapper.rb +3 -2
  525. data/lib/puppet/parser/type_loader.rb +31 -30
  526. data/lib/puppet/parser.rb +3 -1
  527. data/lib/puppet/plugins/configuration.rb +2 -0
  528. data/lib/puppet/plugins/syntax_checkers.rb +2 -1
  529. data/lib/puppet/plugins.rb +3 -1
  530. data/lib/puppet/pops/adaptable.rb +5 -3
  531. data/lib/puppet/pops/adapters.rb +4 -1
  532. data/lib/puppet/pops/evaluator/access_operator.rb +133 -120
  533. data/lib/puppet/pops/evaluator/callable_signature.rb +6 -5
  534. data/lib/puppet/pops/evaluator/closure.rb +272 -277
  535. data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -15
  536. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +10 -8
  537. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +4 -3
  538. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +6 -5
  539. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +10 -10
  540. data/lib/puppet/pops/evaluator/compare_operator.rb +36 -21
  541. data/lib/puppet/pops/evaluator/deferred_resolver.rb +19 -17
  542. data/lib/puppet/pops/evaluator/epp_evaluator.rb +19 -18
  543. data/lib/puppet/pops/evaluator/evaluator_impl.rb +245 -245
  544. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
  545. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +6 -5
  546. data/lib/puppet/pops/evaluator/literal_evaluator.rb +5 -5
  547. data/lib/puppet/pops/evaluator/puppet_proc.rb +6 -3
  548. data/lib/puppet/pops/evaluator/relationship_operator.rb +14 -11
  549. data/lib/puppet/pops/evaluator/runtime3_converter.rb +34 -30
  550. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +35 -35
  551. data/lib/puppet/pops/evaluator/runtime3_support.rb +32 -39
  552. data/lib/puppet/pops/functions/dispatch.rb +7 -7
  553. data/lib/puppet/pops/functions/dispatcher.rb +8 -7
  554. data/lib/puppet/pops/functions/function.rb +18 -20
  555. data/lib/puppet/pops/issue_reporter.rb +25 -22
  556. data/lib/puppet/pops/issues.rb +10 -5
  557. data/lib/puppet/pops/label_provider.rb +6 -4
  558. data/lib/puppet/pops/loader/base_loader.rb +4 -4
  559. data/lib/puppet/pops/loader/dependency_loader.rb +8 -4
  560. data/lib/puppet/pops/loader/gem_support.rb +5 -2
  561. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +2 -0
  562. data/lib/puppet/pops/loader/loader.rb +8 -8
  563. data/lib/puppet/pops/loader/loader_paths.rb +42 -41
  564. data/lib/puppet/pops/loader/module_loaders.rb +45 -49
  565. data/lib/puppet/pops/loader/predefined_loader.rb +3 -3
  566. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +6 -2
  567. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +6 -2
  568. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +6 -5
  569. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +5 -1
  570. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +5 -1
  571. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +18 -8
  572. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -3
  573. data/lib/puppet/pops/loader/simple_environment_loader.rb +3 -3
  574. data/lib/puppet/pops/loader/static_loader.rb +29 -27
  575. data/lib/puppet/pops/loader/task_instantiator.rb +4 -2
  576. data/lib/puppet/pops/loader/type_definition_instantiator.rb +9 -5
  577. data/lib/puppet/pops/loader/typed_name.rb +4 -2
  578. data/lib/puppet/pops/loader/uri_helper.rb +3 -1
  579. data/lib/puppet/pops/loaders.rb +27 -23
  580. data/lib/puppet/pops/lookup/configured_data_provider.rb +2 -0
  581. data/lib/puppet/pops/lookup/context.rb +32 -23
  582. data/lib/puppet/pops/lookup/data_adapter.rb +2 -0
  583. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +8 -7
  584. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +5 -3
  585. data/lib/puppet/pops/lookup/data_provider.rb +2 -0
  586. data/lib/puppet/pops/lookup/environment_data_provider.rb +2 -0
  587. data/lib/puppet/pops/lookup/explainer.rb +47 -45
  588. data/lib/puppet/pops/lookup/function_provider.rb +8 -6
  589. data/lib/puppet/pops/lookup/global_data_provider.rb +4 -3
  590. data/lib/puppet/pops/lookup/hiera_config.rb +208 -160
  591. data/lib/puppet/pops/lookup/interpolation.rb +21 -10
  592. data/lib/puppet/pops/lookup/invocation.rb +4 -0
  593. data/lib/puppet/pops/lookup/key_recorder.rb +6 -3
  594. data/lib/puppet/pops/lookup/location_resolver.rb +4 -2
  595. data/lib/puppet/pops/lookup/lookup_adapter.rb +39 -34
  596. data/lib/puppet/pops/lookup/lookup_key.rb +3 -1
  597. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +4 -2
  598. data/lib/puppet/pops/lookup/module_data_provider.rb +12 -9
  599. data/lib/puppet/pops/lookup/sub_lookup.rb +7 -3
  600. data/lib/puppet/pops/lookup.rb +16 -11
  601. data/lib/puppet/pops/merge_strategy.rb +22 -16
  602. data/lib/puppet/pops/migration/migration_checker.rb +8 -5
  603. data/lib/puppet/pops/model/ast.rb +786 -685
  604. data/lib/puppet/pops/model/ast_transformer.rb +18 -18
  605. data/lib/puppet/pops/model/factory.rb +33 -31
  606. data/lib/puppet/pops/model/model_label_provider.rb +5 -2
  607. data/lib/puppet/pops/model/model_tree_dumper.rb +32 -30
  608. data/lib/puppet/pops/model/pn_transformer.rb +5 -6
  609. data/lib/puppet/pops/model/tree_dumper.rb +7 -4
  610. data/lib/puppet/pops/parser/code_merger.rb +3 -3
  611. data/lib/puppet/pops/parser/epp_parser.rb +6 -5
  612. data/lib/puppet/pops/parser/epp_support.rb +10 -9
  613. data/lib/puppet/pops/parser/evaluating_parser.rb +13 -9
  614. data/lib/puppet/pops/parser/heredoc_support.rb +14 -14
  615. data/lib/puppet/pops/parser/interpolation_support.rb +25 -25
  616. data/lib/puppet/pops/parser/lexer2.rb +74 -62
  617. data/lib/puppet/pops/parser/lexer_support.rb +57 -57
  618. data/lib/puppet/pops/parser/locatable.rb +2 -2
  619. data/lib/puppet/pops/parser/locator.rb +47 -43
  620. data/lib/puppet/pops/parser/parser_support.rb +22 -21
  621. data/lib/puppet/pops/parser/pn_parser.rb +10 -9
  622. data/lib/puppet/pops/parser/slurp_support.rb +41 -40
  623. data/lib/puppet/pops/patterns.rb +14 -14
  624. data/lib/puppet/pops/pcore.rb +7 -6
  625. data/lib/puppet/pops/pn.rb +8 -5
  626. data/lib/puppet/pops/puppet_stack.rb +3 -1
  627. data/lib/puppet/pops/resource/param.rb +13 -12
  628. data/lib/puppet/pops/resource/resource_type_impl.rb +47 -45
  629. data/lib/puppet/pops/semantic_error.rb +3 -1
  630. data/lib/puppet/pops/serialization/abstract_reader.rb +6 -4
  631. data/lib/puppet/pops/serialization/abstract_writer.rb +11 -9
  632. data/lib/puppet/pops/serialization/deserializer.rb +3 -0
  633. data/lib/puppet/pops/serialization/extension.rb +8 -0
  634. data/lib/puppet/pops/serialization/from_data_converter.rb +16 -9
  635. data/lib/puppet/pops/serialization/instance_reader.rb +2 -0
  636. data/lib/puppet/pops/serialization/instance_writer.rb +2 -0
  637. data/lib/puppet/pops/serialization/json.rb +9 -5
  638. data/lib/puppet/pops/serialization/json_path.rb +3 -1
  639. data/lib/puppet/pops/serialization/object.rb +6 -3
  640. data/lib/puppet/pops/serialization/serializer.rb +20 -16
  641. data/lib/puppet/pops/serialization/time_factory.rb +2 -1
  642. data/lib/puppet/pops/serialization/to_data_converter.rb +9 -6
  643. data/lib/puppet/pops/serialization/to_stringified_converter.rb +8 -7
  644. data/lib/puppet/pops/serialization.rb +10 -8
  645. data/lib/puppet/pops/time/timespan.rb +33 -21
  646. data/lib/puppet/pops/time/timestamp.rb +12 -5
  647. data/lib/puppet/pops/types/annotatable.rb +3 -2
  648. data/lib/puppet/pops/types/annotation.rb +6 -4
  649. data/lib/puppet/pops/types/class_loader.rb +17 -15
  650. data/lib/puppet/pops/types/implementation_registry.rb +4 -1
  651. data/lib/puppet/pops/types/iterable.rb +24 -14
  652. data/lib/puppet/pops/types/p_binary_type.rb +6 -6
  653. data/lib/puppet/pops/types/p_init_type.rb +15 -12
  654. data/lib/puppet/pops/types/p_meta_type.rb +6 -5
  655. data/lib/puppet/pops/types/p_object_type.rb +104 -79
  656. data/lib/puppet/pops/types/p_object_type_extension.rb +15 -14
  657. data/lib/puppet/pops/types/p_runtime_type.rb +12 -10
  658. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +3 -2
  659. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -8
  660. data/lib/puppet/pops/types/p_sensitive_type.rb +3 -5
  661. data/lib/puppet/pops/types/p_timespan_type.rb +7 -5
  662. data/lib/puppet/pops/types/p_timestamp_type.rb +4 -3
  663. data/lib/puppet/pops/types/p_type_set_type.rb +51 -44
  664. data/lib/puppet/pops/types/p_uri_type.rb +41 -33
  665. data/lib/puppet/pops/types/puppet_object.rb +2 -1
  666. data/lib/puppet/pops/types/recursion_guard.rb +12 -6
  667. data/lib/puppet/pops/types/ruby_generator.rb +19 -14
  668. data/lib/puppet/pops/types/ruby_method.rb +8 -7
  669. data/lib/puppet/pops/types/string_converter.rb +113 -103
  670. data/lib/puppet/pops/types/tree_iterators.rb +16 -20
  671. data/lib/puppet/pops/types/type_acceptor.rb +2 -0
  672. data/lib/puppet/pops/types/type_asserter.rb +5 -3
  673. data/lib/puppet/pops/types/type_assertion_error.rb +1 -1
  674. data/lib/puppet/pops/types/type_calculator.rb +56 -49
  675. data/lib/puppet/pops/types/type_conversion_error.rb +2 -10
  676. data/lib/puppet/pops/types/type_factory.rb +25 -16
  677. data/lib/puppet/pops/types/type_formatter.rb +60 -65
  678. data/lib/puppet/pops/types/type_mismatch_describer.rb +62 -53
  679. data/lib/puppet/pops/types/type_parser.rb +124 -117
  680. data/lib/puppet/pops/types/type_set_reference.rb +3 -0
  681. data/lib/puppet/pops/types/type_with_members.rb +2 -2
  682. data/lib/puppet/pops/types/types.rb +267 -249
  683. data/lib/puppet/pops/utils.rb +43 -45
  684. data/lib/puppet/pops/validation/checker4_0.rb +65 -58
  685. data/lib/puppet/pops/validation/tasks_checker.rb +7 -5
  686. data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -2
  687. data/lib/puppet/pops/validation.rb +26 -23
  688. data/lib/puppet/pops/visitable.rb +2 -0
  689. data/lib/puppet/pops/visitor.rb +18 -4
  690. data/lib/puppet/pops.rb +6 -3
  691. data/lib/puppet/property/boolean.rb +2 -0
  692. data/lib/puppet/property/ensure.rb +17 -16
  693. data/lib/puppet/property/keyvalue.rb +15 -14
  694. data/lib/puppet/property/list.rb +10 -9
  695. data/lib/puppet/property/ordered_list.rb +6 -5
  696. data/lib/puppet/property.rb +47 -48
  697. data/lib/puppet/provider/aix_object.rb +15 -9
  698. data/lib/puppet/provider/command.rb +2 -0
  699. data/lib/puppet/provider/confine.rb +2 -0
  700. data/lib/puppet/provider/exec/posix.rb +4 -1
  701. data/lib/puppet/provider/exec/shell.rb +2 -0
  702. data/lib/puppet/provider/exec/windows.rb +6 -4
  703. data/lib/puppet/provider/exec.rb +6 -4
  704. data/lib/puppet/provider/file/posix.rb +37 -19
  705. data/lib/puppet/provider/file/windows.rb +28 -29
  706. data/lib/puppet/provider/group/aix.rb +4 -2
  707. data/lib/puppet/provider/group/directoryservice.rb +7 -5
  708. data/lib/puppet/provider/group/groupadd.rb +16 -10
  709. data/lib/puppet/provider/group/ldap.rb +3 -0
  710. data/lib/puppet/provider/group/pw.rb +4 -3
  711. data/lib/puppet/provider/group/windows_adsi.rb +10 -7
  712. data/lib/puppet/provider/ldap.rb +5 -3
  713. data/lib/puppet/provider/nameservice/directoryservice.rb +72 -62
  714. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  715. data/lib/puppet/provider/nameservice/pw.rb +8 -8
  716. data/lib/puppet/provider/nameservice.rb +23 -19
  717. data/lib/puppet/provider/network_device.rb +2 -2
  718. data/lib/puppet/provider/package/aix.rb +29 -27
  719. data/lib/puppet/provider/package/appdmg.rb +24 -22
  720. data/lib/puppet/provider/package/apple.rb +7 -5
  721. data/lib/puppet/provider/package/apt.rb +28 -25
  722. data/lib/puppet/provider/package/aptitude.rb +3 -3
  723. data/lib/puppet/provider/package/aptrpm.rb +18 -14
  724. data/lib/puppet/provider/package/blastwave.rb +19 -22
  725. data/lib/puppet/provider/package/dnf.rb +12 -5
  726. data/lib/puppet/provider/package/dnfmodule.rb +17 -15
  727. data/lib/puppet/provider/package/dpkg.rb +24 -25
  728. data/lib/puppet/provider/package/fink.rb +17 -15
  729. data/lib/puppet/provider/package/freebsd.rb +6 -4
  730. data/lib/puppet/provider/package/gem.rb +29 -26
  731. data/lib/puppet/provider/package/hpux.rb +9 -7
  732. data/lib/puppet/provider/package/macports.rb +6 -4
  733. data/lib/puppet/provider/package/nim.rb +27 -28
  734. data/lib/puppet/provider/package/openbsd.rb +37 -34
  735. data/lib/puppet/provider/package/opkg.rb +17 -14
  736. data/lib/puppet/provider/package/pacman.rb +39 -42
  737. data/lib/puppet/provider/package/pip.rb +32 -31
  738. data/lib/puppet/provider/package/pip2.rb +3 -2
  739. data/lib/puppet/provider/package/pip3.rb +3 -2
  740. data/lib/puppet/provider/package/pkg.rb +46 -41
  741. data/lib/puppet/provider/package/pkgdmg.rb +23 -17
  742. data/lib/puppet/provider/package/pkgin.rb +14 -13
  743. data/lib/puppet/provider/package/pkgng.rb +20 -15
  744. data/lib/puppet/provider/package/pkgutil.rb +40 -41
  745. data/lib/puppet/provider/package/portage.rb +73 -69
  746. data/lib/puppet/provider/package/ports.rb +19 -16
  747. data/lib/puppet/provider/package/portupgrade.rb +48 -55
  748. data/lib/puppet/provider/package/puppet_gem.rb +6 -15
  749. data/lib/puppet/provider/package/puppetserver_gem.rb +16 -13
  750. data/lib/puppet/provider/package/rpm.rb +45 -40
  751. data/lib/puppet/provider/package/rug.rb +11 -11
  752. data/lib/puppet/provider/package/sun.rb +28 -24
  753. data/lib/puppet/provider/package/sunfreeware.rb +3 -1
  754. data/lib/puppet/provider/package/tdnf.rb +9 -2
  755. data/lib/puppet/provider/package/up2date.rb +10 -10
  756. data/lib/puppet/provider/package/urpmi.rb +9 -7
  757. data/lib/puppet/provider/package/windows/exe_package.rb +11 -9
  758. data/lib/puppet/provider/package/windows/msi_package.rb +5 -3
  759. data/lib/puppet/provider/package/windows/package.rb +8 -5
  760. data/lib/puppet/provider/package/windows.rb +10 -9
  761. data/lib/puppet/provider/package/xbps.rb +127 -0
  762. data/lib/puppet/provider/package/yum.rb +65 -62
  763. data/lib/puppet/provider/package/zypper.rb +29 -29
  764. data/lib/puppet/provider/package.rb +9 -7
  765. data/lib/puppet/provider/package_targetable.rb +5 -3
  766. data/lib/puppet/provider/parsedfile.rb +21 -17
  767. data/lib/puppet/provider/service/base.rb +19 -23
  768. data/lib/puppet/provider/service/bsd.rb +7 -5
  769. data/lib/puppet/provider/service/daemontools.rb +42 -39
  770. data/lib/puppet/provider/service/debian.rb +12 -10
  771. data/lib/puppet/provider/service/freebsd.rb +50 -52
  772. data/lib/puppet/provider/service/gentoo.rb +11 -9
  773. data/lib/puppet/provider/service/init.rb +33 -31
  774. data/lib/puppet/provider/service/launchd.rb +38 -31
  775. data/lib/puppet/provider/service/openbsd.rb +17 -16
  776. data/lib/puppet/provider/service/openrc.rb +6 -5
  777. data/lib/puppet/provider/service/openwrt.rb +7 -6
  778. data/lib/puppet/provider/service/rcng.rb +7 -5
  779. data/lib/puppet/provider/service/redhat.rb +10 -7
  780. data/lib/puppet/provider/service/runit.rb +16 -15
  781. data/lib/puppet/provider/service/service.rb +7 -8
  782. data/lib/puppet/provider/service/smf.rb +42 -37
  783. data/lib/puppet/provider/service/src.rb +29 -29
  784. data/lib/puppet/provider/service/systemd.rb +48 -48
  785. data/lib/puppet/provider/service/upstart.rb +37 -37
  786. data/lib/puppet/provider/service/windows.rb +45 -48
  787. data/lib/puppet/provider/user/aix.rb +24 -20
  788. data/lib/puppet/provider/user/directoryservice.rb +98 -91
  789. data/lib/puppet/provider/user/hpux.rb +33 -35
  790. data/lib/puppet/provider/user/ldap.rb +13 -10
  791. data/lib/puppet/provider/user/openbsd.rb +24 -22
  792. data/lib/puppet/provider/user/pw.rb +8 -7
  793. data/lib/puppet/provider/user/user_role_add.rb +40 -36
  794. data/lib/puppet/provider/user/useradd.rb +64 -53
  795. data/lib/puppet/provider/user/windows_adsi.rb +14 -10
  796. data/lib/puppet/provider.rb +20 -19
  797. data/lib/puppet/reference/configuration.rb +55 -47
  798. data/lib/puppet/reference/function.rb +2 -0
  799. data/lib/puppet/reference/indirection.rb +33 -28
  800. data/lib/puppet/reference/metaparameter.rb +3 -1
  801. data/lib/puppet/reference/providers.rb +12 -10
  802. data/lib/puppet/reference/report.rb +2 -0
  803. data/lib/puppet/reference/type.rb +7 -5
  804. data/lib/puppet/relationship.rb +10 -9
  805. data/lib/puppet/reports/http.rb +3 -2
  806. data/lib/puppet/reports/log.rb +4 -3
  807. data/lib/puppet/reports/store.rb +9 -6
  808. data/lib/puppet/reports.rb +8 -6
  809. data/lib/puppet/resource/catalog.rb +54 -53
  810. data/lib/puppet/resource/status.rb +9 -7
  811. data/lib/puppet/resource/type.rb +65 -41
  812. data/lib/puppet/resource/type_collection.rb +10 -6
  813. data/lib/puppet/resource.rb +91 -81
  814. data/lib/puppet/runtime.rb +2 -0
  815. data/lib/puppet/scheduler/job.rb +2 -0
  816. data/lib/puppet/scheduler/scheduler.rb +4 -2
  817. data/lib/puppet/scheduler/splay_job.rb +16 -3
  818. data/lib/puppet/scheduler/timer.rb +2 -0
  819. data/lib/puppet/scheduler.rb +3 -1
  820. data/lib/puppet/settings/alias_setting.rb +5 -5
  821. data/lib/puppet/settings/array_setting.rb +2 -1
  822. data/lib/puppet/settings/autosign_setting.rb +2 -1
  823. data/lib/puppet/settings/base_setting.rb +23 -18
  824. data/lib/puppet/settings/boolean_setting.rb +5 -3
  825. data/lib/puppet/settings/certificate_revocation_setting.rb +2 -1
  826. data/lib/puppet/settings/config_file.rb +11 -9
  827. data/lib/puppet/settings/directory_setting.rb +2 -0
  828. data/lib/puppet/settings/duration_setting.rb +5 -4
  829. data/lib/puppet/settings/enum_setting.rb +3 -1
  830. data/lib/puppet/settings/environment_conf.rb +19 -15
  831. data/lib/puppet/settings/errors.rb +6 -3
  832. data/lib/puppet/settings/file_or_directory_setting.rb +4 -7
  833. data/lib/puppet/settings/file_setting.rb +15 -24
  834. data/lib/puppet/settings/http_extra_headers_setting.rb +2 -1
  835. data/lib/puppet/settings/ini_file.rb +5 -3
  836. data/lib/puppet/settings/integer_setting.rb +3 -1
  837. data/lib/puppet/settings/path_setting.rb +2 -0
  838. data/lib/puppet/settings/port_setting.rb +4 -2
  839. data/lib/puppet/settings/priority_setting.rb +13 -12
  840. data/lib/puppet/settings/server_list_setting.rb +7 -6
  841. data/lib/puppet/settings/string_setting.rb +2 -0
  842. data/lib/puppet/settings/symbolic_enum_setting.rb +3 -1
  843. data/lib/puppet/settings/terminus_setting.rb +2 -0
  844. data/lib/puppet/settings/ttl_setting.rb +7 -5
  845. data/lib/puppet/settings/value_translator.rb +9 -7
  846. data/lib/puppet/settings.rb +171 -163
  847. data/lib/puppet/ssl/base.rb +9 -6
  848. data/lib/puppet/ssl/certificate.rb +6 -4
  849. data/lib/puppet/ssl/certificate_request.rb +34 -38
  850. data/lib/puppet/ssl/certificate_request_attributes.rb +7 -4
  851. data/lib/puppet/ssl/certificate_signer.rb +3 -3
  852. data/lib/puppet/ssl/digest.rb +2 -0
  853. data/lib/puppet/ssl/error.rb +3 -0
  854. data/lib/puppet/ssl/oids.rb +11 -9
  855. data/lib/puppet/ssl/openssl_loader.rb +6 -4
  856. data/lib/puppet/ssl/ssl_context.rb +2 -0
  857. data/lib/puppet/ssl/ssl_provider.rb +13 -9
  858. data/lib/puppet/ssl/state_machine.rb +153 -22
  859. data/lib/puppet/ssl/verifier.rb +3 -2
  860. data/lib/puppet/ssl.rb +3 -1
  861. data/lib/puppet/syntax_checkers/base64.rb +7 -5
  862. data/lib/puppet/syntax_checkers/epp.rb +7 -6
  863. data/lib/puppet/syntax_checkers/json.rb +7 -7
  864. data/lib/puppet/syntax_checkers/pp.rb +7 -6
  865. data/lib/puppet/syntax_checkers.rb +3 -1
  866. data/lib/puppet/test/test_helper.rb +30 -44
  867. data/lib/puppet/thread_local.rb +2 -0
  868. data/lib/puppet/transaction/additional_resource_generator.rb +12 -7
  869. data/lib/puppet/transaction/event.rb +8 -5
  870. data/lib/puppet/transaction/event_manager.rb +12 -11
  871. data/lib/puppet/transaction/persistence.rb +16 -16
  872. data/lib/puppet/transaction/report.rb +34 -27
  873. data/lib/puppet/transaction/resource_harness.rb +17 -9
  874. data/lib/puppet/transaction.rb +37 -35
  875. data/lib/puppet/trusted_external.rb +10 -5
  876. data/lib/puppet/type/component.rb +14 -7
  877. data/lib/puppet/type/exec.rb +71 -61
  878. data/lib/puppet/type/file/checksum.rb +6 -2
  879. data/lib/puppet/type/file/checksum_value.rb +6 -4
  880. data/lib/puppet/type/file/content.rb +24 -20
  881. data/lib/puppet/type/file/ctime.rb +5 -4
  882. data/lib/puppet/type/file/data_sync.rb +9 -6
  883. data/lib/puppet/type/file/ensure.rb +24 -25
  884. data/lib/puppet/type/file/group.rb +3 -1
  885. data/lib/puppet/type/file/mode.rb +14 -11
  886. data/lib/puppet/type/file/mtime.rb +5 -3
  887. data/lib/puppet/type/file/owner.rb +3 -2
  888. data/lib/puppet/type/file/selcontext.rb +24 -23
  889. data/lib/puppet/type/file/source.rb +31 -30
  890. data/lib/puppet/type/file/target.rb +23 -25
  891. data/lib/puppet/type/file/type.rb +3 -2
  892. data/lib/puppet/type/file.rb +60 -54
  893. data/lib/puppet/type/filebucket.rb +6 -4
  894. data/lib/puppet/type/group.rb +14 -13
  895. data/lib/puppet/type/notify.rb +4 -3
  896. data/lib/puppet/type/package.rb +47 -45
  897. data/lib/puppet/type/resources.rb +39 -34
  898. data/lib/puppet/type/schedule.rb +21 -21
  899. data/lib/puppet/type/service.rb +19 -18
  900. data/lib/puppet/type/stage.rb +2 -0
  901. data/lib/puppet/type/tidy.rb +40 -34
  902. data/lib/puppet/type/user.rb +62 -56
  903. data/lib/puppet/type/whit.rb +2 -1
  904. data/lib/puppet/type.rb +180 -227
  905. data/lib/puppet/util/at_fork/noop.rb +2 -0
  906. data/lib/puppet/util/at_fork/solaris.rb +37 -39
  907. data/lib/puppet/util/at_fork.rb +3 -1
  908. data/lib/puppet/util/autoload.rb +10 -4
  909. data/lib/puppet/util/backups.rb +13 -11
  910. data/lib/puppet/util/character_encoding.rb +9 -6
  911. data/lib/puppet/util/checksums.rb +16 -12
  912. data/lib/puppet/util/classgen.rb +18 -23
  913. data/lib/puppet/util/colors.rb +67 -65
  914. data/lib/puppet/util/command_line/puppet_option_parser.rb +18 -16
  915. data/lib/puppet/util/command_line/trollop.rb +695 -673
  916. data/lib/puppet/util/command_line.rb +7 -5
  917. data/lib/puppet/util/constant_inflector.rb +4 -3
  918. data/lib/puppet/util/diff.rb +17 -18
  919. data/lib/puppet/util/docs.rb +8 -4
  920. data/lib/puppet/util/errors.rb +13 -11
  921. data/lib/puppet/util/execution.rb +58 -36
  922. data/lib/puppet/util/execution_stub.rb +2 -0
  923. data/lib/puppet/util/feature.rb +9 -9
  924. data/lib/puppet/util/file_watcher.rb +3 -0
  925. data/lib/puppet/util/fileparsing.rb +20 -24
  926. data/lib/puppet/util/filetype.rb +43 -43
  927. data/lib/puppet/util/http_proxy.rb +2 -0
  928. data/lib/puppet/util/inifile.rb +13 -18
  929. data/lib/puppet/util/instance_loader.rb +3 -0
  930. data/lib/puppet/util/json.rb +2 -0
  931. data/lib/puppet/util/json_lockfile.rb +4 -1
  932. data/lib/puppet/util/ldap/connection.rb +21 -19
  933. data/lib/puppet/util/ldap/generator.rb +2 -0
  934. data/lib/puppet/util/ldap/manager.rb +20 -21
  935. data/lib/puppet/util/ldap.rb +2 -0
  936. data/lib/puppet/util/libuser.rb +3 -2
  937. data/lib/puppet/util/limits.rb +2 -0
  938. data/lib/puppet/util/lockfile.rb +8 -8
  939. data/lib/puppet/util/log/destination.rb +4 -3
  940. data/lib/puppet/util/log/destinations.rb +20 -20
  941. data/lib/puppet/util/log.rb +40 -31
  942. data/lib/puppet/util/logging.rb +34 -30
  943. data/lib/puppet/util/metaid.rb +2 -1
  944. data/lib/puppet/util/metric.rb +9 -6
  945. data/lib/puppet/util/monkey_patches.rb +22 -30
  946. data/lib/puppet/util/multi_match.rb +9 -5
  947. data/lib/puppet/util/network_device/base.rb +3 -2
  948. data/lib/puppet/util/network_device/config.rb +9 -9
  949. data/lib/puppet/util/network_device/transport/base.rb +1 -1
  950. data/lib/puppet/util/network_device/transport.rb +2 -0
  951. data/lib/puppet/util/network_device.rb +2 -0
  952. data/lib/puppet/util/package/version/debian.rb +33 -31
  953. data/lib/puppet/util/package/version/gem.rb +3 -0
  954. data/lib/puppet/util/package/version/pip.rb +14 -8
  955. data/lib/puppet/util/package/version/range/eq.rb +4 -1
  956. data/lib/puppet/util/package/version/range/gt.rb +3 -0
  957. data/lib/puppet/util/package/version/range/gt_eq.rb +3 -0
  958. data/lib/puppet/util/package/version/range/lt.rb +4 -1
  959. data/lib/puppet/util/package/version/range/lt_eq.rb +3 -0
  960. data/lib/puppet/util/package/version/range/min_max.rb +5 -0
  961. data/lib/puppet/util/package/version/range/simple.rb +2 -0
  962. data/lib/puppet/util/package/version/range.rb +9 -5
  963. data/lib/puppet/util/package/version/rpm.rb +7 -5
  964. data/lib/puppet/util/package.rb +5 -2
  965. data/lib/puppet/util/pidlock.rb +11 -10
  966. data/lib/puppet/util/platform.rb +5 -3
  967. data/lib/puppet/util/plist.rb +16 -16
  968. data/lib/puppet/util/posix.rb +27 -24
  969. data/lib/puppet/util/profiler/aggregate.rb +7 -10
  970. data/lib/puppet/util/profiler/around_profiler.rb +2 -1
  971. data/lib/puppet/util/profiler/logging.rb +3 -1
  972. data/lib/puppet/util/profiler/object_counts.rb +2 -0
  973. data/lib/puppet/util/profiler/wall_clock.rb +6 -5
  974. data/lib/puppet/util/profiler.rb +2 -0
  975. data/lib/puppet/util/provider_features.rb +10 -6
  976. data/lib/puppet/util/psych_support.rb +2 -0
  977. data/lib/puppet/util/rdoc/code_objects.rb +18 -20
  978. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +118 -128
  979. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +62 -79
  980. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +32 -29
  981. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +3 -1
  982. data/lib/puppet/util/rdoc/parser.rb +3 -1
  983. data/lib/puppet/util/rdoc.rb +10 -9
  984. data/lib/puppet/util/reference.rb +7 -32
  985. data/lib/puppet/util/resource_template.rb +3 -1
  986. data/lib/puppet/util/retry_action.rb +6 -5
  987. data/lib/puppet/util/rpm_compare.rb +31 -28
  988. data/lib/puppet/util/rubygems.rb +3 -3
  989. data/lib/puppet/util/run_mode.rb +46 -4
  990. data/lib/puppet/util/selinux.rb +72 -38
  991. data/lib/puppet/util/skip_tags.rb +2 -0
  992. data/lib/puppet/util/splayer.rb +2 -0
  993. data/lib/puppet/util/storage.rb +13 -13
  994. data/lib/puppet/util/suidmanager.rb +38 -37
  995. data/lib/puppet/util/symbolic_file_mode.rb +76 -76
  996. data/lib/puppet/util/tag_set.rb +4 -2
  997. data/lib/puppet/util/tagging.rb +12 -13
  998. data/lib/puppet/util/terminal.rb +6 -4
  999. data/lib/puppet/util/user_attr.rb +9 -7
  1000. data/lib/puppet/util/warnings.rb +4 -0
  1001. data/lib/puppet/util/watched_file.rb +4 -1
  1002. data/lib/puppet/util/watcher/change_watcher.rb +2 -0
  1003. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -1
  1004. data/lib/puppet/util/watcher/timer.rb +2 -0
  1005. data/lib/puppet/util/watcher.rb +5 -5
  1006. data/lib/puppet/util/windows/access_control_entry.rb +3 -1
  1007. data/lib/puppet/util/windows/access_control_list.rb +10 -7
  1008. data/lib/puppet/util/windows/adsi.rb +82 -74
  1009. data/lib/puppet/util/windows/com.rb +10 -7
  1010. data/lib/puppet/util/windows/daemon.rb +77 -80
  1011. data/lib/puppet/util/windows/error.rb +7 -5
  1012. data/lib/puppet/util/windows/eventlog.rb +13 -9
  1013. data/lib/puppet/util/windows/file.rb +49 -45
  1014. data/lib/puppet/util/windows/monkey_patches/process.rb +2 -3
  1015. data/lib/puppet/util/windows/principal.rb +37 -34
  1016. data/lib/puppet/util/windows/process.rb +36 -40
  1017. data/lib/puppet/util/windows/registry.rb +60 -58
  1018. data/lib/puppet/util/windows/root_certs.rb +5 -3
  1019. data/lib/puppet/util/windows/security.rb +92 -90
  1020. data/lib/puppet/util/windows/security_descriptor.rb +2 -0
  1021. data/lib/puppet/util/windows/service.rb +24 -12
  1022. data/lib/puppet/util/windows/sid.rb +23 -21
  1023. data/lib/puppet/util/windows/string.rb +2 -0
  1024. data/lib/puppet/util/windows/user.rb +56 -55
  1025. data/lib/puppet/util/windows.rb +8 -1
  1026. data/lib/puppet/util/yaml.rb +3 -1
  1027. data/lib/puppet/util.rb +112 -161
  1028. data/lib/puppet/vendor.rb +3 -1
  1029. data/lib/puppet/version.rb +5 -2
  1030. data/lib/puppet/x509/cert_provider.rb +48 -12
  1031. data/lib/puppet/x509/pem_store.rb +3 -1
  1032. data/lib/puppet/x509.rb +2 -0
  1033. data/lib/puppet.rb +22 -19
  1034. data/lib/puppet_pal.rb +2 -0
  1035. data/lib/puppet_x.rb +2 -0
  1036. data/locales/puppet.pot +9723 -5
  1037. data/man/man5/puppet.conf.5 +121 -912
  1038. data/man/man8/puppet-agent.8 +39 -107
  1039. data/man/man8/puppet-apply.8 +18 -51
  1040. data/man/man8/puppet-catalog.8 +25 -122
  1041. data/man/man8/puppet-config.8 +22 -70
  1042. data/man/man8/puppet-describe.8 +6 -22
  1043. data/man/man8/puppet-device.8 +13 -49
  1044. data/man/man8/puppet-doc.8 +8 -24
  1045. data/man/man8/puppet-epp.8 +23 -168
  1046. data/man/man8/puppet-facts.8 +14 -92
  1047. data/man/man8/puppet-filebucket.8 +22 -54
  1048. data/man/man8/puppet-generate.8 +5 -35
  1049. data/man/man8/puppet-help.8 +8 -29
  1050. data/man/man8/puppet-lookup.8 +25 -61
  1051. data/man/man8/puppet-module.8 +19 -124
  1052. data/man/man8/puppet-node.8 +47 -68
  1053. data/man/man8/puppet-parser.8 +12 -55
  1054. data/man/man8/puppet-plugin.8 +10 -33
  1055. data/man/man8/puppet-report.8 +10 -53
  1056. data/man/man8/puppet-resource.8 +19 -44
  1057. data/man/man8/puppet-script.8 +11 -33
  1058. data/man/man8/puppet-ssl.8 +12 -30
  1059. data/man/man8/puppet.8 +90 -20
  1060. data/tasks/tag.rake +34 -0
  1061. metadata +77 -65
  1062. data/CONTRIBUTING.md +0 -161
  1063. data/examples/hiera/etc/hiera.yaml +0 -15
  1064. data/examples/hiera/etc/hieradb/common.yaml +0 -3
  1065. data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
  1066. data/examples/hiera/etc/hieradb/development.yaml +0 -2
  1067. data/examples/hiera/etc/puppet.conf +0 -3
  1068. data/examples/hiera/modules/data/manifests/common.pp +0 -4
  1069. data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
  1070. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
  1071. data/examples/hiera/modules/users/manifests/development.pp +0 -4
  1072. data/lib/puppet/external/pson/common.rb +0 -374
  1073. data/lib/puppet/external/pson/pure/generator.rb +0 -395
  1074. data/lib/puppet/external/pson/pure/parser.rb +0 -308
  1075. data/lib/puppet/external/pson/pure.rb +0 -15
  1076. data/lib/puppet/external/pson/version.rb +0 -8
  1077. data/lib/puppet/module_tool/contents_description.rb +0 -89
  1078. data/tasks/benchmark.rake +0 -180
  1079. data/tasks/ci.rake +0 -24
  1080. data/tasks/generate_ast_model.rake +0 -90
  1081. data/tasks/generate_cert_fixtures.rake +0 -194
  1082. data/tasks/manpages.rake +0 -67
  1083. data/tasks/memwalk.rake +0 -195
  1084. data/tasks/parallel.rake +0 -410
  1085. data/tasks/parser.rake +0 -22
  1086. data/tasks/yard.rake +0 -59
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../../puppet/parser/scope'
2
4
  require_relative '../../../puppet/pops/evaluator/compare_operator'
3
5
  require_relative '../../../puppet/pops/evaluator/relationship_operator'
@@ -33,12 +35,7 @@ class EvaluatorImpl
33
35
  include Runtime3Support
34
36
  include ExternalSyntaxSupport
35
37
 
36
- COMMA_SEPARATOR = ', '.freeze
37
-
38
- # Reference to Issues name space makes it easier to refer to issues
39
- # (Issues are shared with the validator).
40
- #
41
- Issues = Issues
38
+ COMMA_SEPARATOR = ', '
42
39
 
43
40
  def initialize
44
41
  @@initialized ||= static_initialize
@@ -77,53 +74,44 @@ class EvaluatorImpl
77
74
  # @api public
78
75
  #
79
76
  def evaluate(target, scope)
80
- begin
81
- @@eval_visitor.visit_this_1(self, target, scope)
82
-
83
- rescue SemanticError => e
84
- # A raised issue may not know the semantic target, use errors call stack, but fill in the
85
- # rest from a supplied semantic object, or the target instruction if there is not semantic
86
- # object.
87
- #
88
- fail(e.issue, e.semantic || target, e.options, e)
89
-
90
- rescue Puppet::PreformattedError => e
91
- # Already formatted with location information, and with the wanted call stack.
92
- # Note this is currently a specialized ParseError, so rescue-order is important
93
- #
94
- raise e
95
-
96
- rescue Puppet::ParseError => e
97
- # ParseError may be raised in ruby code without knowing the location
98
- # in puppet code.
99
- # Accept a ParseError that has file or line information available
100
- # as an error that should be used verbatim. (Tests typically run without
101
- # setting a file name).
102
- # ParseError can supply an original - it is impossible to determine which
103
- # call stack that should be propagated, using the ParseError's backtrace.
104
- #
105
- if e.file || e.line
106
- raise e
107
- else
108
- # Since it had no location information, treat it as user intended a general purpose
109
- # error. Pass on its call stack.
110
- fail(Issues::RUNTIME_ERROR, target, {:detail => e.message}, e)
111
- end
112
-
113
-
114
- rescue Puppet::Error => e
115
- # PuppetError has the ability to wrap an exception, if so, use the wrapped exception's
116
- # call stack instead
117
- fail(Issues::RUNTIME_ERROR, target, {:detail => e.message}, e.original || e)
118
-
119
- rescue StopIteration => e
120
- # Ensure these are not rescued as StandardError
77
+ @@eval_visitor.visit_this_1(self, target, scope)
78
+ rescue SemanticError => e
79
+ # A raised issue may not know the semantic target, use errors call stack, but fill in the
80
+ # rest from a supplied semantic object, or the target instruction if there is not semantic
81
+ # object.
82
+ #
83
+ fail(e.issue, e.semantic || target, e.options, e)
84
+ rescue Puppet::PreformattedError => e
85
+ # Already formatted with location information, and with the wanted call stack.
86
+ # Note this is currently a specialized ParseError, so rescue-order is important
87
+ #
88
+ raise e
89
+ rescue Puppet::ParseError => e
90
+ # ParseError may be raised in ruby code without knowing the location
91
+ # in puppet code.
92
+ # Accept a ParseError that has file or line information available
93
+ # as an error that should be used verbatim. (Tests typically run without
94
+ # setting a file name).
95
+ # ParseError can supply an original - it is impossible to determine which
96
+ # call stack that should be propagated, using the ParseError's backtrace.
97
+ #
98
+ if e.file || e.line
121
99
  raise e
122
-
123
- rescue StandardError => e
124
- # All other errors, use its message and call stack
125
- fail(Issues::RUNTIME_ERROR, target, {:detail => e.message}, e)
100
+ else
101
+ # Since it had no location information, treat it as user intended a general purpose
102
+ # error. Pass on its call stack.
103
+ fail(Issues::RUNTIME_ERROR, target, { :detail => e.message }, e)
126
104
  end
105
+ rescue Puppet::Error => e
106
+ # PuppetError has the ability to wrap an exception, if so, use the wrapped exception's
107
+ # call stack instead
108
+ fail(Issues::RUNTIME_ERROR, target, { :detail => e.message }, e.original || e)
109
+ rescue StopIteration => e
110
+ # Ensure these are not rescued as StandardError
111
+ raise e
112
+ rescue StandardError => e
113
+ # All other errors, use its message and call stack
114
+ fail(Issues::RUNTIME_ERROR, target, { :detail => e.message }, e)
127
115
  end
128
116
 
129
117
  # Assigns the given _value_ to the given _target_. The additional argument _o_ is the instruction that
@@ -202,7 +190,7 @@ class EvaluatorImpl
202
190
 
203
191
  # An array is assignable if all entries are lvalues
204
192
  def lvalue_LiteralList(o, scope)
205
- o.values.map {|x| lvalue(x, scope) }
193
+ o.values.map { |x| lvalue(x, scope) }
206
194
  end
207
195
 
208
196
  # Assign value to named variable.
@@ -217,14 +205,15 @@ class EvaluatorImpl
217
205
  #
218
206
  def assign_String(name, value, o, scope)
219
207
  if name =~ /::/
220
- fail(Issues::CROSS_SCOPE_ASSIGNMENT, o.left_expr, {:name => name})
208
+ fail(Issues::CROSS_SCOPE_ASSIGNMENT, o.left_expr, { :name => name })
221
209
  end
210
+
222
211
  set_variable(name, value, o, scope)
223
212
  value
224
213
  end
225
214
 
226
215
  def assign_Numeric(n, value, o, scope)
227
- fail(Issues::ILLEGAL_NUMERIC_ASSIGNMENT, o.left_expr, {:varname => n.to_s})
216
+ fail(Issues::ILLEGAL_NUMERIC_ASSIGNMENT, o.left_expr, { :varname => n.to_s })
228
217
  end
229
218
 
230
219
  # Catches all illegal assignment (e.g. 1 = 2, {'a'=>1} = 2, etc)
@@ -234,16 +223,18 @@ class EvaluatorImpl
234
223
  end
235
224
 
236
225
  def assign_Array(lvalues, values, o, scope)
237
- if values.is_a?(Hash)
226
+ case values
227
+ when Hash
238
228
  lvalues.map do |lval|
239
229
  assign(lval,
240
- values.fetch(lval) {|k| fail(Issues::MISSING_MULTI_ASSIGNMENT_KEY, o, :key =>k)},
241
- o, scope)
230
+ values.fetch(lval) { |k| fail(Issues::MISSING_MULTI_ASSIGNMENT_KEY, o, :key => k) },
231
+ o, scope)
242
232
  end
243
- elsif values.is_a?(Puppet::Pops::Types::PClassType)
233
+ when Puppet::Pops::Types::PClassType
244
234
  if Puppet[:tasks]
245
- fail(Issues::CATALOG_OPERATION_NOT_SUPPORTED_WHEN_SCRIPTING, o, {:operation => _('multi var assignment from class')})
235
+ fail(Issues::CATALOG_OPERATION_NOT_SUPPORTED_WHEN_SCRIPTING, o, { :operation => _('multi var assignment from class') })
246
236
  end
237
+
247
238
  # assign variables from class variables
248
239
  # lookup class resource and return one or more parameter values
249
240
  # TODO: behavior when class_name is nil
@@ -258,18 +249,19 @@ class EvaluatorImpl
258
249
  result = get_variable_value(varname, o, scope)
259
250
  assign(lval, result, o, scope)
260
251
  else
261
- fail(Puppet::Pops::Issues::MISSING_MULTI_ASSIGNMENT_VARIABLE, o.left_expr.values[idx], {:name => varname})
252
+ fail(Puppet::Pops::Issues::MISSING_MULTI_ASSIGNMENT_VARIABLE, o.left_expr.values[idx], { :name => varname })
262
253
  end
263
254
  end
264
255
  else
265
- fail(Issues::UNKNOWN_RESOURCE, o.right_expr, {:type_name => 'Class', :title => values.class_name})
256
+ fail(Issues::UNKNOWN_RESOURCE, o.right_expr, { :type_name => 'Class', :title => values.class_name })
266
257
  end
267
258
 
268
259
  else
269
260
  values = [values] unless values.is_a?(Array)
270
261
  if values.size != lvalues.size
271
- fail(Issues::ILLEGAL_MULTI_ASSIGNMENT_SIZE, o, :expected =>lvalues.size, :actual => values.size)
262
+ fail(Issues::ILLEGAL_MULTI_ASSIGNMENT_SIZE, o, :expected => lvalues.size, :actual => values.size)
272
263
  end
264
+
273
265
  lvalues.zip(values).map { |lval, val| assign(lval, val, o, scope) }
274
266
  end
275
267
  end
@@ -303,7 +295,7 @@ class EvaluatorImpl
303
295
  #
304
296
  def eval_ReservedWord(o, scope)
305
297
  if !o.future
306
- fail(Issues::RESERVED_WORD, o, {:word => o.word})
298
+ fail(Issues::RESERVED_WORD, o, { :word => o.word })
307
299
  else
308
300
  o.word
309
301
  end
@@ -321,12 +313,13 @@ class EvaluatorImpl
321
313
  #
322
314
  def eval_QualifiedReference(o, scope)
323
315
  type = Types::TypeParser.singleton.interpret(o)
324
- fail(Issues::UNKNOWN_RESOURCE_TYPE, o, {:type_name => type.type_string }) if type.is_a?(Types::PTypeReferenceType)
316
+ fail(Issues::UNKNOWN_RESOURCE_TYPE, o, { :type_name => type.type_string }) if type.is_a?(Types::PTypeReferenceType)
317
+
325
318
  type
326
319
  end
327
320
 
328
321
  def eval_NotExpression(o, scope)
329
- ! is_true?(evaluate(o.expr, scope), o.expr)
322
+ !is_true?(evaluate(o.expr, scope), o.expr)
330
323
  end
331
324
 
332
325
  def eval_UnaryMinusExpression(o, scope)
@@ -355,7 +348,7 @@ class EvaluatorImpl
355
348
  # @return <Array<Object, Object>> array with result of evaluating left and right expressions
356
349
  #
357
350
  def eval_BinaryExpression o, scope
358
- [ evaluate(o.left_expr, scope), evaluate(o.right_expr, scope) ]
351
+ [evaluate(o.left_expr, scope), evaluate(o.right_expr, scope)]
359
352
  end
360
353
 
361
354
  # Evaluates assignment with operators =, +=, -= and
@@ -372,7 +365,7 @@ class EvaluatorImpl
372
365
  if o.operator == '='
373
366
  assign(name, value, o, scope)
374
367
  else
375
- fail(Issues::UNSUPPORTED_OPERATOR, o, {:operator => o.operator})
368
+ fail(Issues::UNSUPPORTED_OPERATOR, o, { :operator => o.operator })
376
369
  end
377
370
  value
378
371
  end
@@ -389,18 +382,17 @@ class EvaluatorImpl
389
382
  begin
390
383
  result = calculate(left, right, o, scope)
391
384
  rescue ArgumentError => e
392
- fail(Issues::RUNTIME_ERROR, o, {:detail => e.message}, e)
385
+ fail(Issues::RUNTIME_ERROR, o, { :detail => e.message }, e)
393
386
  end
394
387
  result
395
388
  end
396
389
 
397
-
398
390
  # Handles binary expression where lhs and rhs are array/hash or numeric and operator is +, - , *, % / << >>
399
391
  #
400
392
  def calculate(left, right, bin_expr, scope)
401
393
  operator = bin_expr.operator
402
394
  unless ARITHMETIC_OPERATORS.include?(operator)
403
- fail(Issues::UNSUPPORTED_OPERATOR, bin_expr, {:operator => operator})
395
+ fail(Issues::UNSUPPORTED_OPERATOR, bin_expr, { :operator => operator })
404
396
  end
405
397
 
406
398
  left_o = bin_expr.left_expr
@@ -415,8 +407,9 @@ class EvaluatorImpl
415
407
  delete(left, right)
416
408
  when '<<'
417
409
  unless left.is_a?(Array)
418
- fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, {:operator => operator, :left_value => left})
410
+ fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, { :operator => operator, :left_value => left })
419
411
  end
412
+
420
413
  left + [right]
421
414
  end
422
415
  else
@@ -426,8 +419,9 @@ class EvaluatorImpl
426
419
  begin
427
420
  if operator == '%' && (left.is_a?(Float) || right.is_a?(Float))
428
421
  # Deny users the fun of seeing severe rounding errors and confusing results
429
- fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, {:operator => operator, :left_value => left}) if left.is_a?(Float)
430
- fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, {:operator => operator, :left_value => left, :right_value => right})
422
+ fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, { :operator => operator, :left_value => left }) if left.is_a?(Float)
423
+
424
+ fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, { :operator => operator, :left_value => left, :right_value => right })
431
425
  end
432
426
  if right.is_a?(Time::TimeData) && !left.is_a?(Time::TimeData)
433
427
  if operator == '+' || operator == '*' && right.is_a?(Time::Timespan)
@@ -438,23 +432,23 @@ class EvaluatorImpl
438
432
  elsif operator == '-' && right.is_a?(Time::Timespan)
439
433
  left = Time::Timespan.new((left * Time::NSECS_PER_SEC).to_i)
440
434
  else
441
- fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, {:operator => operator, :left_value => left, :right_value => right})
435
+ fail(Issues::OPERATOR_NOT_APPLICABLE_WHEN, left_o, { :operator => operator, :left_value => left, :right_value => right })
442
436
  end
443
437
  end
444
438
  result = left.send(operator, right)
445
439
  rescue NoMethodError
446
- fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, {:operator => operator, :left_value => left})
440
+ fail(Issues::OPERATOR_NOT_APPLICABLE, left_o, { :operator => operator, :left_value => left })
447
441
  rescue ZeroDivisionError
448
442
  fail(Issues::DIV_BY_ZERO, bin_expr.right_expr)
449
443
  end
450
444
  case result
451
445
  when Float
452
446
  if result == Float::INFINITY || result == -Float::INFINITY
453
- fail(Issues::RESULT_IS_INFINITY, left_o, {:operator => operator})
447
+ fail(Issues::RESULT_IS_INFINITY, left_o, { :operator => operator })
454
448
  end
455
449
  when Integer
456
450
  if result < MIN_INTEGER || result > MAX_INTEGER
457
- fail(Issues::NUMERIC_OVERFLOW, bin_expr, {:value => result})
451
+ fail(Issues::NUMERIC_OVERFLOW, bin_expr, { :value => result })
458
452
  end
459
453
  end
460
454
  result
@@ -514,9 +508,9 @@ class EvaluatorImpl
514
508
  keys = o.keys || []
515
509
  if left.is_a?(Types::PClassType)
516
510
  # Evaluate qualified references without errors no undefined types
517
- keys = keys.map {|key| key.is_a?(Model::QualifiedReference) ? Types::TypeParser.singleton.interpret(key) : evaluate(key, scope) }
511
+ keys = keys.map { |key| key.is_a?(Model::QualifiedReference) ? Types::TypeParser.singleton.interpret(key) : evaluate(key, scope) }
518
512
  else
519
- keys = keys.map {|key| evaluate(key, scope) }
513
+ keys = keys.map { |key| evaluate(key, scope) }
520
514
  # Resource[File] becomes File
521
515
  return keys[0] if Types::PResourceType::DEFAULT == left && keys.size == 1 && keys[0].is_a?(Types::PResourceType)
522
516
  end
@@ -530,54 +524,55 @@ class EvaluatorImpl
530
524
  right = evaluate(o.right_expr, scope)
531
525
 
532
526
  begin
533
- # Left is a type
534
- if left.is_a?(Types::PAnyType)
535
- case o.operator
536
- when '=='
537
- @@type_calculator.equals(left,right)
538
-
539
- when '!='
540
- !@@type_calculator.equals(left,right)
541
-
542
- when '<'
543
- # left can be assigned to right, but they are not equal
544
- @@type_calculator.assignable?(right, left) && ! @@type_calculator.equals(left,right)
545
- when '<='
546
- # left can be assigned to right
547
- @@type_calculator.assignable?(right, left)
548
- when '>'
549
- # right can be assigned to left, but they are not equal
550
- @@type_calculator.assignable?(left,right) && ! @@type_calculator.equals(left,right)
551
- when '>='
552
- # right can be assigned to left
553
- @@type_calculator.assignable?(left, right)
554
- else
555
- fail(Issues::UNSUPPORTED_OPERATOR, o, {:operator => o.operator})
556
- end
557
- else
558
- case o.operator
559
- when '=='
560
- @@compare_operator.equals(left,right)
561
- when '!='
562
- ! @@compare_operator.equals(left,right)
563
- when '<'
564
- @@compare_operator.compare(left,right) < 0
565
- when '<='
566
- @@compare_operator.compare(left,right) <= 0
567
- when '>'
568
- @@compare_operator.compare(left,right) > 0
569
- when '>='
570
- @@compare_operator.compare(left,right) >= 0
527
+ # Left is a type
528
+ if left.is_a?(Types::PAnyType)
529
+ case o.operator
530
+ when '=='
531
+ @@type_calculator.equals(left, right)
532
+
533
+ when '!='
534
+ !@@type_calculator.equals(left, right)
535
+
536
+ when '<'
537
+ # left can be assigned to right, but they are not equal
538
+ @@type_calculator.assignable?(right, left) && !@@type_calculator.equals(left, right)
539
+ when '<='
540
+ # left can be assigned to right
541
+ @@type_calculator.assignable?(right, left)
542
+ when '>'
543
+ # right can be assigned to left, but they are not equal
544
+ @@type_calculator.assignable?(left, right) && !@@type_calculator.equals(left, right)
545
+ when '>='
546
+ # right can be assigned to left
547
+ @@type_calculator.assignable?(left, right)
548
+ else
549
+ fail(Issues::UNSUPPORTED_OPERATOR, o, { :operator => o.operator })
550
+ end
571
551
  else
572
- fail(Issues::UNSUPPORTED_OPERATOR, o, {:operator => o.operator})
552
+ case o.operator
553
+ when '=='
554
+ @@compare_operator.equals(left, right)
555
+ when '!='
556
+ !@@compare_operator.equals(left, right)
557
+ when '<'
558
+ @@compare_operator.compare(left, right) < 0
559
+ when '<='
560
+ @@compare_operator.compare(left, right) <= 0
561
+ when '>'
562
+ @@compare_operator.compare(left, right) > 0
563
+ when '>='
564
+ @@compare_operator.compare(left, right) >= 0
565
+ else
566
+ fail(Issues::UNSUPPORTED_OPERATOR, o, { :operator => o.operator })
567
+ end
573
568
  end
574
- end
575
569
  rescue ArgumentError => e
576
570
  fail(Issues::COMPARISON_NOT_POSSIBLE, o, {
577
- :operator => o.operator,
578
- :left_value => left,
579
- :right_value => right,
580
- :detail => e.message}, e)
571
+ :operator => o.operator,
572
+ :left_value => left,
573
+ :right_value => right,
574
+ :detail => e.message
575
+ }, e)
581
576
  end
582
577
  end
583
578
 
@@ -620,14 +615,14 @@ class EvaluatorImpl
620
615
  begin
621
616
  pattern = Regexp.new(pattern) unless pattern.is_a?(Regexp)
622
617
  rescue StandardError => e
623
- fail(Issues::MATCH_NOT_REGEXP, o.right_expr, {:detail => e.message}, e)
618
+ fail(Issues::MATCH_NOT_REGEXP, o.right_expr, { :detail => e.message }, e)
624
619
  end
625
620
  unless left.is_a?(String)
626
- fail(Issues::MATCH_NOT_STRING, o.left_expr, {:left_value => left})
621
+ fail(Issues::MATCH_NOT_STRING, o.left_expr, { :left_value => left })
627
622
  end
628
623
 
629
624
  matched = pattern.match(left) # nil, or MatchData
630
- set_match_data(matched,scope) # creates ephemeral
625
+ set_match_data(matched, scope) # creates ephemeral
631
626
 
632
627
  # convert match result to Boolean true, or false
633
628
  o.operator == '=~' ? !!matched : !matched
@@ -670,13 +665,13 @@ class EvaluatorImpl
670
665
  #
671
666
  def eval_LiteralHash o, scope
672
667
  # optimized
673
- o.entries.reduce({}) {|h,entry| h[evaluate(entry.key, scope)] = evaluate(entry.value, scope); h }
668
+ o.entries.each_with_object({}) { |entry, h| h[evaluate(entry.key, scope)] = evaluate(entry.value, scope); }
674
669
  end
675
670
 
676
671
  # Evaluates all statements and produces the last evaluated value
677
672
  #
678
673
  def eval_BlockExpression o, scope
679
- o.statements.reduce(nil) {|memo, s| evaluate(s, scope)}
674
+ o.statements.reduce(nil) { |_memo, s| evaluate(s, scope) }
680
675
  end
681
676
 
682
677
  # Performs optimized search over case option values, lazily evaluating each
@@ -696,7 +691,7 @@ class EvaluatorImpl
696
691
  the_default = nil
697
692
  if o.options.find do |co|
698
693
  # the first case option that matches
699
- if co.values.find do |c|
694
+ next unless co.values.find do |c|
700
695
  c = unwind_parentheses(c)
701
696
  case c
702
697
  when Model::LiteralDefault
@@ -705,14 +700,14 @@ class EvaluatorImpl
705
700
  when Model::UnfoldExpression
706
701
  # not ideal for error reporting, since it is not known which unfolded result
707
702
  # that caused an error - the entire unfold expression is blamed (i.e. the var c, passed to is_match?)
708
- evaluate(c, scope).any? {|v| is_match?(test, v, c, co, scope) }
703
+ evaluate(c, scope).any? { |v| is_match?(test, v, c, co, scope) }
709
704
  else
710
705
  is_match?(test, evaluate(c, scope), c, co, scope)
711
706
  end
712
707
  end
708
+
713
709
  result = evaluate(co.then_expr, scope)
714
710
  true # the option was picked
715
- end
716
711
  end
717
712
  result # an option was picked, and produced a result
718
713
  else
@@ -729,7 +724,7 @@ class EvaluatorImpl
729
724
  if o.query.is_a?(Model::ExportedQuery)
730
725
  optionally_fail(Issues::RT_NO_STORECONFIGS, o);
731
726
  end
732
- CollectorTransformer.new().transform(o,scope)
727
+ CollectorTransformer.new().transform(o, scope)
733
728
  end
734
729
 
735
730
  def eval_ParenthesizedExpression(o, scope)
@@ -749,17 +744,15 @@ class EvaluatorImpl
749
744
  end
750
745
 
751
746
  def eval_Program(o, scope)
752
- begin
753
- file = o.locator.file
754
- line = 0
755
- # Add stack frame for "top scope" logic. See Puppet::Pops::PuppetStack
756
- return Puppet::Pops::PuppetStack.stack(file, line, self, 'evaluate', [o.body, scope])
757
- #evaluate(o.body, scope)
758
- rescue Puppet::Pops::Evaluator::PuppetStopIteration => ex
759
- # breaking out of a file level program is not allowed
760
- #TRANSLATOR break() is a method that should not be translated
761
- raise Puppet::ParseError.new(_("break() from context where this is illegal"), ex.file, ex.line)
762
- end
747
+ file = o.locator.file
748
+ line = 0
749
+ # Add stack frame for "top scope" logic. See Puppet::Pops::PuppetStack
750
+ Puppet::Pops::PuppetStack.stack(file, line, self, 'evaluate', [o.body, scope])
751
+ # evaluate(o.body, scope)
752
+ rescue Puppet::Pops::Evaluator::PuppetStopIteration => ex
753
+ # breaking out of a file level program is not allowed
754
+ # TRANSLATOR break() is a method that should not be translated
755
+ raise Puppet::ParseError.new(_("break() from context where this is illegal"), ex.file, ex.line)
763
756
  end
764
757
 
765
758
  # Produces Array[PAnyType], an array of resource references
@@ -770,49 +763,51 @@ class EvaluatorImpl
770
763
 
771
764
  # Get the type name
772
765
  type_name =
773
- if (tmp_name = o.type_name).is_a?(Model::QualifiedName)
774
- tmp_name.value # already validated as a name
775
- else
776
- type_name_acceptable =
777
- case o.type_name
778
- when Model::QualifiedReference
779
- true
780
- when Model::AccessExpression
781
- o.type_name.left_expr.is_a?(Model::QualifiedReference)
782
- end
783
-
784
- evaluated_name = evaluate(tmp_name, scope)
785
- unless type_name_acceptable
786
- actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
787
- fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual => actual})
788
- end
766
+ if (tmp_name = o.type_name).is_a?(Model::QualifiedName)
767
+ tmp_name.value # already validated as a name
768
+ else
769
+ type_name_acceptable =
770
+ case o.type_name
771
+ when Model::QualifiedReference
772
+ true
773
+ when Model::AccessExpression
774
+ o.type_name.left_expr.is_a?(Model::QualifiedReference)
775
+ end
789
776
 
790
- # must be a CatalogEntry subtype
791
- case evaluated_name
792
- when Types::PClassType
793
- unless evaluated_name.class_name.nil?
794
- fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
777
+ evaluated_name = evaluate(tmp_name, scope)
778
+ unless type_name_acceptable
779
+ actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
780
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => actual })
795
781
  end
796
- 'class'
797
782
 
798
- when Types::PResourceType
799
- unless evaluated_name.title().nil?
800
- fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=> evaluated_name.to_s})
801
- end
802
- evaluated_name.type_name # assume validated
783
+ # must be a CatalogEntry subtype
784
+ case evaluated_name
785
+ when Types::PClassType
786
+ unless evaluated_name.class_name.nil?
787
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => evaluated_name.to_s })
788
+ end
803
789
 
804
- when Types::PTypeReferenceType
805
- fail(Issues::UNKNOWN_RESOURCE_TYPE, o.type_string, {:type_name => evaluated_name.to_s})
790
+ 'class'
806
791
 
807
- else
808
- actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
809
- fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, {:actual=>actual})
792
+ when Types::PResourceType
793
+ unless evaluated_name.title().nil?
794
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => evaluated_name.to_s })
795
+ end
796
+
797
+ evaluated_name.type_name # assume validated
798
+
799
+ when Types::PTypeReferenceType
800
+ fail(Issues::UNKNOWN_RESOURCE_TYPE, o.type_string, { :type_name => evaluated_name.to_s })
801
+
802
+ else
803
+ actual = type_calculator.generalize(type_calculator.infer(evaluated_name)).to_s
804
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_name, { :actual => actual })
805
+ end
810
806
  end
811
- end
812
807
 
813
808
  # This is a runtime check - the model is valid, but will have runtime issues when evaluated
814
809
  # and storeconfigs is not set.
815
- if(o.exported)
810
+ if o.exported
816
811
  optionally_fail(Issues::RT_NO_STORECONFIGS_EXPORT, o);
817
812
  end
818
813
 
@@ -821,7 +816,7 @@ class EvaluatorImpl
821
816
  body_to_params = {}
822
817
 
823
818
  # titles are evaluated before attribute operations
824
- o.bodies.map do | body |
819
+ o.bodies.map do |body|
825
820
  titles = evaluate(body.title, scope)
826
821
 
827
822
  # Title may not be nil
@@ -833,23 +828,25 @@ class EvaluatorImpl
833
828
  if titles.nil?
834
829
  fail(Issues::MISSING_TITLE, body.title)
835
830
  end
831
+
836
832
  titles = [titles].flatten
837
833
 
838
834
  # Check types of evaluated titles and duplicate entries
839
835
  titles.each_with_index do |title, index|
840
836
  if title.nil?
841
- fail(Issues::MISSING_TITLE_AT, body.title, {:index => index})
837
+ fail(Issues::MISSING_TITLE_AT, body.title, { :index => index })
842
838
 
843
839
  elsif !title.is_a?(String) && title != :default
844
840
  actual = type_calculator.generalize(type_calculator.infer(title)).to_s
845
- fail(Issues::ILLEGAL_TITLE_TYPE_AT, body.title, {:index => index, :actual => actual})
841
+ fail(Issues::ILLEGAL_TITLE_TYPE_AT, body.title, { :index => index, :actual => actual })
846
842
 
847
843
  elsif title == EMPTY_STRING
848
- fail(Issues::EMPTY_STRING_TITLE_AT, body.title, {:index => index})
844
+ fail(Issues::EMPTY_STRING_TITLE_AT, body.title, { :index => index })
849
845
 
850
846
  elsif titles_to_body[title]
851
- fail(Issues::DUPLICATE_TITLE, o, {:title => title})
847
+ fail(Issues::DUPLICATE_TITLE, o, { :title => title })
852
848
  end
849
+
853
850
  titles_to_body[title] = body
854
851
  end
855
852
 
@@ -860,16 +857,16 @@ class EvaluatorImpl
860
857
 
861
858
  # Store evaluated parameters in a hash associated with the body, but do not yet create resource
862
859
  # since the entry containing :defaults may appear later
863
- body_to_params[body] = body.operations.reduce({}) do |param_memo, op|
860
+ body_to_params[body] = body.operations.each_with_object({}) do |op, param_memo|
864
861
  params = evaluate(op, scope)
865
862
  params = [params] unless params.is_a?(Array)
866
863
  params.each do |p|
867
864
  if param_memo.include? p.name
868
- fail(Issues::DUPLICATE_ATTRIBUTE, o, {:attribute => p.name})
865
+ fail(Issues::DUPLICATE_ATTRIBUTE, o, { :attribute => p.name })
869
866
  end
867
+
870
868
  param_memo[p.name] = p
871
869
  end
872
- param_memo
873
870
  end
874
871
  end
875
872
 
@@ -878,7 +875,7 @@ class EvaluatorImpl
878
875
  # evaluating the ResourceExpression.
879
876
  #
880
877
  defaults_hash = body_to_params[titles_to_body[:default]] || {}
881
- o.bodies.map do | body |
878
+ o.bodies.map do |body|
882
879
  titles = body_to_titles[body]
883
880
  params = defaults_hash.merge(body_to_params[body] || {})
884
881
  create_resources(o, scope, virtual, exported, type_name, titles, params.values)
@@ -913,9 +910,9 @@ class EvaluatorImpl
913
910
  hashed_params = evaluate(o.expr, scope)
914
911
  unless hashed_params.is_a?(Hash)
915
912
  actual = type_calculator.generalize(type_calculator.infer(hashed_params)).to_s
916
- fail(Issues::TYPE_MISMATCH, o.expr, {:expected => 'Hash', :actual => actual})
913
+ fail(Issues::TYPE_MISMATCH, o.expr, { :expected => 'Hash', :actual => actual })
917
914
  end
918
- hashed_params.map { |k,v| create_resource_parameter(o, scope, k, v, '=>') }
915
+ hashed_params.map { |k, v| create_resource_parameter(o, scope, k, v, '=>') }
919
916
  end
920
917
 
921
918
  # Sets default parameter values for a type, produces the type
@@ -923,13 +920,13 @@ class EvaluatorImpl
923
920
  def eval_ResourceDefaultsExpression(o, scope)
924
921
  type = evaluate(o.type_ref, scope)
925
922
  type_name =
926
- if type.is_a?(Types::PResourceType) && !type.type_name.nil? && type.title.nil?
927
- type.type_name # assume it is a valid name
928
- else
929
- actual = type_calculator.generalize(type_calculator.infer(type))
930
- fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_ref, {:actual => actual})
931
- end
932
- evaluated_parameters = o.operations.map {|op| evaluate(op, scope) }
923
+ if type.is_a?(Types::PResourceType) && !type.type_name.nil? && type.title.nil?
924
+ type.type_name # assume it is a valid name
925
+ else
926
+ actual = type_calculator.generalize(type_calculator.infer(type))
927
+ fail(Issues::ILLEGAL_RESOURCE_TYPE, o.type_ref, { :actual => actual })
928
+ end
929
+ evaluated_parameters = o.operations.map { |op| evaluate(op, scope) }
933
930
  create_resource_defaults(o, scope, type_name, evaluated_parameters)
934
931
  # Produce the type
935
932
  type
@@ -943,7 +940,7 @@ class EvaluatorImpl
943
940
  #
944
941
  functor = o.functor_expr
945
942
  if functor.is_a?(Model::QualifiedReference) ||
946
- functor.is_a?(Model::AccessExpression) && functor.left_expr.is_a?(Model::QualifiedReference)
943
+ functor.is_a?(Model::AccessExpression) && functor.left_expr.is_a?(Model::QualifiedReference)
947
944
  # instantiation
948
945
  type = evaluate(functor, scope)
949
946
  return call_function_with_block('new', unfold([type], o.arguments || [], scope), o, scope)
@@ -958,7 +955,7 @@ class EvaluatorImpl
958
955
  # helpful to point out this easy to make Epp error
959
956
  fail(Issues::ILLEGAL_EPP_PARAMETERS, o)
960
957
  else
961
- fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function name', :container => o})
958
+ fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, { :feature => 'function name', :container => o })
962
959
  end
963
960
  name = o.functor_expr.value
964
961
  call_function_with_block(name, unfold([], o.arguments, scope), o, scope)
@@ -968,13 +965,15 @@ class EvaluatorImpl
968
965
  #
969
966
  def eval_CallMethodExpression(o, scope)
970
967
  unless o.functor_expr.is_a? Model::NamedAccessExpression
971
- fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function accessor', :container => o})
968
+ fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, { :feature => 'function accessor', :container => o })
972
969
  end
970
+
973
971
  receiver = unfold([], [o.functor_expr.left_expr], scope)
974
972
  name = o.functor_expr.right_expr
975
973
  unless name.is_a? Model::QualifiedName
976
- fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, {:feature=>'function name', :container => o})
974
+ fail(Issues::ILLEGAL_EXPRESSION, o.functor_expr, { :feature => 'function name', :container => o })
977
975
  end
976
+
978
977
  name = name.value # the string function name
979
978
 
980
979
  obj = receiver[0]
@@ -1025,7 +1024,7 @@ class EvaluatorImpl
1025
1024
  when Model::UnfoldExpression
1026
1025
  # not ideal for error reporting, since it is not known which unfolded result
1027
1026
  # that caused an error - the entire unfold expression is blamed (i.e. the var c, passed to is_match?)
1028
- evaluate(me, scope).any? {|v| is_match?(test, v, me, s, scope) }
1027
+ evaluate(me, scope).any? { |v| is_match?(test, v, me, s, scope) }
1029
1028
  else
1030
1029
  is_match?(test, evaluate(me, scope), me, s, scope)
1031
1030
  end
@@ -1065,10 +1064,10 @@ class EvaluatorImpl
1065
1064
  # Evaluates Puppet DSL `unless`
1066
1065
  def eval_UnlessExpression o, scope
1067
1066
  scope.with_guarded_scope do
1068
- unless is_true?(evaluate(o.test, scope), o.test)
1069
- evaluate(o.then_expr, scope)
1070
- else
1067
+ if is_true?(evaluate(o.test, scope), o.test)
1071
1068
  evaluate(o.else_expr, scope)
1069
+ else
1070
+ evaluate(o.then_expr, scope)
1072
1071
  end
1073
1072
  end
1074
1073
  end
@@ -1087,7 +1086,9 @@ class EvaluatorImpl
1087
1086
  # may occur for some evaluation use cases.
1088
1087
  case name
1089
1088
  when String
1089
+ # do nothing
1090
1090
  when Numeric
1091
+ # do nothing
1091
1092
  else
1092
1093
  fail(Issues::ILLEGAL_VARIABLE_EXPRESSION, o.expr)
1093
1094
  end
@@ -1097,10 +1098,9 @@ class EvaluatorImpl
1097
1098
  # Evaluates double quoted strings that may contain interpolation
1098
1099
  #
1099
1100
  def eval_ConcatenatedString o, scope
1100
- o.segments.collect {|expr| string(evaluate(expr, scope), scope)}.join
1101
+ o.segments.collect { |expr| string(evaluate(expr, scope), scope) }.join
1101
1102
  end
1102
1103
 
1103
-
1104
1104
  # If the wrapped expression is a QualifiedName, it is taken as the name of a variable in scope.
1105
1105
  # Note that this is different from the 3.x implementation, where an initial qualified name
1106
1106
  # is accepted. (e.g. `"---${var + 1}---"` is legal. This implementation requires such concrete
@@ -1124,7 +1124,7 @@ class EvaluatorImpl
1124
1124
  end
1125
1125
 
1126
1126
  def string_Symbol(o, scope)
1127
- if :undef == o # optimized comparison 1.44 vs 1.95
1127
+ if :undef == o # optimized comparison 1.44 vs 1.95
1128
1128
  EMPTY_STRING
1129
1129
  else
1130
1130
  o.to_s
@@ -1132,11 +1132,11 @@ class EvaluatorImpl
1132
1132
  end
1133
1133
 
1134
1134
  def string_Array(o, scope)
1135
- "[#{o.map {|e| string(e, scope)}.join(COMMA_SEPARATOR)}]"
1135
+ "[#{o.map { |e| string(e, scope) }.join(COMMA_SEPARATOR)}]"
1136
1136
  end
1137
1137
 
1138
1138
  def string_Hash(o, scope)
1139
- "{#{o.map {|k,v| "#{string(k, scope)} => #{string(v, scope)}"}.join(COMMA_SEPARATOR)}}"
1139
+ "{#{o.map { |k, v| "#{string(k, scope)} => #{string(v, scope)}" }.join(COMMA_SEPARATOR)}}"
1140
1140
  end
1141
1141
 
1142
1142
  def string_Regexp(o, scope)
@@ -1210,37 +1210,38 @@ class EvaluatorImpl
1210
1210
  case x
1211
1211
  when Array
1212
1212
  y = case y
1213
- when Array then y
1214
- when Hash then y.to_a
1215
- else
1216
- [y]
1217
- end
1213
+ when Array then y
1214
+ when Hash then y.to_a
1215
+ else [y]
1216
+ end
1218
1217
  x + y # new array with concatenation
1219
1218
  when Hash
1220
1219
  y = case y
1221
- when Hash then y
1222
- when Array
1223
- # Hash[[a, 1, b, 2]] => {}
1224
- # Hash[a,1,b,2] => {a => 1, b => 2}
1225
- # Hash[[a,1], [b,2]] => {[a,1] => [b,2]}
1226
- # Hash[[[a,1], [b,2]]] => {a => 1, b => 2}
1227
- # Use type calculator to determine if array is Array[Array[?]], and if so use second form
1228
- # of call
1229
- t = @@type_calculator.infer(y)
1230
- if t.element_type.is_a? Types::PArrayType
1231
- Hash[y]
1232
- else
1233
- Hash[*y]
1234
- end
1235
- else
1236
- raise ArgumentError.new(_('Can only append Array or Hash to a Hash'))
1237
- end
1220
+ when Hash then y
1221
+ when Array
1222
+ # Hash[[a, 1, b, 2]] => {}
1223
+ # Hash[a,1,b,2] => {a => 1, b => 2}
1224
+ # Hash[[a,1], [b,2]] => {[a,1] => [b,2]}
1225
+ # Hash[[[a,1], [b,2]]] => {a => 1, b => 2}
1226
+ # Use type calculator to determine if array is Array[Array[?]], and if so use second form
1227
+ # of call
1228
+ t = @@type_calculator.infer(y)
1229
+ if t.element_type.is_a? Types::PArrayType
1230
+ y.to_h
1231
+ else
1232
+ Hash[*y]
1233
+ end
1234
+ else
1235
+ raise ArgumentError, _('Can only append Array or Hash to a Hash')
1236
+ end
1238
1237
  x.merge y # new hash with overwrite
1239
1238
  when URI
1240
- raise ArgumentError.new(_('An URI can only be merged with an URI or String')) unless y.is_a?(String) || y.is_a?(URI)
1239
+ raise ArgumentError, _('An URI can only be merged with an URI or String') unless y.is_a?(String) || y.is_a?(URI)
1240
+
1241
1241
  x + y
1242
1242
  when Types::PBinaryType::Binary
1243
- raise ArgumentError.new(_('Can only append Binary to a Binary')) unless y.is_a?(Types::PBinaryType::Binary)
1243
+ raise ArgumentError, _('Can only append Binary to a Binary') unless y.is_a?(Types::PBinaryType::Binary)
1244
+
1244
1245
  Types::PBinaryType::Binary.from_binary_string(x.binary_buffer + y.binary_buffer)
1245
1246
  else
1246
1247
  concatenate([x], y)
@@ -1258,22 +1259,20 @@ class EvaluatorImpl
1258
1259
  case x
1259
1260
  when Array
1260
1261
  y = case y
1261
- when Array then y
1262
- when Hash then y.to_a
1263
- else
1264
- [y]
1265
- end
1266
- y.each {|e| result.delete(e) }
1262
+ when Array then y
1263
+ when Hash then y.to_a
1264
+ else [y]
1265
+ end
1266
+ y.each { |e| result.delete(e) }
1267
1267
  when Hash
1268
1268
  y = case y
1269
- when Array then y
1270
- when Hash then y.keys
1271
- else
1272
- [y]
1273
- end
1274
- y.each {|e| result.delete(e) }
1269
+ when Array then y
1270
+ when Hash then y.keys
1271
+ else [y]
1272
+ end
1273
+ y.each { |e| result.delete(e) }
1275
1274
  else
1276
- raise ArgumentError.new(_("Can only delete from an Array or Hash."))
1275
+ raise ArgumentError, _("Can only delete from an Array or Hash.")
1277
1276
  end
1278
1277
  result
1279
1278
  end
@@ -1309,6 +1308,7 @@ class EvaluatorImpl
1309
1308
 
1310
1309
  def unwind_parentheses(o)
1311
1310
  return o unless o.is_a?(Model::ParenthesizedExpression)
1311
+
1312
1312
  unwind_parentheses(o.expr)
1313
1313
  end
1314
1314
  private :unwind_parentheses