puppet 8.2.0-x86-mingw32 → 8.4.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1063) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +45 -43
  4. data/README.md +4 -4
  5. data/Rakefile +0 -27
  6. data/examples/enc/regexp_nodes/regexp_nodes.rb +1 -1
  7. data/ext/project_data.yaml +2 -2
  8. data/ext/windows/service/daemon.rb +4 -5
  9. data/lib/hiera/puppet_function.rb +3 -2
  10. data/lib/hiera/scope.rb +2 -2
  11. data/lib/hiera_puppet.rb +1 -3
  12. data/lib/puppet/agent/disabler.rb +2 -1
  13. data/lib/puppet/agent/locker.rb +1 -2
  14. data/lib/puppet/agent.rb +2 -1
  15. data/lib/puppet/application/agent.rb +292 -291
  16. data/lib/puppet/application/apply.rb +143 -139
  17. data/lib/puppet/application/catalog.rb +1 -0
  18. data/lib/puppet/application/config.rb +1 -0
  19. data/lib/puppet/application/describe.rb +53 -55
  20. data/lib/puppet/application/device.rb +150 -150
  21. data/lib/puppet/application/doc.rb +61 -60
  22. data/lib/puppet/application/epp.rb +1 -0
  23. data/lib/puppet/application/face_base.rb +8 -7
  24. data/lib/puppet/application/facts.rb +1 -0
  25. data/lib/puppet/application/filebucket.rb +186 -184
  26. data/lib/puppet/application/generate.rb +1 -0
  27. data/lib/puppet/application/help.rb +1 -0
  28. data/lib/puppet/application/indirection_base.rb +1 -0
  29. data/lib/puppet/application/lookup.rb +168 -171
  30. data/lib/puppet/application/module.rb +1 -0
  31. data/lib/puppet/application/node.rb +1 -0
  32. data/lib/puppet/application/parser.rb +1 -0
  33. data/lib/puppet/application/plugin.rb +1 -0
  34. data/lib/puppet/application/report.rb +1 -0
  35. data/lib/puppet/application/resource.rb +111 -108
  36. data/lib/puppet/application/script.rb +92 -93
  37. data/lib/puppet/application/ssl.rb +119 -83
  38. data/lib/puppet/application.rb +13 -8
  39. data/lib/puppet/application_support.rb +1 -1
  40. data/lib/puppet/coercion.rb +3 -2
  41. data/lib/puppet/compilable_resource_type.rb +1 -0
  42. data/lib/puppet/concurrent/lock.rb +1 -2
  43. data/lib/puppet/concurrent/synchronized.rb +1 -2
  44. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  45. data/lib/puppet/concurrent.rb +1 -0
  46. data/lib/puppet/configurer/downloader.rb +1 -1
  47. data/lib/puppet/configurer/fact_handler.rb +2 -1
  48. data/lib/puppet/configurer/plugin_handler.rb +1 -0
  49. data/lib/puppet/configurer.rb +17 -13
  50. data/lib/puppet/confine/any.rb +1 -0
  51. data/lib/puppet/confine/boolean.rb +1 -0
  52. data/lib/puppet/confine/exists.rb +1 -0
  53. data/lib/puppet/confine/false.rb +1 -0
  54. data/lib/puppet/confine/feature.rb +1 -0
  55. data/lib/puppet/confine/true.rb +1 -0
  56. data/lib/puppet/confine/variable.rb +1 -0
  57. data/lib/puppet/confine.rb +2 -0
  58. data/lib/puppet/confine_collection.rb +3 -1
  59. data/lib/puppet/confiner.rb +1 -0
  60. data/lib/puppet/context/trusted_information.rb +1 -0
  61. data/lib/puppet/context.rb +1 -0
  62. data/lib/puppet/daemon.rb +4 -1
  63. data/lib/puppet/data_binding.rb +2 -1
  64. data/lib/puppet/datatypes/error.rb +2 -1
  65. data/lib/puppet/datatypes/impl/error.rb +1 -0
  66. data/lib/puppet/datatypes.rb +5 -1
  67. data/lib/puppet/defaults.rb +24 -23
  68. data/lib/puppet/environments.rb +3 -2
  69. data/lib/puppet/error.rb +9 -7
  70. data/lib/puppet/etc.rb +6 -3
  71. data/lib/puppet/external/dot.rb +12 -31
  72. data/lib/puppet/face/catalog/select.rb +2 -1
  73. data/lib/puppet/face/catalog.rb +3 -2
  74. data/lib/puppet/face/config.rb +19 -21
  75. data/lib/puppet/face/epp.rb +8 -8
  76. data/lib/puppet/face/facts.rb +4 -3
  77. data/lib/puppet/face/generate.rb +2 -0
  78. data/lib/puppet/face/help.rb +8 -7
  79. data/lib/puppet/face/module/changes.rb +2 -0
  80. data/lib/puppet/face/module/install.rb +2 -1
  81. data/lib/puppet/face/module/list.rb +9 -10
  82. data/lib/puppet/face/module/uninstall.rb +1 -0
  83. data/lib/puppet/face/module.rb +1 -0
  84. data/lib/puppet/face/node/clean.rb +2 -1
  85. data/lib/puppet/face/node.rb +2 -1
  86. data/lib/puppet/face/parser.rb +3 -3
  87. data/lib/puppet/face/plugin.rb +2 -1
  88. data/lib/puppet/face/report.rb +2 -1
  89. data/lib/puppet/face/resource.rb +1 -0
  90. data/lib/puppet/face.rb +1 -0
  91. data/lib/puppet/feature/base.rb +2 -1
  92. data/lib/puppet/feature/bolt.rb +1 -0
  93. data/lib/puppet/feature/cfpropertylist.rb +1 -0
  94. data/lib/puppet/feature/eventlog.rb +1 -0
  95. data/lib/puppet/feature/hiera_eyaml.rb +1 -0
  96. data/lib/puppet/feature/hocon.rb +1 -0
  97. data/lib/puppet/feature/libuser.rb +4 -3
  98. data/lib/puppet/feature/msgpack.rb +1 -0
  99. data/lib/puppet/feature/pe_license.rb +2 -1
  100. data/lib/puppet/feature/pson.rb +1 -0
  101. data/lib/puppet/feature/selinux.rb +1 -0
  102. data/lib/puppet/feature/ssh.rb +1 -0
  103. data/lib/puppet/feature/telnet.rb +1 -0
  104. data/lib/puppet/feature/zlib.rb +1 -0
  105. data/lib/puppet/ffi/posix/constants.rb +1 -0
  106. data/lib/puppet/ffi/posix/functions.rb +1 -1
  107. data/lib/puppet/ffi/posix.rb +1 -0
  108. data/lib/puppet/ffi/windows/api_types.rb +1 -0
  109. data/lib/puppet/ffi/windows/constants.rb +78 -77
  110. data/lib/puppet/ffi/windows/functions.rb +73 -73
  111. data/lib/puppet/ffi/windows/structs.rb +3 -3
  112. data/lib/puppet/ffi/windows.rb +1 -0
  113. data/lib/puppet/file_bucket/dipper.rb +7 -1
  114. data/lib/puppet/file_bucket/file.rb +1 -0
  115. data/lib/puppet/file_bucket.rb +1 -0
  116. data/lib/puppet/file_serving/base.rb +13 -6
  117. data/lib/puppet/file_serving/configuration/parser.rb +3 -1
  118. data/lib/puppet/file_serving/configuration.rb +5 -3
  119. data/lib/puppet/file_serving/content.rb +1 -0
  120. data/lib/puppet/file_serving/fileset.rb +9 -6
  121. data/lib/puppet/file_serving/http_metadata.rb +1 -3
  122. data/lib/puppet/file_serving/metadata.rb +9 -10
  123. data/lib/puppet/file_serving/mount/file.rb +6 -3
  124. data/lib/puppet/file_serving/mount/locales.rb +2 -1
  125. data/lib/puppet/file_serving/mount/modules.rb +2 -0
  126. data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
  127. data/lib/puppet/file_serving/mount/plugins.rb +2 -1
  128. data/lib/puppet/file_serving/mount/scripts.rb +2 -0
  129. data/lib/puppet/file_serving/mount/tasks.rb +2 -0
  130. data/lib/puppet/file_serving/mount.rb +2 -0
  131. data/lib/puppet/file_serving/terminus_helper.rb +1 -0
  132. data/lib/puppet/file_serving/terminus_selector.rb +1 -0
  133. data/lib/puppet/file_serving.rb +1 -0
  134. data/lib/puppet/file_system/file_impl.rb +2 -2
  135. data/lib/puppet/file_system/jruby.rb +1 -0
  136. data/lib/puppet/file_system/memory_file.rb +2 -0
  137. data/lib/puppet/file_system/memory_impl.rb +3 -0
  138. data/lib/puppet/file_system/path_pattern.rb +1 -0
  139. data/lib/puppet/file_system/posix.rb +5 -1
  140. data/lib/puppet/file_system/uniquefile.rb +11 -11
  141. data/lib/puppet/file_system/windows.rb +4 -2
  142. data/lib/puppet/file_system.rb +3 -2
  143. data/lib/puppet/forge/cache.rb +1 -1
  144. data/lib/puppet/forge/errors.rb +1 -3
  145. data/lib/puppet/forge/repository.rb +2 -0
  146. data/lib/puppet/forge.rb +3 -0
  147. data/lib/puppet/functions/abs.rb +2 -1
  148. data/lib/puppet/functions/alert.rb +1 -0
  149. data/lib/puppet/functions/all.rb +1 -0
  150. data/lib/puppet/functions/annotate.rb +1 -0
  151. data/lib/puppet/functions/any.rb +1 -0
  152. data/lib/puppet/functions/assert_type.rb +1 -0
  153. data/lib/puppet/functions/binary_file.rb +3 -1
  154. data/lib/puppet/functions/break.rb +2 -1
  155. data/lib/puppet/functions/call.rb +1 -1
  156. data/lib/puppet/functions/camelcase.rb +1 -1
  157. data/lib/puppet/functions/capitalize.rb +1 -1
  158. data/lib/puppet/functions/ceiling.rb +2 -2
  159. data/lib/puppet/functions/chomp.rb +1 -1
  160. data/lib/puppet/functions/chop.rb +1 -1
  161. data/lib/puppet/functions/compare.rb +1 -0
  162. data/lib/puppet/functions/contain.rb +1 -0
  163. data/lib/puppet/functions/convert_to.rb +1 -0
  164. data/lib/puppet/functions/crit.rb +1 -0
  165. data/lib/puppet/functions/debug.rb +1 -0
  166. data/lib/puppet/functions/defined.rb +7 -4
  167. data/lib/puppet/functions/dig.rb +10 -8
  168. data/lib/puppet/functions/downcase.rb +1 -0
  169. data/lib/puppet/functions/each.rb +1 -0
  170. data/lib/puppet/functions/emerg.rb +1 -0
  171. data/lib/puppet/functions/empty.rb +1 -0
  172. data/lib/puppet/functions/epp.rb +1 -1
  173. data/lib/puppet/functions/err.rb +1 -0
  174. data/lib/puppet/functions/eyaml_lookup_key.rb +6 -4
  175. data/lib/puppet/functions/filter.rb +1 -0
  176. data/lib/puppet/functions/find_file.rb +1 -0
  177. data/lib/puppet/functions/find_template.rb +1 -0
  178. data/lib/puppet/functions/flatten.rb +1 -0
  179. data/lib/puppet/functions/floor.rb +2 -2
  180. data/lib/puppet/functions/get.rb +2 -1
  181. data/lib/puppet/functions/getvar.rb +2 -1
  182. data/lib/puppet/functions/hiera.rb +1 -0
  183. data/lib/puppet/functions/hiera_array.rb +1 -0
  184. data/lib/puppet/functions/hiera_hash.rb +1 -0
  185. data/lib/puppet/functions/hiera_include.rb +2 -0
  186. data/lib/puppet/functions/hocon_data.rb +1 -0
  187. data/lib/puppet/functions/import.rb +1 -0
  188. data/lib/puppet/functions/include.rb +1 -0
  189. data/lib/puppet/functions/index.rb +2 -2
  190. data/lib/puppet/functions/info.rb +1 -0
  191. data/lib/puppet/functions/inline_epp.rb +1 -1
  192. data/lib/puppet/functions/join.rb +2 -1
  193. data/lib/puppet/functions/json_data.rb +1 -0
  194. data/lib/puppet/functions/keys.rb +1 -0
  195. data/lib/puppet/functions/length.rb +1 -1
  196. data/lib/puppet/functions/lest.rb +1 -0
  197. data/lib/puppet/functions/lookup.rb +8 -9
  198. data/lib/puppet/functions/lstrip.rb +1 -1
  199. data/lib/puppet/functions/map.rb +1 -0
  200. data/lib/puppet/functions/match.rb +3 -1
  201. data/lib/puppet/functions/max.rb +4 -4
  202. data/lib/puppet/functions/min.rb +4 -4
  203. data/lib/puppet/functions/module_directory.rb +1 -0
  204. data/lib/puppet/functions/new.rb +2 -1
  205. data/lib/puppet/functions/next.rb +1 -0
  206. data/lib/puppet/functions/notice.rb +1 -0
  207. data/lib/puppet/functions/reduce.rb +1 -1
  208. data/lib/puppet/functions/regsubst.rb +1 -0
  209. data/lib/puppet/functions/require.rb +2 -0
  210. data/lib/puppet/functions/return.rb +1 -0
  211. data/lib/puppet/functions/reverse_each.rb +1 -0
  212. data/lib/puppet/functions/round.rb +1 -0
  213. data/lib/puppet/functions/rstrip.rb +1 -1
  214. data/lib/puppet/functions/scanf.rb +1 -0
  215. data/lib/puppet/functions/size.rb +1 -2
  216. data/lib/puppet/functions/slice.rb +2 -0
  217. data/lib/puppet/functions/sort.rb +1 -0
  218. data/lib/puppet/functions/split.rb +29 -1
  219. data/lib/puppet/functions/step.rb +1 -0
  220. data/lib/puppet/functions/strftime.rb +3 -2
  221. data/lib/puppet/functions/strip.rb +1 -1
  222. data/lib/puppet/functions/then.rb +2 -0
  223. data/lib/puppet/functions/tree_each.rb +1 -1
  224. data/lib/puppet/functions/type.rb +1 -0
  225. data/lib/puppet/functions/unique.rb +2 -1
  226. data/lib/puppet/functions/unwrap.rb +1 -0
  227. data/lib/puppet/functions/upcase.rb +1 -0
  228. data/lib/puppet/functions/values.rb +1 -0
  229. data/lib/puppet/functions/versioncmp.rb +2 -2
  230. data/lib/puppet/functions/warning.rb +1 -0
  231. data/lib/puppet/functions/with.rb +1 -0
  232. data/lib/puppet/functions/yaml_data.rb +1 -0
  233. data/lib/puppet/functions.rb +9 -9
  234. data/lib/puppet/generate/models/type/property.rb +2 -0
  235. data/lib/puppet/generate/models/type/type.rb +2 -0
  236. data/lib/puppet/generate/type.rb +6 -1
  237. data/lib/puppet/gettext/config.rb +6 -0
  238. data/lib/puppet/gettext/module_translations.rb +1 -1
  239. data/lib/puppet/gettext/stubs.rb +1 -0
  240. data/lib/puppet/graph/key.rb +1 -0
  241. data/lib/puppet/graph/prioritizer.rb +1 -0
  242. data/lib/puppet/graph/rb_tree_map.rb +12 -2
  243. data/lib/puppet/graph/relationship_graph.rb +3 -2
  244. data/lib/puppet/graph/sequential_prioritizer.rb +1 -0
  245. data/lib/puppet/graph/simple_graph.rb +38 -31
  246. data/lib/puppet/graph.rb +1 -0
  247. data/lib/puppet/http/client.rb +4 -1
  248. data/lib/puppet/http/dns.rb +5 -5
  249. data/lib/puppet/http/errors.rb +1 -0
  250. data/lib/puppet/http/external_client.rb +2 -2
  251. data/lib/puppet/http/factory.rb +1 -0
  252. data/lib/puppet/http/pool.rb +2 -1
  253. data/lib/puppet/http/pool_entry.rb +1 -0
  254. data/lib/puppet/http/proxy.rb +3 -2
  255. data/lib/puppet/http/redirector.rb +1 -0
  256. data/lib/puppet/http/resolver/server_list.rb +1 -1
  257. data/lib/puppet/http/resolver/settings.rb +1 -1
  258. data/lib/puppet/http/resolver/srv.rb +1 -1
  259. data/lib/puppet/http/resolver.rb +1 -0
  260. data/lib/puppet/http/response.rb +1 -0
  261. data/lib/puppet/http/response_converter.rb +1 -0
  262. data/lib/puppet/http/response_net_http.rb +1 -1
  263. data/lib/puppet/http/retry_after_handler.rb +1 -1
  264. data/lib/puppet/http/service/ca.rb +1 -0
  265. data/lib/puppet/http/service/compiler.rb +9 -3
  266. data/lib/puppet/http/service/file_server.rb +2 -1
  267. data/lib/puppet/http/service/puppetserver.rb +1 -1
  268. data/lib/puppet/http/service/report.rb +1 -1
  269. data/lib/puppet/http/service.rb +1 -0
  270. data/lib/puppet/http/session.rb +2 -1
  271. data/lib/puppet/http/site.rb +1 -0
  272. data/lib/puppet/http.rb +1 -0
  273. data/lib/puppet/indirector/catalog/compiler.rb +50 -40
  274. data/lib/puppet/indirector/catalog/json.rb +1 -0
  275. data/lib/puppet/indirector/catalog/msgpack.rb +1 -0
  276. data/lib/puppet/indirector/catalog/rest.rb +9 -0
  277. data/lib/puppet/indirector/catalog/store_configs.rb +1 -2
  278. data/lib/puppet/indirector/catalog/yaml.rb +1 -0
  279. data/lib/puppet/indirector/code.rb +1 -0
  280. data/lib/puppet/indirector/data_binding/hiera.rb +1 -0
  281. data/lib/puppet/indirector/data_binding/none.rb +1 -0
  282. data/lib/puppet/indirector/direct_file_server.rb +3 -1
  283. data/lib/puppet/indirector/envelope.rb +1 -0
  284. data/lib/puppet/indirector/errors.rb +1 -0
  285. data/lib/puppet/indirector/exec.rb +1 -0
  286. data/lib/puppet/indirector/face.rb +7 -6
  287. data/lib/puppet/indirector/fact_search.rb +1 -0
  288. data/lib/puppet/indirector/facts/facter.rb +3 -1
  289. data/lib/puppet/indirector/facts/json.rb +1 -0
  290. data/lib/puppet/indirector/facts/memory.rb +1 -0
  291. data/lib/puppet/indirector/facts/network_device.rb +1 -0
  292. data/lib/puppet/indirector/facts/rest.rb +1 -0
  293. data/lib/puppet/indirector/facts/store_configs.rb +1 -1
  294. data/lib/puppet/indirector/facts/yaml.rb +1 -0
  295. data/lib/puppet/indirector/file_bucket_file/file.rb +11 -6
  296. data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -0
  297. data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -0
  298. data/lib/puppet/indirector/file_content/file.rb +1 -0
  299. data/lib/puppet/indirector/file_content/file_server.rb +1 -0
  300. data/lib/puppet/indirector/file_content/rest.rb +1 -0
  301. data/lib/puppet/indirector/file_content/selector.rb +1 -0
  302. data/lib/puppet/indirector/file_content.rb +1 -0
  303. data/lib/puppet/indirector/file_metadata/file.rb +1 -0
  304. data/lib/puppet/indirector/file_metadata/file_server.rb +1 -0
  305. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  306. data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
  307. data/lib/puppet/indirector/file_metadata/selector.rb +1 -0
  308. data/lib/puppet/indirector/file_metadata.rb +1 -0
  309. data/lib/puppet/indirector/file_server.rb +2 -0
  310. data/lib/puppet/indirector/generic_http.rb +1 -0
  311. data/lib/puppet/indirector/hiera.rb +5 -4
  312. data/lib/puppet/indirector/indirection.rb +12 -2
  313. data/lib/puppet/indirector/json.rb +3 -1
  314. data/lib/puppet/indirector/memory.rb +2 -0
  315. data/lib/puppet/indirector/msgpack.rb +5 -2
  316. data/lib/puppet/indirector/node/exec.rb +3 -2
  317. data/lib/puppet/indirector/node/json.rb +1 -1
  318. data/lib/puppet/indirector/node/memory.rb +1 -0
  319. data/lib/puppet/indirector/node/msgpack.rb +1 -0
  320. data/lib/puppet/indirector/node/plain.rb +1 -0
  321. data/lib/puppet/indirector/node/rest.rb +1 -0
  322. data/lib/puppet/indirector/node/store_configs.rb +1 -2
  323. data/lib/puppet/indirector/node/yaml.rb +1 -0
  324. data/lib/puppet/indirector/none.rb +1 -0
  325. data/lib/puppet/indirector/plain.rb +1 -0
  326. data/lib/puppet/indirector/report/json.rb +1 -0
  327. data/lib/puppet/indirector/report/msgpack.rb +1 -0
  328. data/lib/puppet/indirector/report/processor.rb +2 -0
  329. data/lib/puppet/indirector/report/rest.rb +1 -0
  330. data/lib/puppet/indirector/report/yaml.rb +1 -0
  331. data/lib/puppet/indirector/request.rb +7 -5
  332. data/lib/puppet/indirector/resource/ral.rb +1 -0
  333. data/lib/puppet/indirector/resource/store_configs.rb +1 -0
  334. data/lib/puppet/indirector/resource/validator.rb +1 -0
  335. data/lib/puppet/indirector/rest.rb +1 -0
  336. data/lib/puppet/indirector/store_configs.rb +1 -0
  337. data/lib/puppet/indirector/terminus.rb +4 -1
  338. data/lib/puppet/indirector/yaml.rb +1 -0
  339. data/lib/puppet/indirector.rb +2 -0
  340. data/lib/puppet/info_service/class_information_service.rb +5 -3
  341. data/lib/puppet/info_service/plan_information_service.rb +1 -0
  342. data/lib/puppet/info_service/task_information_service.rb +2 -1
  343. data/lib/puppet/interface/action.rb +32 -27
  344. data/lib/puppet/interface/action_builder.rb +14 -14
  345. data/lib/puppet/interface/action_manager.rb +2 -0
  346. data/lib/puppet/interface/documentation.rb +21 -15
  347. data/lib/puppet/interface/face_collection.rb +5 -2
  348. data/lib/puppet/interface/option.rb +15 -4
  349. data/lib/puppet/interface/option_builder.rb +13 -9
  350. data/lib/puppet/interface/option_manager.rb +3 -2
  351. data/lib/puppet/interface.rb +3 -3
  352. data/lib/puppet/loaders.rb +1 -1
  353. data/lib/puppet/metatype/manager.rb +9 -8
  354. data/lib/puppet/module/plan.rb +10 -4
  355. data/lib/puppet/module/task.rb +8 -2
  356. data/lib/puppet/module.rb +13 -3
  357. data/lib/puppet/module_tool/applications/application.rb +6 -4
  358. data/lib/puppet/module_tool/applications/checksummer.rb +1 -2
  359. data/lib/puppet/module_tool/applications/installer.rb +32 -45
  360. data/lib/puppet/module_tool/applications/uninstaller.rb +22 -21
  361. data/lib/puppet/module_tool/applications/unpacker.rb +3 -0
  362. data/lib/puppet/module_tool/applications/upgrader.rb +28 -26
  363. data/lib/puppet/module_tool/applications.rb +1 -0
  364. data/lib/puppet/module_tool/checksums.rb +1 -1
  365. data/lib/puppet/module_tool/contents_description.rb +1 -2
  366. data/lib/puppet/module_tool/dependency.rb +1 -1
  367. data/lib/puppet/module_tool/errors/base.rb +1 -0
  368. data/lib/puppet/module_tool/errors/installer.rb +4 -4
  369. data/lib/puppet/module_tool/errors/shared.rb +12 -12
  370. data/lib/puppet/module_tool/errors/uninstaller.rb +2 -2
  371. data/lib/puppet/module_tool/errors/upgrader.rb +3 -3
  372. data/lib/puppet/module_tool/errors.rb +1 -0
  373. data/lib/puppet/module_tool/install_directory.rb +6 -4
  374. data/lib/puppet/module_tool/installed_modules.rb +2 -0
  375. data/lib/puppet/module_tool/local_tarball.rb +3 -0
  376. data/lib/puppet/module_tool/metadata.rb +21 -20
  377. data/lib/puppet/module_tool/shared_behaviors.rb +23 -21
  378. data/lib/puppet/module_tool/tar/gnu.rb +1 -0
  379. data/lib/puppet/module_tool/tar/mini.rb +1 -0
  380. data/lib/puppet/module_tool/tar.rb +2 -1
  381. data/lib/puppet/module_tool.rb +2 -2
  382. data/lib/puppet/network/authconfig.rb +1 -0
  383. data/lib/puppet/network/authorization.rb +1 -0
  384. data/lib/puppet/network/client_request.rb +1 -0
  385. data/lib/puppet/network/format.rb +5 -0
  386. data/lib/puppet/network/format_handler.rb +2 -1
  387. data/lib/puppet/network/format_support.rb +6 -5
  388. data/lib/puppet/network/formats.rb +18 -14
  389. data/lib/puppet/network/http/api/indirected_routes.rb +8 -8
  390. data/lib/puppet/network/http/api/indirection_type.rb +1 -1
  391. data/lib/puppet/network/http/api/master/v3/environments.rb +1 -0
  392. data/lib/puppet/network/http/api/master/v3.rb +1 -0
  393. data/lib/puppet/network/http/api/master.rb +1 -0
  394. data/lib/puppet/network/http/api/server/v3/environments.rb +20 -14
  395. data/lib/puppet/network/http/api/server/v3.rb +13 -13
  396. data/lib/puppet/network/http/api/server.rb +1 -0
  397. data/lib/puppet/network/http/api.rb +11 -10
  398. data/lib/puppet/network/http/connection.rb +1 -0
  399. data/lib/puppet/network/http/error.rb +2 -1
  400. data/lib/puppet/network/http/handler.rb +3 -2
  401. data/lib/puppet/network/http/issues.rb +1 -0
  402. data/lib/puppet/network/http/memory_response.rb +2 -1
  403. data/lib/puppet/network/http/request.rb +13 -6
  404. data/lib/puppet/network/http/response.rb +1 -0
  405. data/lib/puppet/network/http/route.rb +4 -2
  406. data/lib/puppet/network/http.rb +1 -0
  407. data/lib/puppet/network/http_pool.rb +2 -1
  408. data/lib/puppet/network/uri.rb +1 -0
  409. data/lib/puppet/network.rb +1 -0
  410. data/lib/puppet/node/environment.rb +12 -9
  411. data/lib/puppet/node/facts.rb +2 -1
  412. data/lib/puppet/node.rb +3 -2
  413. data/lib/puppet/pal/catalog_compiler.rb +1 -3
  414. data/lib/puppet/pal/compiler.rb +6 -2
  415. data/lib/puppet/pal/function_signature.rb +2 -1
  416. data/lib/puppet/pal/json_catalog_encoder.rb +5 -1
  417. data/lib/puppet/pal/pal_api.rb +1 -0
  418. data/lib/puppet/pal/pal_impl.rb +20 -19
  419. data/lib/puppet/pal/plan_signature.rb +2 -1
  420. data/lib/puppet/pal/script_compiler.rb +3 -2
  421. data/lib/puppet/pal/task_signature.rb +14 -9
  422. data/lib/puppet/parameter/boolean.rb +1 -0
  423. data/lib/puppet/parameter/package_options.rb +1 -0
  424. data/lib/puppet/parameter/path.rb +3 -0
  425. data/lib/puppet/parameter/value.rb +1 -0
  426. data/lib/puppet/parameter/value_collection.rb +6 -6
  427. data/lib/puppet/parameter.rb +4 -3
  428. data/lib/puppet/parser/abstract_compiler.rb +0 -2
  429. data/lib/puppet/parser/ast/block_expression.rb +1 -0
  430. data/lib/puppet/parser/ast/branch.rb +1 -0
  431. data/lib/puppet/parser/ast/hostclass.rb +1 -0
  432. data/lib/puppet/parser/ast/leaf.rb +2 -0
  433. data/lib/puppet/parser/ast/node.rb +1 -0
  434. data/lib/puppet/parser/ast/pops_bridge.rb +6 -6
  435. data/lib/puppet/parser/ast/resource.rb +2 -3
  436. data/lib/puppet/parser/ast/resource_instance.rb +2 -0
  437. data/lib/puppet/parser/ast/resourceparam.rb +6 -5
  438. data/lib/puppet/parser/ast/top_level_construct.rb +1 -0
  439. data/lib/puppet/parser/ast.rb +4 -3
  440. data/lib/puppet/parser/catalog_compiler.rb +1 -2
  441. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +3 -0
  442. data/lib/puppet/parser/compiler/catalog_validator.rb +1 -0
  443. data/lib/puppet/parser/compiler.rb +10 -8
  444. data/lib/puppet/parser/e4_parser_adapter.rb +15 -15
  445. data/lib/puppet/parser/files.rb +5 -4
  446. data/lib/puppet/parser/functions/assert_type.rb +55 -54
  447. data/lib/puppet/parser/functions/binary_file.rb +19 -18
  448. data/lib/puppet/parser/functions/break.rb +35 -34
  449. data/lib/puppet/parser/functions/contain.rb +1 -0
  450. data/lib/puppet/parser/functions/create_resources.rb +8 -6
  451. data/lib/puppet/parser/functions/defined.rb +102 -101
  452. data/lib/puppet/parser/functions/dig.rb +33 -32
  453. data/lib/puppet/parser/functions/digest.rb +1 -0
  454. data/lib/puppet/parser/functions/each.rb +99 -98
  455. data/lib/puppet/parser/functions/epp.rb +2 -2
  456. data/lib/puppet/parser/functions/fail.rb +9 -8
  457. data/lib/puppet/parser/functions/file.rb +14 -13
  458. data/lib/puppet/parser/functions/filter.rb +74 -73
  459. data/lib/puppet/parser/functions/find_file.rb +22 -21
  460. data/lib/puppet/parser/functions/fqdn_rand.rb +23 -22
  461. data/lib/puppet/parser/functions/generate.rb +20 -20
  462. data/lib/puppet/parser/functions/hiera.rb +94 -93
  463. data/lib/puppet/parser/functions/hiera_array.rb +82 -81
  464. data/lib/puppet/parser/functions/hiera_hash.rb +92 -91
  465. data/lib/puppet/parser/functions/hiera_include.rb +92 -91
  466. data/lib/puppet/parser/functions/include.rb +2 -1
  467. data/lib/puppet/parser/functions/inline_epp.rb +2 -2
  468. data/lib/puppet/parser/functions/inline_template.rb +11 -11
  469. data/lib/puppet/parser/functions/lest.rb +44 -43
  470. data/lib/puppet/parser/functions/lookup.rb +131 -130
  471. data/lib/puppet/parser/functions/map.rb +71 -70
  472. data/lib/puppet/parser/functions/match.rb +39 -38
  473. data/lib/puppet/parser/functions/md5.rb +2 -1
  474. data/lib/puppet/parser/functions/new.rb +985 -984
  475. data/lib/puppet/parser/functions/next.rb +34 -33
  476. data/lib/puppet/parser/functions/realize.rb +9 -9
  477. data/lib/puppet/parser/functions/reduce.rb +132 -131
  478. data/lib/puppet/parser/functions/regsubst.rb +6 -5
  479. data/lib/puppet/parser/functions/require.rb +5 -4
  480. data/lib/puppet/parser/functions/return.rb +88 -87
  481. data/lib/puppet/parser/functions/reverse_each.rb +78 -77
  482. data/lib/puppet/parser/functions/scanf.rb +28 -27
  483. data/lib/puppet/parser/functions/sha1.rb +2 -1
  484. data/lib/puppet/parser/functions/sha256.rb +1 -0
  485. data/lib/puppet/parser/functions/shellquote.rb +1 -0
  486. data/lib/puppet/parser/functions/slice.rb +34 -33
  487. data/lib/puppet/parser/functions/split.rb +5 -6
  488. data/lib/puppet/parser/functions/sprintf.rb +3 -3
  489. data/lib/puppet/parser/functions/step.rb +79 -78
  490. data/lib/puppet/parser/functions/strftime.rb +180 -179
  491. data/lib/puppet/parser/functions/tag.rb +7 -6
  492. data/lib/puppet/parser/functions/tagged.rb +13 -12
  493. data/lib/puppet/parser/functions/template.rb +24 -23
  494. data/lib/puppet/parser/functions/then.rb +68 -67
  495. data/lib/puppet/parser/functions/type.rb +48 -47
  496. data/lib/puppet/parser/functions/versioncmp.rb +1 -1
  497. data/lib/puppet/parser/functions/with.rb +23 -22
  498. data/lib/puppet/parser/functions.rb +3 -1
  499. data/lib/puppet/parser/parser_factory.rb +1 -0
  500. data/lib/puppet/parser/relationship.rb +3 -0
  501. data/lib/puppet/parser/resource/param.rb +1 -0
  502. data/lib/puppet/parser/resource.rb +10 -4
  503. data/lib/puppet/parser/scope.rb +40 -32
  504. data/lib/puppet/parser/script_compiler.rb +5 -6
  505. data/lib/puppet/parser/templatewrapper.rb +1 -0
  506. data/lib/puppet/parser/type_loader.rb +19 -17
  507. data/lib/puppet/parser.rb +1 -0
  508. data/lib/puppet/plugins/configuration.rb +1 -0
  509. data/lib/puppet/plugins/syntax_checkers.rb +1 -1
  510. data/lib/puppet/plugins.rb +1 -0
  511. data/lib/puppet/pops/adaptable.rb +3 -1
  512. data/lib/puppet/pops/adapters.rb +3 -1
  513. data/lib/puppet/pops/evaluator/access_operator.rb +79 -65
  514. data/lib/puppet/pops/evaluator/callable_signature.rb +1 -1
  515. data/lib/puppet/pops/evaluator/closure.rb +273 -277
  516. data/lib/puppet/pops/evaluator/collector_transformer.rb +11 -9
  517. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -0
  518. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
  519. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +4 -4
  520. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +1 -1
  521. data/lib/puppet/pops/evaluator/compare_operator.rb +15 -3
  522. data/lib/puppet/pops/evaluator/deferred_resolver.rb +2 -2
  523. data/lib/puppet/pops/evaluator/epp_evaluator.rb +10 -10
  524. data/lib/puppet/pops/evaluator/evaluator_impl.rb +140 -138
  525. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  526. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +2 -1
  527. data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
  528. data/lib/puppet/pops/evaluator/puppet_proc.rb +2 -0
  529. data/lib/puppet/pops/evaluator/relationship_operator.rb +5 -3
  530. data/lib/puppet/pops/evaluator/runtime3_converter.rb +21 -19
  531. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +31 -33
  532. data/lib/puppet/pops/evaluator/runtime3_support.rb +16 -19
  533. data/lib/puppet/pops/functions/dispatch.rb +1 -0
  534. data/lib/puppet/pops/functions/dispatcher.rb +1 -1
  535. data/lib/puppet/pops/functions/function.rb +1 -2
  536. data/lib/puppet/pops/issue_reporter.rb +19 -17
  537. data/lib/puppet/pops/issues.rb +8 -4
  538. data/lib/puppet/pops/label_provider.rb +1 -0
  539. data/lib/puppet/pops/loader/base_loader.rb +2 -2
  540. data/lib/puppet/pops/loader/dependency_loader.rb +3 -0
  541. data/lib/puppet/pops/loader/gem_support.rb +3 -1
  542. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +1 -0
  543. data/lib/puppet/pops/loader/loader.rb +1 -2
  544. data/lib/puppet/pops/loader/loader_paths.rb +24 -23
  545. data/lib/puppet/pops/loader/module_loaders.rb +28 -28
  546. data/lib/puppet/pops/loader/predefined_loader.rb +1 -2
  547. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +4 -2
  548. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +4 -2
  549. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +1 -1
  550. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +4 -1
  551. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +4 -1
  552. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -2
  553. data/lib/puppet/pops/loader/runtime3_type_loader.rb +2 -2
  554. data/lib/puppet/pops/loader/simple_environment_loader.rb +1 -2
  555. data/lib/puppet/pops/loader/static_loader.rb +22 -21
  556. data/lib/puppet/pops/loader/task_instantiator.rb +1 -0
  557. data/lib/puppet/pops/loader/type_definition_instantiator.rb +6 -4
  558. data/lib/puppet/pops/loader/typed_name.rb +1 -0
  559. data/lib/puppet/pops/loader/uri_helper.rb +1 -0
  560. data/lib/puppet/pops/loaders.rb +21 -18
  561. data/lib/puppet/pops/lookup/configured_data_provider.rb +1 -0
  562. data/lib/puppet/pops/lookup/context.rb +24 -23
  563. data/lib/puppet/pops/lookup/data_adapter.rb +1 -0
  564. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +2 -2
  565. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +1 -0
  566. data/lib/puppet/pops/lookup/data_provider.rb +1 -0
  567. data/lib/puppet/pops/lookup/environment_data_provider.rb +1 -0
  568. data/lib/puppet/pops/lookup/explainer.rb +35 -34
  569. data/lib/puppet/pops/lookup/function_provider.rb +7 -6
  570. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  571. data/lib/puppet/pops/lookup/hiera_config.rb +137 -101
  572. data/lib/puppet/pops/lookup/interpolation.rb +5 -1
  573. data/lib/puppet/pops/lookup/invocation.rb +3 -0
  574. data/lib/puppet/pops/lookup/key_recorder.rb +3 -1
  575. data/lib/puppet/pops/lookup/location_resolver.rb +2 -1
  576. data/lib/puppet/pops/lookup/lookup_adapter.rb +22 -20
  577. data/lib/puppet/pops/lookup/lookup_key.rb +1 -0
  578. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +1 -0
  579. data/lib/puppet/pops/lookup/module_data_provider.rb +3 -1
  580. data/lib/puppet/pops/lookup/sub_lookup.rb +5 -2
  581. data/lib/puppet/pops/lookup.rb +13 -8
  582. data/lib/puppet/pops/merge_strategy.rb +5 -2
  583. data/lib/puppet/pops/migration/migration_checker.rb +3 -1
  584. data/lib/puppet/pops/model/ast.rb +786 -685
  585. data/lib/puppet/pops/model/ast_transformer.rb +4 -3
  586. data/lib/puppet/pops/model/factory.rb +18 -14
  587. data/lib/puppet/pops/model/model_label_provider.rb +1 -1
  588. data/lib/puppet/pops/model/model_tree_dumper.rb +10 -9
  589. data/lib/puppet/pops/model/pn_transformer.rb +4 -6
  590. data/lib/puppet/pops/model/tree_dumper.rb +3 -1
  591. data/lib/puppet/pops/parser/code_merger.rb +0 -1
  592. data/lib/puppet/pops/parser/epp_parser.rb +1 -1
  593. data/lib/puppet/pops/parser/epp_support.rb +3 -3
  594. data/lib/puppet/pops/parser/evaluating_parser.rb +6 -3
  595. data/lib/puppet/pops/parser/heredoc_support.rb +6 -7
  596. data/lib/puppet/pops/parser/interpolation_support.rb +2 -3
  597. data/lib/puppet/pops/parser/lexer2.rb +32 -29
  598. data/lib/puppet/pops/parser/lexer_support.rb +38 -41
  599. data/lib/puppet/pops/parser/locatable.rb +1 -2
  600. data/lib/puppet/pops/parser/locator.rb +31 -28
  601. data/lib/puppet/pops/parser/parser_support.rb +2 -0
  602. data/lib/puppet/pops/parser/pn_parser.rb +2 -2
  603. data/lib/puppet/pops/parser/slurp_support.rb +33 -32
  604. data/lib/puppet/pops/patterns.rb +2 -3
  605. data/lib/puppet/pops/pcore.rb +2 -2
  606. data/lib/puppet/pops/pn.rb +4 -1
  607. data/lib/puppet/pops/puppet_stack.rb +1 -0
  608. data/lib/puppet/pops/resource/param.rb +11 -10
  609. data/lib/puppet/pops/resource/resource_type_impl.rb +37 -36
  610. data/lib/puppet/pops/semantic_error.rb +1 -0
  611. data/lib/puppet/pops/serialization/abstract_reader.rb +3 -2
  612. data/lib/puppet/pops/serialization/abstract_writer.rb +5 -4
  613. data/lib/puppet/pops/serialization/deserializer.rb +2 -0
  614. data/lib/puppet/pops/serialization/extension.rb +7 -0
  615. data/lib/puppet/pops/serialization/from_data_converter.rb +3 -0
  616. data/lib/puppet/pops/serialization/instance_reader.rb +1 -0
  617. data/lib/puppet/pops/serialization/instance_writer.rb +1 -0
  618. data/lib/puppet/pops/serialization/json.rb +6 -3
  619. data/lib/puppet/pops/serialization/json_path.rb +2 -1
  620. data/lib/puppet/pops/serialization/object.rb +4 -1
  621. data/lib/puppet/pops/serialization/serializer.rb +6 -2
  622. data/lib/puppet/pops/serialization/time_factory.rb +1 -1
  623. data/lib/puppet/pops/serialization/to_data_converter.rb +4 -2
  624. data/lib/puppet/pops/serialization/to_stringified_converter.rb +2 -2
  625. data/lib/puppet/pops/serialization.rb +1 -0
  626. data/lib/puppet/pops/time/timespan.rb +16 -6
  627. data/lib/puppet/pops/time/timestamp.rb +4 -0
  628. data/lib/puppet/pops/types/annotatable.rb +1 -1
  629. data/lib/puppet/pops/types/annotation.rb +1 -0
  630. data/lib/puppet/pops/types/class_loader.rb +8 -6
  631. data/lib/puppet/pops/types/implementation_registry.rb +1 -0
  632. data/lib/puppet/pops/types/iterable.rb +18 -9
  633. data/lib/puppet/pops/types/p_binary_type.rb +2 -3
  634. data/lib/puppet/pops/types/p_init_type.rb +12 -9
  635. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  636. data/lib/puppet/pops/types/p_object_type.rb +65 -42
  637. data/lib/puppet/pops/types/p_object_type_extension.rb +10 -7
  638. data/lib/puppet/pops/types/p_runtime_type.rb +11 -9
  639. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
  640. data/lib/puppet/pops/types/p_sem_ver_type.rb +5 -5
  641. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -4
  642. data/lib/puppet/pops/types/p_timespan_type.rb +4 -2
  643. data/lib/puppet/pops/types/p_timestamp_type.rb +3 -2
  644. data/lib/puppet/pops/types/p_type_set_type.rb +36 -28
  645. data/lib/puppet/pops/types/p_uri_type.rb +25 -18
  646. data/lib/puppet/pops/types/puppet_object.rb +1 -1
  647. data/lib/puppet/pops/types/recursion_guard.rb +7 -2
  648. data/lib/puppet/pops/types/ruby_generator.rb +9 -6
  649. data/lib/puppet/pops/types/ruby_method.rb +6 -5
  650. data/lib/puppet/pops/types/string_converter.rb +71 -63
  651. data/lib/puppet/pops/types/tree_iterators.rb +6 -7
  652. data/lib/puppet/pops/types/type_acceptor.rb +1 -0
  653. data/lib/puppet/pops/types/type_asserter.rb +1 -0
  654. data/lib/puppet/pops/types/type_assertion_error.rb +0 -1
  655. data/lib/puppet/pops/types/type_calculator.rb +10 -4
  656. data/lib/puppet/pops/types/type_conversion_error.rb +1 -10
  657. data/lib/puppet/pops/types/type_factory.rb +7 -4
  658. data/lib/puppet/pops/types/type_formatter.rb +14 -13
  659. data/lib/puppet/pops/types/type_mismatch_describer.rb +13 -8
  660. data/lib/puppet/pops/types/type_parser.rb +111 -107
  661. data/lib/puppet/pops/types/type_set_reference.rb +2 -0
  662. data/lib/puppet/pops/types/type_with_members.rb +1 -1
  663. data/lib/puppet/pops/types/types.rb +178 -153
  664. data/lib/puppet/pops/utils.rb +1 -0
  665. data/lib/puppet/pops/validation/checker4_0.rb +17 -11
  666. data/lib/puppet/pops/validation/tasks_checker.rb +2 -1
  667. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  668. data/lib/puppet/pops/validation.rb +8 -6
  669. data/lib/puppet/pops/visitable.rb +1 -0
  670. data/lib/puppet/pops/visitor.rb +14 -1
  671. data/lib/puppet/pops.rb +2 -0
  672. data/lib/puppet/property/boolean.rb +1 -0
  673. data/lib/puppet/property/ensure.rb +4 -1
  674. data/lib/puppet/property/keyvalue.rb +5 -4
  675. data/lib/puppet/property/list.rb +5 -5
  676. data/lib/puppet/property/ordered_list.rb +4 -4
  677. data/lib/puppet/property.rb +13 -11
  678. data/lib/puppet/provider/aix_object.rb +5 -0
  679. data/lib/puppet/provider/command.rb +1 -0
  680. data/lib/puppet/provider/confine.rb +1 -0
  681. data/lib/puppet/provider/exec/posix.rb +2 -0
  682. data/lib/puppet/provider/exec/shell.rb +1 -0
  683. data/lib/puppet/provider/exec/windows.rb +2 -1
  684. data/lib/puppet/provider/exec.rb +1 -0
  685. data/lib/puppet/provider/file/posix.rb +1 -0
  686. data/lib/puppet/provider/file/windows.rb +10 -6
  687. data/lib/puppet/provider/group/aix.rb +1 -0
  688. data/lib/puppet/provider/group/directoryservice.rb +1 -1
  689. data/lib/puppet/provider/group/groupadd.rb +9 -4
  690. data/lib/puppet/provider/group/ldap.rb +2 -0
  691. data/lib/puppet/provider/group/pw.rb +1 -0
  692. data/lib/puppet/provider/group/windows_adsi.rb +2 -0
  693. data/lib/puppet/provider/ldap.rb +2 -0
  694. data/lib/puppet/provider/nameservice/directoryservice.rb +30 -21
  695. data/lib/puppet/provider/nameservice/objectadd.rb +1 -0
  696. data/lib/puppet/provider/nameservice/pw.rb +6 -5
  697. data/lib/puppet/provider/nameservice.rb +8 -4
  698. data/lib/puppet/provider/network_device.rb +1 -2
  699. data/lib/puppet/provider/package/aix.rb +5 -4
  700. data/lib/puppet/provider/package/appdmg.rb +20 -19
  701. data/lib/puppet/provider/package/apple.rb +3 -2
  702. data/lib/puppet/provider/package/apt.rb +5 -5
  703. data/lib/puppet/provider/package/aptitude.rb +1 -0
  704. data/lib/puppet/provider/package/aptrpm.rb +2 -1
  705. data/lib/puppet/provider/package/blastwave.rb +6 -6
  706. data/lib/puppet/provider/package/dnf.rb +3 -1
  707. data/lib/puppet/provider/package/dnfmodule.rb +8 -7
  708. data/lib/puppet/provider/package/dpkg.rb +4 -4
  709. data/lib/puppet/provider/package/fink.rb +2 -1
  710. data/lib/puppet/provider/package/freebsd.rb +3 -2
  711. data/lib/puppet/provider/package/gem.rb +9 -5
  712. data/lib/puppet/provider/package/hpux.rb +4 -3
  713. data/lib/puppet/provider/package/macports.rb +2 -1
  714. data/lib/puppet/provider/package/nim.rb +13 -15
  715. data/lib/puppet/provider/package/openbsd.rb +6 -4
  716. data/lib/puppet/provider/package/opkg.rb +2 -0
  717. data/lib/puppet/provider/package/pacman.rb +12 -12
  718. data/lib/puppet/provider/package/pip.rb +3 -1
  719. data/lib/puppet/provider/package/pip2.rb +2 -2
  720. data/lib/puppet/provider/package/pip3.rb +2 -2
  721. data/lib/puppet/provider/package/pkg.rb +17 -13
  722. data/lib/puppet/provider/package/pkgdmg.rb +7 -2
  723. data/lib/puppet/provider/package/pkgin.rb +5 -5
  724. data/lib/puppet/provider/package/pkgng.rb +11 -7
  725. data/lib/puppet/provider/package/pkgutil.rb +7 -6
  726. data/lib/puppet/provider/package/portage.rb +11 -6
  727. data/lib/puppet/provider/package/ports.rb +6 -5
  728. data/lib/puppet/provider/package/portupgrade.rb +6 -12
  729. data/lib/puppet/provider/package/puppet_gem.rb +1 -0
  730. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -0
  731. data/lib/puppet/provider/package/rpm.rb +10 -6
  732. data/lib/puppet/provider/package/rug.rb +2 -1
  733. data/lib/puppet/provider/package/sun.rb +20 -17
  734. data/lib/puppet/provider/package/sunfreeware.rb +1 -0
  735. data/lib/puppet/provider/package/tdnf.rb +1 -0
  736. data/lib/puppet/provider/package/up2date.rb +2 -1
  737. data/lib/puppet/provider/package/urpmi.rb +1 -0
  738. data/lib/puppet/provider/package/windows/exe_package.rb +1 -0
  739. data/lib/puppet/provider/package/windows/msi_package.rb +1 -0
  740. data/lib/puppet/provider/package/windows/package.rb +5 -3
  741. data/lib/puppet/provider/package/windows.rb +4 -2
  742. data/lib/puppet/provider/package/yum.rb +17 -14
  743. data/lib/puppet/provider/package/zypper.rb +15 -14
  744. data/lib/puppet/provider/package.rb +7 -6
  745. data/lib/puppet/provider/package_targetable.rb +1 -0
  746. data/lib/puppet/provider/parsedfile.rb +7 -2
  747. data/lib/puppet/provider/service/base.rb +2 -1
  748. data/lib/puppet/provider/service/bsd.rb +1 -0
  749. data/lib/puppet/provider/service/daemontools.rb +9 -7
  750. data/lib/puppet/provider/service/debian.rb +4 -3
  751. data/lib/puppet/provider/service/freebsd.rb +5 -6
  752. data/lib/puppet/provider/service/gentoo.rb +5 -4
  753. data/lib/puppet/provider/service/init.rb +10 -11
  754. data/lib/puppet/provider/service/launchd.rb +10 -4
  755. data/lib/puppet/provider/service/openbsd.rb +4 -4
  756. data/lib/puppet/provider/service/openrc.rb +1 -1
  757. data/lib/puppet/provider/service/openwrt.rb +1 -1
  758. data/lib/puppet/provider/service/rcng.rb +1 -0
  759. data/lib/puppet/provider/service/redhat.rb +3 -2
  760. data/lib/puppet/provider/service/runit.rb +8 -7
  761. data/lib/puppet/provider/service/service.rb +1 -0
  762. data/lib/puppet/provider/service/smf.rb +5 -2
  763. data/lib/puppet/provider/service/src.rb +16 -16
  764. data/lib/puppet/provider/service/systemd.rb +8 -4
  765. data/lib/puppet/provider/service/upstart.rb +8 -7
  766. data/lib/puppet/provider/service/windows.rb +22 -26
  767. data/lib/puppet/provider/user/aix.rb +3 -2
  768. data/lib/puppet/provider/user/directoryservice.rb +53 -45
  769. data/lib/puppet/provider/user/hpux.rb +15 -14
  770. data/lib/puppet/provider/user/ldap.rb +8 -6
  771. data/lib/puppet/provider/user/openbsd.rb +21 -20
  772. data/lib/puppet/provider/user/pw.rb +3 -2
  773. data/lib/puppet/provider/user/user_role_add.rb +19 -14
  774. data/lib/puppet/provider/user/useradd.rb +51 -41
  775. data/lib/puppet/provider/user/windows_adsi.rb +4 -1
  776. data/lib/puppet/provider.rb +9 -9
  777. data/lib/puppet/reference/configuration.rb +44 -43
  778. data/lib/puppet/reference/function.rb +1 -0
  779. data/lib/puppet/reference/indirection.rb +43 -42
  780. data/lib/puppet/reference/metaparameter.rb +1 -0
  781. data/lib/puppet/reference/providers.rb +2 -0
  782. data/lib/puppet/reference/report.rb +1 -0
  783. data/lib/puppet/reference/type.rb +4 -3
  784. data/lib/puppet/relationship.rb +3 -2
  785. data/lib/puppet/reports/http.rb +1 -1
  786. data/lib/puppet/reports/log.rb +1 -0
  787. data/lib/puppet/reports/store.rb +3 -1
  788. data/lib/puppet/reports.rb +5 -4
  789. data/lib/puppet/resource/catalog.rb +14 -10
  790. data/lib/puppet/resource/status.rb +1 -1
  791. data/lib/puppet/resource/type.rb +28 -18
  792. data/lib/puppet/resource/type_collection.rb +4 -0
  793. data/lib/puppet/resource.rb +24 -16
  794. data/lib/puppet/runtime.rb +1 -0
  795. data/lib/puppet/scheduler/job.rb +1 -0
  796. data/lib/puppet/scheduler/scheduler.rb +1 -0
  797. data/lib/puppet/scheduler/splay_job.rb +1 -0
  798. data/lib/puppet/scheduler/timer.rb +1 -0
  799. data/lib/puppet/scheduler.rb +1 -0
  800. data/lib/puppet/settings/alias_setting.rb +1 -0
  801. data/lib/puppet/settings/array_setting.rb +1 -1
  802. data/lib/puppet/settings/autosign_setting.rb +1 -1
  803. data/lib/puppet/settings/base_setting.rb +9 -5
  804. data/lib/puppet/settings/boolean_setting.rb +1 -0
  805. data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
  806. data/lib/puppet/settings/config_file.rb +3 -3
  807. data/lib/puppet/settings/directory_setting.rb +1 -0
  808. data/lib/puppet/settings/duration_setting.rb +1 -0
  809. data/lib/puppet/settings/enum_setting.rb +2 -1
  810. data/lib/puppet/settings/environment_conf.rb +9 -8
  811. data/lib/puppet/settings/errors.rb +2 -0
  812. data/lib/puppet/settings/file_or_directory_setting.rb +1 -5
  813. data/lib/puppet/settings/file_setting.rb +3 -13
  814. data/lib/puppet/settings/http_extra_headers_setting.rb +1 -1
  815. data/lib/puppet/settings/ini_file.rb +1 -0
  816. data/lib/puppet/settings/integer_setting.rb +1 -0
  817. data/lib/puppet/settings/path_setting.rb +1 -0
  818. data/lib/puppet/settings/port_setting.rb +2 -1
  819. data/lib/puppet/settings/priority_setting.rb +9 -8
  820. data/lib/puppet/settings/server_list_setting.rb +2 -2
  821. data/lib/puppet/settings/string_setting.rb +1 -0
  822. data/lib/puppet/settings/symbolic_enum_setting.rb +2 -1
  823. data/lib/puppet/settings/terminus_setting.rb +1 -0
  824. data/lib/puppet/settings/ttl_setting.rb +2 -0
  825. data/lib/puppet/settings/value_translator.rb +8 -7
  826. data/lib/puppet/settings.rb +89 -66
  827. data/lib/puppet/ssl/base.rb +4 -0
  828. data/lib/puppet/ssl/certificate.rb +3 -2
  829. data/lib/puppet/ssl/certificate_request.rb +9 -7
  830. data/lib/puppet/ssl/certificate_request_attributes.rb +3 -1
  831. data/lib/puppet/ssl/certificate_signer.rb +2 -3
  832. data/lib/puppet/ssl/digest.rb +1 -0
  833. data/lib/puppet/ssl/error.rb +2 -0
  834. data/lib/puppet/ssl/oids.rb +3 -3
  835. data/lib/puppet/ssl/openssl_loader.rb +1 -0
  836. data/lib/puppet/ssl/ssl_context.rb +11 -15
  837. data/lib/puppet/ssl/ssl_provider.rb +2 -1
  838. data/lib/puppet/ssl/state_machine.rb +1 -0
  839. data/lib/puppet/ssl/verifier.rb +2 -2
  840. data/lib/puppet/ssl.rb +1 -0
  841. data/lib/puppet/syntax_checkers/base64.rb +2 -1
  842. data/lib/puppet/syntax_checkers/epp.rb +1 -1
  843. data/lib/puppet/syntax_checkers/json.rb +1 -2
  844. data/lib/puppet/syntax_checkers/pp.rb +1 -1
  845. data/lib/puppet/syntax_checkers.rb +1 -0
  846. data/lib/puppet/test/test_helper.rb +16 -14
  847. data/lib/puppet/thread_local.rb +1 -0
  848. data/lib/puppet/transaction/additional_resource_generator.rb +5 -1
  849. data/lib/puppet/transaction/event.rb +5 -3
  850. data/lib/puppet/transaction/event_manager.rb +4 -3
  851. data/lib/puppet/transaction/persistence.rb +2 -1
  852. data/lib/puppet/transaction/report.rb +24 -16
  853. data/lib/puppet/transaction/resource_harness.rb +6 -3
  854. data/lib/puppet/transaction.rb +11 -6
  855. data/lib/puppet/trusted_external.rb +8 -4
  856. data/lib/puppet/type/component.rb +11 -5
  857. data/lib/puppet/type/exec.rb +26 -10
  858. data/lib/puppet/type/file/checksum.rb +1 -0
  859. data/lib/puppet/type/file/checksum_value.rb +3 -2
  860. data/lib/puppet/type/file/content.rb +16 -13
  861. data/lib/puppet/type/file/ctime.rb +2 -1
  862. data/lib/puppet/type/file/data_sync.rb +4 -2
  863. data/lib/puppet/type/file/ensure.rb +5 -5
  864. data/lib/puppet/type/file/group.rb +2 -1
  865. data/lib/puppet/type/file/mode.rb +4 -2
  866. data/lib/puppet/type/file/mtime.rb +2 -1
  867. data/lib/puppet/type/file/owner.rb +2 -1
  868. data/lib/puppet/type/file/selcontext.rb +2 -2
  869. data/lib/puppet/type/file/source.rb +12 -10
  870. data/lib/puppet/type/file/target.rb +2 -2
  871. data/lib/puppet/type/file/type.rb +2 -1
  872. data/lib/puppet/type/file.rb +22 -13
  873. data/lib/puppet/type/filebucket.rb +2 -1
  874. data/lib/puppet/type/group.rb +8 -8
  875. data/lib/puppet/type/notify.rb +1 -1
  876. data/lib/puppet/type/package.rb +21 -21
  877. data/lib/puppet/type/resources.rb +30 -25
  878. data/lib/puppet/type/schedule.rb +9 -10
  879. data/lib/puppet/type/service.rb +9 -7
  880. data/lib/puppet/type/stage.rb +1 -0
  881. data/lib/puppet/type/tidy.rb +9 -4
  882. data/lib/puppet/type/user.rb +28 -24
  883. data/lib/puppet/type/whit.rb +1 -1
  884. data/lib/puppet/type.rb +71 -61
  885. data/lib/puppet/util/at_fork/noop.rb +1 -0
  886. data/lib/puppet/util/at_fork/solaris.rb +2 -1
  887. data/lib/puppet/util/at_fork.rb +2 -1
  888. data/lib/puppet/util/autoload.rb +5 -0
  889. data/lib/puppet/util/backups.rb +3 -2
  890. data/lib/puppet/util/character_encoding.rb +1 -0
  891. data/lib/puppet/util/checksums.rb +11 -9
  892. data/lib/puppet/util/classgen.rb +8 -13
  893. data/lib/puppet/util/colors.rb +32 -31
  894. data/lib/puppet/util/command_line/puppet_option_parser.rb +12 -12
  895. data/lib/puppet/util/command_line/trollop.rb +693 -690
  896. data/lib/puppet/util/command_line.rb +1 -0
  897. data/lib/puppet/util/constant_inflector.rb +3 -3
  898. data/lib/puppet/util/diff.rb +14 -14
  899. data/lib/puppet/util/docs.rb +3 -0
  900. data/lib/puppet/util/errors.rb +1 -0
  901. data/lib/puppet/util/execution.rb +24 -21
  902. data/lib/puppet/util/execution_stub.rb +1 -0
  903. data/lib/puppet/util/feature.rb +1 -0
  904. data/lib/puppet/util/file_watcher.rb +2 -0
  905. data/lib/puppet/util/fileparsing.rb +2 -0
  906. data/lib/puppet/util/filetype.rb +3 -0
  907. data/lib/puppet/util/http_proxy.rb +1 -0
  908. data/lib/puppet/util/inifile.rb +5 -5
  909. data/lib/puppet/util/instance_loader.rb +2 -0
  910. data/lib/puppet/util/json.rb +1 -0
  911. data/lib/puppet/util/json_lockfile.rb +3 -1
  912. data/lib/puppet/util/ldap/connection.rb +19 -18
  913. data/lib/puppet/util/ldap/generator.rb +1 -0
  914. data/lib/puppet/util/ldap/manager.rb +3 -2
  915. data/lib/puppet/util/ldap.rb +1 -0
  916. data/lib/puppet/util/libuser.rb +1 -1
  917. data/lib/puppet/util/limits.rb +1 -0
  918. data/lib/puppet/util/lockfile.rb +1 -0
  919. data/lib/puppet/util/log/destination.rb +1 -0
  920. data/lib/puppet/util/log/destinations.rb +14 -13
  921. data/lib/puppet/util/log.rb +21 -17
  922. data/lib/puppet/util/logging.rb +18 -14
  923. data/lib/puppet/util/metaid.rb +1 -0
  924. data/lib/puppet/util/metric.rb +2 -0
  925. data/lib/puppet/util/monkey_patches.rb +19 -0
  926. data/lib/puppet/util/multi_match.rb +4 -1
  927. data/lib/puppet/util/network_device/base.rb +1 -1
  928. data/lib/puppet/util/network_device/config.rb +3 -4
  929. data/lib/puppet/util/network_device/transport/base.rb +0 -1
  930. data/lib/puppet/util/network_device/transport.rb +1 -0
  931. data/lib/puppet/util/network_device.rb +1 -0
  932. data/lib/puppet/util/package/version/debian.rb +5 -3
  933. data/lib/puppet/util/package/version/gem.rb +2 -0
  934. data/lib/puppet/util/package/version/pip.rb +7 -2
  935. data/lib/puppet/util/package/version/range/eq.rb +2 -0
  936. data/lib/puppet/util/package/version/range/gt.rb +2 -0
  937. data/lib/puppet/util/package/version/range/gt_eq.rb +2 -0
  938. data/lib/puppet/util/package/version/range/lt.rb +2 -0
  939. data/lib/puppet/util/package/version/range/lt_eq.rb +2 -0
  940. data/lib/puppet/util/package/version/range/min_max.rb +4 -0
  941. data/lib/puppet/util/package/version/range/simple.rb +1 -0
  942. data/lib/puppet/util/package/version/range.rb +3 -0
  943. data/lib/puppet/util/package/version/rpm.rb +7 -5
  944. data/lib/puppet/util/package.rb +3 -0
  945. data/lib/puppet/util/pidlock.rb +7 -7
  946. data/lib/puppet/util/platform.rb +1 -0
  947. data/lib/puppet/util/plist.rb +1 -1
  948. data/lib/puppet/util/posix.rb +8 -5
  949. data/lib/puppet/util/profiler/aggregate.rb +2 -5
  950. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  951. data/lib/puppet/util/profiler/logging.rb +1 -0
  952. data/lib/puppet/util/profiler/object_counts.rb +1 -0
  953. data/lib/puppet/util/profiler/wall_clock.rb +1 -0
  954. data/lib/puppet/util/profiler.rb +1 -0
  955. data/lib/puppet/util/provider_features.rb +5 -1
  956. data/lib/puppet/util/psych_support.rb +1 -0
  957. data/lib/puppet/util/rdoc/code_objects.rb +3 -7
  958. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +37 -50
  959. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -68
  960. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +5 -5
  961. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -0
  962. data/lib/puppet/util/rdoc/parser.rb +1 -0
  963. data/lib/puppet/util/rdoc.rb +1 -1
  964. data/lib/puppet/util/reference.rb +1 -1
  965. data/lib/puppet/util/resource_template.rb +2 -0
  966. data/lib/puppet/util/retry_action.rb +3 -3
  967. data/lib/puppet/util/rpm_compare.rb +6 -3
  968. data/lib/puppet/util/rubygems.rb +1 -1
  969. data/lib/puppet/util/run_mode.rb +2 -1
  970. data/lib/puppet/util/selinux.rb +23 -12
  971. data/lib/puppet/util/skip_tags.rb +1 -0
  972. data/lib/puppet/util/splayer.rb +1 -0
  973. data/lib/puppet/util/storage.rb +2 -1
  974. data/lib/puppet/util/suidmanager.rb +8 -5
  975. data/lib/puppet/util/symbolic_file_mode.rb +3 -1
  976. data/lib/puppet/util/tag_set.rb +1 -0
  977. data/lib/puppet/util/tagging.rb +2 -1
  978. data/lib/puppet/util/terminal.rb +1 -0
  979. data/lib/puppet/util/user_attr.rb +1 -0
  980. data/lib/puppet/util/warnings.rb +3 -0
  981. data/lib/puppet/util/watched_file.rb +1 -0
  982. data/lib/puppet/util/watcher/change_watcher.rb +1 -0
  983. data/lib/puppet/util/watcher/periodic_watcher.rb +1 -0
  984. data/lib/puppet/util/watcher/timer.rb +1 -0
  985. data/lib/puppet/util/watcher.rb +1 -0
  986. data/lib/puppet/util/windows/access_control_entry.rb +2 -1
  987. data/lib/puppet/util/windows/access_control_list.rb +4 -3
  988. data/lib/puppet/util/windows/adsi.rb +41 -27
  989. data/lib/puppet/util/windows/com.rb +5 -3
  990. data/lib/puppet/util/windows/daemon.rb +33 -33
  991. data/lib/puppet/util/windows/error.rb +4 -3
  992. data/lib/puppet/util/windows/eventlog.rb +8 -5
  993. data/lib/puppet/util/windows/file.rb +32 -26
  994. data/lib/puppet/util/windows/monkey_patches/process.rb +0 -1
  995. data/lib/puppet/util/windows/principal.rb +27 -27
  996. data/lib/puppet/util/windows/process.rb +8 -7
  997. data/lib/puppet/util/windows/registry.rb +43 -41
  998. data/lib/puppet/util/windows/root_certs.rb +1 -0
  999. data/lib/puppet/util/windows/security.rb +43 -44
  1000. data/lib/puppet/util/windows/security_descriptor.rb +1 -0
  1001. data/lib/puppet/util/windows/service.rb +12 -1
  1002. data/lib/puppet/util/windows/sid.rb +10 -8
  1003. data/lib/puppet/util/windows/string.rb +1 -0
  1004. data/lib/puppet/util/windows/user.rb +33 -33
  1005. data/lib/puppet/util/windows.rb +6 -0
  1006. data/lib/puppet/util/yaml.rb +1 -0
  1007. data/lib/puppet/util.rb +20 -23
  1008. data/lib/puppet/vendor.rb +2 -1
  1009. data/lib/puppet/version.rb +3 -1
  1010. data/lib/puppet/x509/cert_provider.rb +13 -3
  1011. data/lib/puppet/x509/pem_store.rb +1 -0
  1012. data/lib/puppet/x509.rb +1 -0
  1013. data/lib/puppet.rb +1 -0
  1014. data/lib/puppet_pal.rb +1 -0
  1015. data/lib/puppet_x.rb +1 -0
  1016. data/locales/puppet.pot +214 -210
  1017. data/man/man5/puppet.conf.5 +3 -3
  1018. data/man/man8/puppet-agent.8 +1 -1
  1019. data/man/man8/puppet-apply.8 +1 -1
  1020. data/man/man8/puppet-catalog.8 +1 -1
  1021. data/man/man8/puppet-config.8 +1 -1
  1022. data/man/man8/puppet-describe.8 +1 -1
  1023. data/man/man8/puppet-device.8 +1 -1
  1024. data/man/man8/puppet-doc.8 +1 -1
  1025. data/man/man8/puppet-epp.8 +1 -1
  1026. data/man/man8/puppet-facts.8 +1 -1
  1027. data/man/man8/puppet-filebucket.8 +1 -1
  1028. data/man/man8/puppet-generate.8 +1 -1
  1029. data/man/man8/puppet-help.8 +1 -1
  1030. data/man/man8/puppet-lookup.8 +1 -1
  1031. data/man/man8/puppet-module.8 +1 -1
  1032. data/man/man8/puppet-node.8 +1 -1
  1033. data/man/man8/puppet-parser.8 +1 -1
  1034. data/man/man8/puppet-plugin.8 +1 -1
  1035. data/man/man8/puppet-report.8 +1 -1
  1036. data/man/man8/puppet-resource.8 +1 -1
  1037. data/man/man8/puppet-script.8 +1 -1
  1038. data/man/man8/puppet-ssl.8 +5 -1
  1039. data/man/man8/puppet.8 +2 -2
  1040. data/spec/integration/application/agent_spec.rb +13 -0
  1041. data/spec/integration/type/exec_spec.rb +13 -0
  1042. data/spec/lib/puppet_spec/puppetserver.rb +1 -0
  1043. data/spec/lib/puppet_spec/verbose.rb +15 -4
  1044. data/spec/unit/agent_spec.rb +2 -14
  1045. data/spec/unit/application/ssl_spec.rb +49 -0
  1046. data/spec/unit/daemon_spec.rb +3 -20
  1047. data/spec/unit/functions/split_spec.rb +6 -0
  1048. data/spec/unit/indirector/catalog/compiler_spec.rb +17 -0
  1049. data/spec/unit/indirector/catalog/rest_spec.rb +17 -0
  1050. data/spec/unit/info_service_spec.rb +1 -1
  1051. data/spec/unit/provider/package/appdmg_spec.rb +1 -1
  1052. data/spec/unit/provider/package/dnf_spec.rb +7 -0
  1053. data/spec/unit/provider/package/dnfmodule_spec.rb +22 -2
  1054. data/spec/unit/provider/service/systemd_spec.rb +8 -6
  1055. data/spec/unit/ssl/certificate_signer_spec.rb +17 -0
  1056. data/spec/unit/ssl/ssl_provider_spec.rb +1 -1
  1057. data/spec/unit/type/exec_spec.rb +14 -9
  1058. data/spec/unit/util/execution_spec.rb +1 -0
  1059. data/spec/unit/util/monkey_patches_spec.rb +42 -0
  1060. data/spec/unit/util/rpm_compare_spec.rb +8 -8
  1061. data/spec/unit/util/windows/adsi_spec.rb +25 -0
  1062. metadata +9 -14
  1063. data/CONTRIBUTING.md +0 -161
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Puppet::Pops
3
4
  module Types
4
-
5
5
  KEY_NAME_AUTHORITY = 'name_authority'
6
6
  KEY_TYPES = 'types'
7
7
  KEY_ALIAS = 'alias'
@@ -10,7 +10,6 @@ KEY_VERSION_RANGE = 'version_range'
10
10
  KEY_REFERENCES = 'references'
11
11
 
12
12
  class PTypeSetType < PMetaType
13
-
14
13
  # A Loader that makes the types known to the TypeSet visible
15
14
  #
16
15
  # @api private
@@ -40,23 +39,27 @@ class PTypeSetType < PMetaType
40
39
  TYPE_STRING_OR_VERSION = TypeFactory.variant(PStringType::NON_EMPTY, TypeFactory.sem_ver)
41
40
  TYPE_STRING_OR_RANGE = TypeFactory.variant(PStringType::NON_EMPTY, TypeFactory.sem_ver_range)
42
41
 
43
- TYPE_TYPE_REFERENCE_I12N = TypeFactory.struct({
44
- KEY_NAME => Pcore::TYPE_QUALIFIED_REFERENCE,
45
- KEY_VERSION_RANGE => TYPE_STRING_OR_RANGE,
46
- TypeFactory.optional(KEY_NAME_AUTHORITY) => Pcore::TYPE_URI,
47
- TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS
48
- })
49
-
50
- TYPE_TYPESET_I12N = TypeFactory.struct({
51
- TypeFactory.optional(Pcore::KEY_PCORE_URI) => Pcore::TYPE_URI,
52
- Pcore::KEY_PCORE_VERSION => TYPE_STRING_OR_VERSION,
53
- TypeFactory.optional(KEY_NAME_AUTHORITY) => Pcore::TYPE_URI,
54
- TypeFactory.optional(KEY_NAME) => Pcore::TYPE_QUALIFIED_REFERENCE,
55
- TypeFactory.optional(KEY_VERSION) => TYPE_STRING_OR_VERSION,
56
- TypeFactory.optional(KEY_TYPES) => TypeFactory.hash_kv(Pcore::TYPE_SIMPLE_TYPE_NAME, PVariantType.new([PTypeType::DEFAULT, PObjectType::TYPE_OBJECT_I12N]), PCollectionType::NOT_EMPTY_SIZE),
57
- TypeFactory.optional(KEY_REFERENCES) => TypeFactory.hash_kv(Pcore::TYPE_SIMPLE_TYPE_NAME, TYPE_TYPE_REFERENCE_I12N, PCollectionType::NOT_EMPTY_SIZE),
58
- TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS,
59
- })
42
+ TYPE_TYPE_REFERENCE_I12N =
43
+ TypeFactory
44
+ .struct({
45
+ KEY_NAME => Pcore::TYPE_QUALIFIED_REFERENCE,
46
+ KEY_VERSION_RANGE => TYPE_STRING_OR_RANGE,
47
+ TypeFactory.optional(KEY_NAME_AUTHORITY) => Pcore::TYPE_URI,
48
+ TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS
49
+ })
50
+
51
+ TYPE_TYPESET_I12N =
52
+ TypeFactory
53
+ .struct({
54
+ TypeFactory.optional(Pcore::KEY_PCORE_URI) => Pcore::TYPE_URI,
55
+ Pcore::KEY_PCORE_VERSION => TYPE_STRING_OR_VERSION,
56
+ TypeFactory.optional(KEY_NAME_AUTHORITY) => Pcore::TYPE_URI,
57
+ TypeFactory.optional(KEY_NAME) => Pcore::TYPE_QUALIFIED_REFERENCE,
58
+ TypeFactory.optional(KEY_VERSION) => TYPE_STRING_OR_VERSION,
59
+ TypeFactory.optional(KEY_TYPES) => TypeFactory.hash_kv(Pcore::TYPE_SIMPLE_TYPE_NAME, PVariantType.new([PTypeType::DEFAULT, PObjectType::TYPE_OBJECT_I12N]), PCollectionType::NOT_EMPTY_SIZE),
60
+ TypeFactory.optional(KEY_REFERENCES) => TypeFactory.hash_kv(Pcore::TYPE_SIMPLE_TYPE_NAME, TYPE_TYPE_REFERENCE_I12N, PCollectionType::NOT_EMPTY_SIZE),
61
+ TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS,
62
+ })
60
63
 
61
64
  def self.register_ptype(loader, ir)
62
65
  create_ptype(loader, ir, 'AnyType', '_pcore_init_hash' => TYPE_TYPESET_I12N.resolve(loader))
@@ -113,7 +116,7 @@ class PTypeSetType < PMetaType
113
116
  @pcore_version = PSemVerType.convert(init_hash[Pcore::KEY_PCORE_VERSION]).freeze
114
117
  unless Pcore::PARSABLE_PCORE_VERSIONS.include?(@pcore_version)
115
118
  raise ArgumentError,
116
- "The pcore version for TypeSet '#{@name}' is not understood by this runtime. Expected range #{Pcore::PARSABLE_PCORE_VERSIONS}, got #{@pcore_version}"
119
+ "The pcore version for TypeSet '#{@name}' is not understood by this runtime. Expected range #{Pcore::PARSABLE_PCORE_VERSIONS}, got #{@pcore_version}"
117
120
  end
118
121
 
119
122
  @pcore_uri = init_hash[Pcore::KEY_PCORE_URI].freeze
@@ -146,6 +149,7 @@ class PTypeSetType < PMetaType
146
149
  unless ranges.all? { |range| (range & ref.version_range).nil? }
147
150
  raise ArgumentError, "TypeSet '#{@name}' references TypeSet '#{ref_na}/#{ref_name}' more than once using overlapping version ranges"
148
151
  end
152
+
149
153
  ranges << ref.version_range
150
154
  end
151
155
 
@@ -155,6 +159,7 @@ class PTypeSetType < PMetaType
155
159
  if @types.has_key?(ref_alias)
156
160
  raise ArgumentError, "TypeSet '#{@name}' references a TypeSet using alias '#{ref_alias}'. The alias collides with the name of a declared type"
157
161
  end
162
+
158
163
  ref_map[ref_alias] = ref
159
164
 
160
165
  @dc_to_cc_map[ref_alias.downcase] = ref_alias
@@ -173,7 +178,7 @@ class PTypeSetType < PMetaType
173
178
  def _pcore_init_hash
174
179
  result = super()
175
180
  result[Pcore::KEY_PCORE_URI] = @pcore_uri unless @pcore_uri.nil?
176
- result[Pcore::KEY_PCORE_VERSION] = @pcore_version.to_s
181
+ result[Pcore::KEY_PCORE_VERSION] = @pcore_version.to_s
177
182
  result[KEY_NAME_AUTHORITY] = @name_authority unless @name_authority.nil?
178
183
  result[KEY_NAME] = @name
179
184
  result[KEY_VERSION] = @version.to_s unless @version.nil?
@@ -193,6 +198,7 @@ class PTypeSetType < PMetaType
193
198
  def [](qname)
194
199
  if qname.is_a?(Loader::TypedName)
195
200
  return nil unless qname.type == :type && qname.name_authority == @name_authority
201
+
196
202
  qname = qname.name
197
203
  end
198
204
 
@@ -354,13 +360,15 @@ class PTypeSetType < PMetaType
354
360
  o.is_a?(PTypeSetType)
355
361
  end
356
362
 
357
- DEFAULT = self.new({
358
- KEY_NAME => 'DefaultTypeSet',
359
- KEY_NAME_AUTHORITY => Pcore::RUNTIME_NAME_AUTHORITY,
360
- Pcore::KEY_PCORE_URI => Pcore::PCORE_URI,
361
- Pcore::KEY_PCORE_VERSION => Pcore::PCORE_VERSION,
362
- KEY_VERSION => SemanticPuppet::Version.new(0,0,0)
363
- })
363
+ DEFAULT =
364
+ self
365
+ .new({
366
+ KEY_NAME => 'DefaultTypeSet',
367
+ KEY_NAME_AUTHORITY => Pcore::RUNTIME_NAME_AUTHORITY,
368
+ Pcore::KEY_PCORE_URI => Pcore::PCORE_URI,
369
+ Pcore::KEY_PCORE_VERSION => Pcore::PCORE_VERSION,
370
+ KEY_VERSION => SemanticPuppet::Version.new(0,0,0)
371
+ })
364
372
 
365
373
  protected
366
374
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Puppet::Pops
3
4
  module Types
4
5
  class PURIType < PAnyType
5
-
6
6
  # Tell evaluator that an members of instances of this type can be invoked using dot notation
7
7
  include TypeWithMembers
8
8
 
@@ -37,20 +37,26 @@ class PURIType < PAnyType
37
37
  TypeFactory.optional(OPAQUE) => PStringType::NON_EMPTY,
38
38
  )
39
39
 
40
- TYPE_STRING_PARAM = TypeFactory.optional(PVariantType.new([
41
- PStringType::NON_EMPTY,
42
- PRegexpType::DEFAULT,
43
- TypeFactory.type_type(PPatternType::DEFAULT),
44
- TypeFactory.type_type(PEnumType::DEFAULT),
45
- TypeFactory.type_type(PNotUndefType::DEFAULT),
46
- TypeFactory.type_type(PUndefType::DEFAULT),
47
- ]))
48
-
49
- TYPE_INTEGER_PARAM = TypeFactory.optional(PVariantType.new([
50
- PIntegerType.new(0),
51
- TypeFactory.type_type(PNotUndefType::DEFAULT),
52
- TypeFactory.type_type(PUndefType::DEFAULT),
53
- ]))
40
+ TYPE_STRING_PARAM =
41
+ TypeFactory
42
+ .optional(PVariantType
43
+ .new([
44
+ PStringType::NON_EMPTY,
45
+ PRegexpType::DEFAULT,
46
+ TypeFactory.type_type(PPatternType::DEFAULT),
47
+ TypeFactory.type_type(PEnumType::DEFAULT),
48
+ TypeFactory.type_type(PNotUndefType::DEFAULT),
49
+ TypeFactory.type_type(PUndefType::DEFAULT),
50
+ ]))
51
+
52
+ TYPE_INTEGER_PARAM =
53
+ TypeFactory
54
+ .optional(PVariantType
55
+ .new([
56
+ PIntegerType.new(0),
57
+ TypeFactory.type_type(PNotUndefType::DEFAULT),
58
+ TypeFactory.type_type(PUndefType::DEFAULT),
59
+ ]))
54
60
 
55
61
  TYPE_URI_PARAM_HASH_TYPE = TypeFactory.struct(
56
62
  TypeFactory.optional(SCHEME) => TYPE_STRING_PARAM,
@@ -67,9 +73,9 @@ class PURIType < PAnyType
67
73
 
68
74
  def self.register_ptype(loader, ir)
69
75
  create_ptype(loader, ir, 'AnyType',
70
- {
71
- 'parameters' => { KEY_TYPE => TypeFactory.optional(TYPE_URI_PARAM_TYPE), KEY_VALUE => nil }
72
- }
76
+ {
77
+ 'parameters' => { KEY_TYPE => TypeFactory.optional(TYPE_URI_PARAM_TYPE), KEY_VALUE => nil }
78
+ }
73
79
  )
74
80
  end
75
81
 
@@ -152,6 +158,7 @@ class PURIType < PAnyType
152
158
  def _assignable?(o, guard = nil)
153
159
  return false unless o.class == self.class
154
160
  return true if @parameters.nil?
161
+
155
162
  o_params = o.parameters || EMPTY_HASH
156
163
 
157
164
  eval = Parser::EvaluatingParser.singleton.evaluator
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Puppet::Pops
3
4
  module Types
4
-
5
5
  # Marker module for implementations that are mapped to Object types
6
6
  # @api public
7
7
  module PuppetObject
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Puppet::Pops
3
4
  module Types
4
5
  # Keeps track of self recursion of conceptual 'this' and 'that' instances using two separate maps and
@@ -8,6 +9,10 @@ module Types
8
9
  #
9
10
  # All comparisons are made using the `object_id` of the instance rather than the instance itself.
10
11
  #
12
+ # Hash#compare_by_identity is intentionally not used since we only need to keep
13
+ # track of object ids we've seen before, based on object_id, so we don't store
14
+ # entire objects in memory.
15
+ #
11
16
  # @api private
12
17
  class RecursionGuard
13
18
  attr_reader :state
@@ -25,14 +30,14 @@ class RecursionGuard
25
30
  # @param instance [Object] the instance to check
26
31
  # @return [Integer] the resulting state
27
32
  def recursive_this?(instance)
28
- instance_variable_defined?(:@recursive_this_map) && @recursive_this_map.has_key?(instance.object_id)
33
+ instance_variable_defined?(:@recursive_this_map) && @recursive_this_map.has_key?(instance.object_id) # rubocop:disable Lint/HashCompareByIdentity
29
34
  end
30
35
 
31
36
  # Checks if recursion was detected for the given argument in the 'that' context
32
37
  # @param instance [Object] the instance to check
33
38
  # @return [Integer] the resulting state
34
39
  def recursive_that?(instance)
35
- instance_variable_defined?(:@recursive_that_map) && @recursive_that_map.has_key?(instance.object_id)
40
+ instance_variable_defined?(:@recursive_that_map) && @recursive_that_map.has_key?(instance.object_id) # rubocop:disable Lint/HashCompareByIdentity
36
41
  end
37
42
 
38
43
  # Add the given argument as 'this' invoke the given block with the resulting state
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Puppet::Pops
3
4
  module Types
4
-
5
5
  # @api private
6
6
  class RubyGenerator < TypeFormatter
7
-
8
7
  RUBY_RESERVED_WORDS = {
9
8
  'alias' => '_alias',
10
9
  'begin' => '_begin',
@@ -45,6 +44,7 @@ class RubyGenerator < TypeFormatter
45
44
  segments = name.split(TypeFormatter::NAME_SEGMENT_SEPARATOR)
46
45
  namespace_segments.size.times do |idx|
47
46
  break if segments.empty? || namespace_segments[idx] != segments[0]
47
+
48
48
  segments.shift
49
49
  end
50
50
  segments
@@ -60,7 +60,7 @@ class RubyGenerator < TypeFormatter
60
60
  if cls.nil?
61
61
  rp = key.resolved_parent
62
62
  parent_class = rp.is_a?(PObjectType) ? rp.implementation_class : Object
63
- class_def = String.new
63
+ class_def = ''.dup
64
64
  class_body(key, EMPTY_ARRAY, class_def)
65
65
  cls = Class.new(parent_class)
66
66
  cls.class_eval(class_def)
@@ -70,6 +70,7 @@ class RubyGenerator < TypeFormatter
70
70
  hash[key] = cls
71
71
  end
72
72
  raise ArgumentError, "Expected a Puppet Type, got '#{obj.class.name}'" unless obj.is_a?(PAnyType)
73
+
73
74
  @dynamic_classes[obj]
74
75
  end
75
76
 
@@ -105,11 +106,12 @@ class RubyGenerator < TypeFormatter
105
106
  min_prefix_length.times do |idx|
106
107
  segment = segments_array[0][idx]
107
108
  break unless segments_array.all? { |sn| sn[idx] == segment }
109
+
108
110
  common_prefix << segment
109
111
  end
110
112
 
111
113
  # Create class definition of all contained types
112
- bld = String.new
114
+ bld = ''.dup
113
115
  start_module(common_prefix, comment, bld)
114
116
  class_names = []
115
117
  names_by_prefix.each_pair do |seg_array, index_and_name_array|
@@ -159,6 +161,7 @@ class RubyGenerator < TypeFormatter
159
161
  ir = Loaders.implementation_registry
160
162
  impl_name = ir.module_name_for_type(type)
161
163
  raise Puppet::Error, "Unable to create an instance of #{type.name}. No mapping exists to runtime object" if impl_name.nil?
164
+
162
165
  impl_name
163
166
  end
164
167
  end
@@ -363,7 +366,7 @@ class RubyGenerator < TypeFormatter
363
366
  if array_type?(cp.type)
364
367
  bld << ' @' << rname(cp.name) << ".each { |value| yield(value) }\n"
365
368
  else
366
- bld << ' yield(@' << rname(cp.name) << ') unless @' << rname(cp.name) << ".nil?\n"
369
+ bld << ' yield(@' << rname(cp.name) << ') unless @' << rname(cp.name) << ".nil?\n"
367
370
  end
368
371
  end
369
372
  bld << " end\n\n def _pcore_all_contents(path, &block)\n path << self\n"
@@ -405,7 +408,7 @@ class RubyGenerator < TypeFormatter
405
408
  bld << "\n def eql?(o)\n"
406
409
  bld << " super &&\n" unless obj.parent.nil?
407
410
  bld << " o.instance_of?(self.class) &&\n" if include_type
408
- eq_names.each { |eqn| bld << ' @' << rname(eqn) << '.eql?(o.' << rname(eqn) << ") &&\n" }
411
+ eq_names.each { |eqn| bld << ' @' << rname(eqn) << '.eql?(o.' << rname(eqn) << ") &&\n" }
409
412
  bld.chomp!(" &&\n")
410
413
  bld << "\n end\n alias == eql?\n"
411
414
  end
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Puppet::Pops
3
4
  module Types
4
5
  class RubyMethod < Annotation
5
6
  # Register the Annotation type. This is the type that all custom Annotations will inherit from.
6
7
  def self.register_ptype(loader, ir)
7
8
  @type = Pcore::create_object_type(loader, ir, self, 'RubyMethod', 'Annotation',
8
- 'body' => PStringType::DEFAULT,
9
- 'parameters' => {
10
- KEY_TYPE => POptionalType.new(PStringType::NON_EMPTY),
11
- KEY_VALUE => nil
12
- }
9
+ 'body' => PStringType::DEFAULT,
10
+ 'parameters' => {
11
+ KEY_TYPE => POptionalType.new(PStringType::NON_EMPTY),
12
+ KEY_VALUE => nil
13
+ }
13
14
  )
14
15
  end
15
16
 
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative '../../../puppet/concurrent/thread_local_singleton'
3
4
 
4
5
  module Puppet::Pops
5
6
  module Types
6
-
7
7
  # Converts Puppet runtime objects to String under the control of a Format.
8
8
  # Use from Puppet Language is via the function `new`.
9
9
  #
10
10
  # @api private
11
11
  #
12
12
  class StringConverter
13
-
14
13
  # @api private
15
14
  class FormatError < ArgumentError
16
15
  def initialize(type_string, actual, expected)
@@ -111,11 +110,13 @@ class StringConverter
111
110
  unless @format.is_a?(String) && @format.length == 1
112
111
  raise ArgumentError, "The format must be a one letter format specifier, got '#{@format}'"
113
112
  end
113
+
114
114
  @format = @format.to_sym
115
115
  flags = match[1].split('') || []
116
116
  unless flags.uniq.size == flags.size
117
117
  raise ArgumentError, "The same flag can only be used once, got '#{fmt}'"
118
118
  end
119
+
119
120
  @left = flags.include?('-')
120
121
  @alt = flags.include?('#')
121
122
  @plus = (flags.include?(' ') ? :space : (flags.include?('+') ? :plus : :ignore))
@@ -124,10 +125,11 @@ class StringConverter
124
125
  @delimiters = nil
125
126
  DELIMITERS.each do |d|
126
127
  next unless flags.include?(d)
127
- if !@delimiters.nil?
128
- raise ArgumentError, "Only one of the delimiters [ { ( < | can be given in the format flags, got '#{fmt}'"
129
- end
130
- @delimiters = d
128
+ if !@delimiters.nil?
129
+ raise ArgumentError, "Only one of the delimiters [ { ( < | can be given in the format flags, got '#{fmt}'"
130
+ end
131
+
132
+ @delimiters = d
131
133
  end
132
134
 
133
135
  @width = match[2] ? match[2].to_i : nil
@@ -155,6 +157,7 @@ class StringConverter
155
157
  unless lower && higher
156
158
  return lower || higher
157
159
  end
160
+
158
161
  lower.merge(higher)
159
162
  end
160
163
 
@@ -226,6 +229,7 @@ class StringConverter
226
229
  0
227
230
  end
228
231
  end
232
+
229
233
  # Returns an array with a delimiter pair derived from the format.
230
234
  # If format does not contain a delimiter specification the given default is returned
231
235
  #
@@ -260,7 +264,7 @@ class StringConverter
260
264
  # (basically strings are quoted since they may contain a ','))
261
265
  #
262
266
  DEFAULT_CONTAINER_FORMATS = {
263
- PAnyType::DEFAULT => Format.new('%p').freeze, # quoted string (Ruby inspect)
267
+ PAnyType::DEFAULT => Format.new('%p').freeze, # quoted string (Ruby inspect)
264
268
  }.freeze
265
269
 
266
270
  DEFAULT_ARRAY_FORMAT = Format.new('%a')
@@ -279,13 +283,13 @@ class StringConverter
279
283
  DEFAULT_ARRAY_DELIMITERS = ['[', ']'].freeze
280
284
 
281
285
  DEFAULT_STRING_FORMATS = {
282
- PObjectType::DEFAULT => Format.new('%p').freeze, # call with initialization hash
283
- PFloatType::DEFAULT => Format.new('%f').freeze, # float
284
- PNumericType::DEFAULT => Format.new('%d').freeze, # decimal number
285
- PArrayType::DEFAULT => DEFAULT_ARRAY_FORMAT.freeze,
286
- PHashType::DEFAULT => DEFAULT_HASH_FORMAT.freeze,
287
- PBinaryType::DEFAULT => Format.new('%B').freeze, # strict base64 string unquoted
288
- PAnyType::DEFAULT => Format.new('%s').freeze, # unquoted string
286
+ PObjectType::DEFAULT => Format.new('%p').freeze, # call with initialization hash
287
+ PFloatType::DEFAULT => Format.new('%f').freeze, # float
288
+ PNumericType::DEFAULT => Format.new('%d').freeze, # decimal number
289
+ PArrayType::DEFAULT => DEFAULT_ARRAY_FORMAT.freeze,
290
+ PHashType::DEFAULT => DEFAULT_HASH_FORMAT.freeze,
291
+ PBinaryType::DEFAULT => Format.new('%B').freeze, # strict base64 string unquoted
292
+ PAnyType::DEFAULT => Format.new('%s').freeze, # unquoted string
289
293
  }.freeze
290
294
 
291
295
  DEFAULT_PARAMETER_FORMAT = {
@@ -487,8 +491,8 @@ class StringConverter
487
491
  # add the format given for the exact type
488
492
  string_formats = { Puppet::Pops::Types::PArrayType::DEFAULT => {'format' => string_formats }}
489
493
  elsif Puppet::Pops::Types::PHashType::DEFAULT.assignable?(value_type)
490
- # add the format given for the exact type
491
- string_formats = { Puppet::Pops::Types::PHashType::DEFAULT => {'format' => string_formats }}
494
+ # add the format given for the exact type
495
+ string_formats = { Puppet::Pops::Types::PHashType::DEFAULT => {'format' => string_formats }}
492
496
  else
493
497
  # add the format given for the exact type
494
498
  string_formats = { value_type => string_formats }
@@ -497,7 +501,7 @@ class StringConverter
497
501
 
498
502
  case string_formats
499
503
  when :default
500
- # do nothing, use default formats
504
+ # do nothing, use default formats
501
505
 
502
506
  when Hash
503
507
  # Convert and validate user input
@@ -511,14 +515,14 @@ class StringConverter
511
515
  _convert(value_type, value, options, DEFAULT_INDENTATION)
512
516
  end
513
517
 
514
- # # A method only used for manual debugging as the default output of the formatting rules is
515
- # # very hard to read otherwise.
516
- # #
517
- # # @api private
518
- # def dump_string_formats(f, indent = 1)
519
- # return f.to_s unless f.is_a?(Hash)
520
- # "{#{f.map {|k,v| "#{k.to_s} => #{dump_string_formats(v,indent+1)}"}.join(",\n#{' '*indent} ")}}"
521
- # end
518
+ # # A method only used for manual debugging as the default output of the formatting rules is
519
+ # # very hard to read otherwise.
520
+ # #
521
+ # # @api private
522
+ # def dump_string_formats(f, indent = 1)
523
+ # return f.to_s unless f.is_a?(Hash)
524
+ # "{#{f.map {|k,v| "#{k.to_s} => #{dump_string_formats(v,indent+1)}"}.join(",\n#{' '*indent} ")}}"
525
+ # end
522
526
 
523
527
  def _convert(val_type, value, format_map, indentation)
524
528
  @string_visitor.visit_this_3(self, val_type, value, format_map, indentation)
@@ -530,11 +534,13 @@ class StringConverter
530
534
  unless fmt.is_a?(Hash)
531
535
  raise ArgumentError, "expected a hash with type to format mappings, got instance of '#{fmt.class}'"
532
536
  end
537
+
533
538
  fmt.reduce({}) do | result, entry|
534
539
  key, value = entry
535
540
  unless key.is_a?(Types::PAnyType)
536
541
  raise ArgumentError, "top level keys in the format hash must be data types, got instance of '#{key.class}'"
537
542
  end
543
+
538
544
  if value.is_a?(Hash)
539
545
  result[key] = validate_container_input(value)
540
546
  else
@@ -551,6 +557,7 @@ class StringConverter
551
557
  if (fmt.keys - FMT_KEYS).size > 0
552
558
  raise ArgumentError, "only #{FMT_KEYS.map {|k| "'#{k}'"}.join(', ')} are allowed in a container format, got #{fmt}"
553
559
  end
560
+
554
561
  result = Format.new(fmt['format'])
555
562
  result.separator = fmt['separator']
556
563
  result.separator2 = fmt['separator2']
@@ -619,36 +626,37 @@ class StringConverter
619
626
  def string_PDefaultType(val_type, val, format_map, _)
620
627
  f = get_format(val_type, format_map)
621
628
  apply_string_flags(f, case f.format
622
- when :d, :s, :p
623
- f.alt? ? '"default"' : 'default'
624
- when :D
625
- f.alt? ? '"Default"' : 'Default'
626
- else
627
- raise FormatError.new('Default', f.format, 'dDsp')
628
- end)
629
+ when :d, :s, :p
630
+ f.alt? ? '"default"' : 'default'
631
+ when :D
632
+ f.alt? ? '"Default"' : 'Default'
633
+ else
634
+ raise FormatError.new('Default', f.format, 'dDsp')
635
+ end)
629
636
  end
630
637
 
631
638
  # @api private
632
639
  def string_PUndefType(val_type, val, format_map, _)
633
640
  f = get_format(val_type, format_map)
634
641
  apply_string_flags(f, case f.format
635
- when :n
636
- f.alt? ? 'null' : 'nil'
637
- when :u
638
- f.alt? ? 'undefined' : 'undef'
639
- when :d, :x, :X, :o, :b, :B, :e, :E, :f, :g, :G, :a, :A
640
- 'NaN'
641
- when :v
642
- 'n/a'
643
- when :V
644
- 'N/A'
645
- when :s
646
- f.alt? ? '""' : ''
647
- when :p
648
- f.alt? ? '"undef"' : 'undef'
649
- else
650
- raise FormatError.new('Undef', f.format, 'nudxXobBeEfgGaAvVsp')
651
- end)
642
+ when :n
643
+ f.alt? ? 'null' : 'nil'
644
+ when :u
645
+ f.alt? ? 'undefined' : 'undef'
646
+ when :d, :x, :X, :o, :b, :B, :e, :E, :f, :g, :G, :a, :A
647
+ 'NaN'
648
+ when :v
649
+ 'n/a'
650
+ when :V
651
+ 'N/A'
652
+ when :s
653
+ f.alt? ? '""' : ''
654
+ when :p
655
+ f.alt? ? '"undef"' : 'undef'
656
+ else
657
+ raise FormatError.new('Undef', f.format,
658
+ 'nudxXobBeEfgGaAvVsp')
659
+ end)
652
660
  end
653
661
 
654
662
  # @api private
@@ -701,7 +709,7 @@ class StringConverter
701
709
  # Performs post-processing of literals to apply width and precision flags
702
710
  def apply_string_flags(f, literal_str)
703
711
  if f.left || f.width || f.prec
704
- fmt = String.new('%')
712
+ fmt = '%'.dup
705
713
  fmt << '-' if f.left
706
714
  fmt << f.width.to_s if f.width
707
715
  fmt << '.' << f.prec.to_s if f.prec
@@ -815,23 +823,23 @@ class StringConverter
815
823
 
816
824
  when :c
817
825
  c_val = val.capitalize
818
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('c', 's'), c_val)
826
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('c', 's'), c_val)
819
827
 
820
828
  when :C
821
829
  c_val = val.split('::').map {|s| s.capitalize }.join('::')
822
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('C', 's'), c_val)
830
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('C', 's'), c_val)
823
831
 
824
832
  when :u
825
833
  c_val = val.upcase
826
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('u', 's'), c_val)
834
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('u', 's'), c_val)
827
835
 
828
836
  when :d
829
837
  c_val = val.downcase
830
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('d', 's'), c_val)
838
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('d', 's'), c_val)
831
839
 
832
- when :t # trim
840
+ when :t # trim
833
841
  c_val = val.strip
834
- f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('t', 's'), c_val)
842
+ f.alt? ? apply_string_flags(f, puppet_quote(c_val)) : Kernel.format(f.orig_fmt.tr('t', 's'), c_val)
835
843
 
836
844
  else
837
845
  raise FormatError.new('String', f.format, 'cCudspt')
@@ -853,7 +861,7 @@ class StringConverter
853
861
  end
854
862
 
855
863
  # Assume that the string can be single quoted
856
- bld = String.new('\'')
864
+ bld = "'".dup
857
865
  bld.force_encoding(str.encoding)
858
866
  escaped = false
859
867
  str.each_codepoint do |codepoint|
@@ -879,12 +887,12 @@ class StringConverter
879
887
  # If string ended with a backslash, then that backslash must be escaped
880
888
  bld << 0x5c if escaped
881
889
 
882
- bld << '\''
890
+ bld << "'"
883
891
  bld
884
892
  end
885
893
 
886
894
  def puppet_double_quote(str)
887
- bld = String.new('"')
895
+ bld = '"'.dup
888
896
  str.each_codepoint do |codepoint|
889
897
  case codepoint
890
898
  when 0x09
@@ -940,7 +948,7 @@ class StringConverter
940
948
 
941
949
  case format.format
942
950
  when :a, :s, :p
943
- buf = String.new
951
+ buf = ''.dup
944
952
  if indentation.breaks?
945
953
  buf << "\n"
946
954
  buf << indentation.padding
@@ -1055,7 +1063,7 @@ class StringConverter
1055
1063
 
1056
1064
  when :h, :s, :p
1057
1065
  indentation = indentation.indenting(format.alt? || indentation.is_indenting?)
1058
- buf = String.new
1066
+ buf = ''.dup
1059
1067
  if indentation.breaks?
1060
1068
  buf << "\n"
1061
1069
  buf << indentation.padding
@@ -1067,7 +1075,7 @@ class StringConverter
1067
1075
  padding = children_indentation.padding
1068
1076
  end
1069
1077
  buf << delims[0]
1070
- buf << cond_break # break after opening delimiter if pretty printing
1078
+ buf << cond_break # break after opening delimiter if pretty printing
1071
1079
  buf << val.map do |k,v|
1072
1080
  key_type = TypeCalculator.infer_set(k)
1073
1081
  val_type = TypeCalculator.infer_set(v)
@@ -1126,10 +1134,10 @@ class StringConverter
1126
1134
  def get_format(val_t, format_options)
1127
1135
  fmt = format_options.find {|k,_| k.assignable?(val_t) }
1128
1136
  return fmt[1] unless fmt.nil?
1137
+
1129
1138
  return Format.new("%s")
1130
1139
  end
1131
1140
  private :get_format
1132
-
1133
1141
  end
1134
1142
  end
1135
1143
  end