openvox 7.37.1

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 (1120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +15 -0
  3. data/CODEOWNERS +11 -0
  4. data/CODE_OF_CONDUCT.md +70 -0
  5. data/CONTRIBUTING.md +161 -0
  6. data/Gemfile +82 -0
  7. data/Guardfile.example +76 -0
  8. data/LICENSE +202 -0
  9. data/README.md +68 -0
  10. data/Rakefile +160 -0
  11. data/bin/puppet +9 -0
  12. data/conf/environment.conf +18 -0
  13. data/conf/fileserver.conf +32 -0
  14. data/conf/hiera.yaml +11 -0
  15. data/conf/puppet.conf +6 -0
  16. data/examples/enc/regexp_nodes/classes/databases +2 -0
  17. data/examples/enc/regexp_nodes/classes/webservers +2 -0
  18. data/examples/enc/regexp_nodes/environment/development +2 -0
  19. data/examples/enc/regexp_nodes/parameters/service/prod +1 -0
  20. data/examples/enc/regexp_nodes/parameters/service/qa +3 -0
  21. data/examples/enc/regexp_nodes/parameters/service/sandbox +1 -0
  22. data/examples/enc/regexp_nodes/regexp_nodes.rb +270 -0
  23. data/examples/hiera/README.md +91 -0
  24. data/examples/hiera/etc/hiera.yaml +15 -0
  25. data/examples/hiera/etc/hieradb/common.yaml +3 -0
  26. data/examples/hiera/etc/hieradb/dc1.yaml +6 -0
  27. data/examples/hiera/etc/hieradb/development.yaml +2 -0
  28. data/examples/hiera/etc/puppet.conf +3 -0
  29. data/examples/hiera/modules/data/manifests/common.pp +4 -0
  30. data/examples/hiera/modules/ntp/manifests/config.pp +6 -0
  31. data/examples/hiera/modules/ntp/manifests/data.pp +4 -0
  32. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +3 -0
  33. data/examples/hiera/modules/users/manifests/common.pp +4 -0
  34. data/examples/hiera/modules/users/manifests/dc1.pp +4 -0
  35. data/examples/hiera/modules/users/manifests/development.pp +4 -0
  36. data/examples/hiera/site.pp +3 -0
  37. data/examples/nagios/check_puppet.rb +123 -0
  38. data/ext/README.md +13 -0
  39. data/ext/build_defaults.yaml +18 -0
  40. data/ext/debian/puppet.default +4 -0
  41. data/ext/debian/puppet.init +113 -0
  42. data/ext/hiera/hiera.yaml +15 -0
  43. data/ext/osx/puppet.plist +32 -0
  44. data/ext/project_data.yaml +20 -0
  45. data/ext/redhat/client.init +169 -0
  46. data/ext/redhat/client.sysconfig +2 -0
  47. data/ext/solaris/smf/puppet +44 -0
  48. data/ext/solaris/smf/puppet.xml +46 -0
  49. data/ext/suse/client.init +141 -0
  50. data/ext/systemd/puppet.service +26 -0
  51. data/ext/windows/puppet_interactive.bat +6 -0
  52. data/ext/windows/puppet_shell.bat +9 -0
  53. data/ext/windows/run_puppet_interactive.bat +9 -0
  54. data/ext/windows/service/daemon.bat +6 -0
  55. data/ext/windows/service/daemon.rb +225 -0
  56. data/install.rb +499 -0
  57. data/lib/hiera/puppet_function.rb +84 -0
  58. data/lib/hiera/scope.rb +90 -0
  59. data/lib/hiera_puppet.rb +80 -0
  60. data/lib/puppet/agent/disabler.rb +53 -0
  61. data/lib/puppet/agent/locker.rb +46 -0
  62. data/lib/puppet/agent.rb +176 -0
  63. data/lib/puppet/application/agent.rb +523 -0
  64. data/lib/puppet/application/apply.rb +428 -0
  65. data/lib/puppet/application/catalog.rb +4 -0
  66. data/lib/puppet/application/config.rb +5 -0
  67. data/lib/puppet/application/describe.rb +253 -0
  68. data/lib/puppet/application/device.rb +439 -0
  69. data/lib/puppet/application/doc.rb +233 -0
  70. data/lib/puppet/application/epp.rb +5 -0
  71. data/lib/puppet/application/face_base.rb +276 -0
  72. data/lib/puppet/application/facts.rb +9 -0
  73. data/lib/puppet/application/filebucket.rb +318 -0
  74. data/lib/puppet/application/generate.rb +5 -0
  75. data/lib/puppet/application/help.rb +5 -0
  76. data/lib/puppet/application/indirection_base.rb +4 -0
  77. data/lib/puppet/application/lookup.rb +433 -0
  78. data/lib/puppet/application/module.rb +4 -0
  79. data/lib/puppet/application/node.rb +4 -0
  80. data/lib/puppet/application/parser.rb +5 -0
  81. data/lib/puppet/application/plugin.rb +4 -0
  82. data/lib/puppet/application/report.rb +4 -0
  83. data/lib/puppet/application/resource.rb +254 -0
  84. data/lib/puppet/application/script.rb +264 -0
  85. data/lib/puppet/application/ssl.rb +323 -0
  86. data/lib/puppet/application.rb +596 -0
  87. data/lib/puppet/application_support.rb +68 -0
  88. data/lib/puppet/coercion.rb +40 -0
  89. data/lib/puppet/compilable_resource_type.rb +15 -0
  90. data/lib/puppet/concurrent/lock.rb +16 -0
  91. data/lib/puppet/concurrent/synchronized.rb +15 -0
  92. data/lib/puppet/concurrent/thread_local_singleton.rb +17 -0
  93. data/lib/puppet/concurrent.rb +2 -0
  94. data/lib/puppet/configurer/downloader.rb +85 -0
  95. data/lib/puppet/configurer/fact_handler.rb +50 -0
  96. data/lib/puppet/configurer/plugin_handler.rb +59 -0
  97. data/lib/puppet/configurer.rb +755 -0
  98. data/lib/puppet/confine/any.rb +26 -0
  99. data/lib/puppet/confine/boolean.rb +45 -0
  100. data/lib/puppet/confine/exists.rb +19 -0
  101. data/lib/puppet/confine/false.rb +25 -0
  102. data/lib/puppet/confine/feature.rb +17 -0
  103. data/lib/puppet/confine/true.rb +26 -0
  104. data/lib/puppet/confine/variable.rb +59 -0
  105. data/lib/puppet/confine.rb +83 -0
  106. data/lib/puppet/confine_collection.rb +51 -0
  107. data/lib/puppet/confiner.rb +46 -0
  108. data/lib/puppet/context/trusted_information.rb +120 -0
  109. data/lib/puppet/context.rb +188 -0
  110. data/lib/puppet/daemon.rb +182 -0
  111. data/lib/puppet/data_binding.rb +14 -0
  112. data/lib/puppet/datatypes/error.rb +21 -0
  113. data/lib/puppet/datatypes/impl/error.rb +40 -0
  114. data/lib/puppet/datatypes.rb +213 -0
  115. data/lib/puppet/defaults.rb +2277 -0
  116. data/lib/puppet/environments.rb +601 -0
  117. data/lib/puppet/error.rb +138 -0
  118. data/lib/puppet/etc.rb +180 -0
  119. data/lib/puppet/external/dot.rb +325 -0
  120. data/lib/puppet/external/pson/common.rb +374 -0
  121. data/lib/puppet/external/pson/pure/generator.rb +395 -0
  122. data/lib/puppet/external/pson/pure/parser.rb +308 -0
  123. data/lib/puppet/external/pson/pure.rb +15 -0
  124. data/lib/puppet/external/pson/version.rb +8 -0
  125. data/lib/puppet/face/catalog/select.rb +49 -0
  126. data/lib/puppet/face/catalog.rb +165 -0
  127. data/lib/puppet/face/config.rb +267 -0
  128. data/lib/puppet/face/epp.rb +566 -0
  129. data/lib/puppet/face/facts.rb +174 -0
  130. data/lib/puppet/face/generate.rb +66 -0
  131. data/lib/puppet/face/help/action.erb +90 -0
  132. data/lib/puppet/face/help/face.erb +115 -0
  133. data/lib/puppet/face/help/global.erb +16 -0
  134. data/lib/puppet/face/help/man.erb +152 -0
  135. data/lib/puppet/face/help.rb +242 -0
  136. data/lib/puppet/face/module/changes.rb +43 -0
  137. data/lib/puppet/face/module/install.rb +146 -0
  138. data/lib/puppet/face/module/list.rb +272 -0
  139. data/lib/puppet/face/module/uninstall.rb +89 -0
  140. data/lib/puppet/face/module/upgrade.rb +87 -0
  141. data/lib/puppet/face/module.rb +19 -0
  142. data/lib/puppet/face/node/clean.rb +107 -0
  143. data/lib/puppet/face/node.rb +43 -0
  144. data/lib/puppet/face/parser.rb +227 -0
  145. data/lib/puppet/face/plugin.rb +60 -0
  146. data/lib/puppet/face/report.rb +54 -0
  147. data/lib/puppet/face/resource.rb +53 -0
  148. data/lib/puppet/face.rb +12 -0
  149. data/lib/puppet/facter_impl.rb +96 -0
  150. data/lib/puppet/feature/base.rb +76 -0
  151. data/lib/puppet/feature/bolt.rb +3 -0
  152. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  153. data/lib/puppet/feature/eventlog.rb +5 -0
  154. data/lib/puppet/feature/hiera_eyaml.rb +3 -0
  155. data/lib/puppet/feature/hocon.rb +3 -0
  156. data/lib/puppet/feature/libuser.rb +8 -0
  157. data/lib/puppet/feature/msgpack.rb +3 -0
  158. data/lib/puppet/feature/pe_license.rb +4 -0
  159. data/lib/puppet/feature/selinux.rb +3 -0
  160. data/lib/puppet/feature/ssh.rb +3 -0
  161. data/lib/puppet/feature/telnet.rb +9 -0
  162. data/lib/puppet/feature/zlib.rb +5 -0
  163. data/lib/puppet/ffi/posix/constants.rb +14 -0
  164. data/lib/puppet/ffi/posix/functions.rb +24 -0
  165. data/lib/puppet/ffi/posix.rb +10 -0
  166. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  167. data/lib/puppet/ffi/windows/constants.rb +404 -0
  168. data/lib/puppet/ffi/windows/functions.rb +628 -0
  169. data/lib/puppet/ffi/windows/structs.rb +338 -0
  170. data/lib/puppet/ffi/windows.rb +12 -0
  171. data/lib/puppet/file_bucket/dipper.rb +174 -0
  172. data/lib/puppet/file_bucket/file.rb +129 -0
  173. data/lib/puppet/file_bucket.rb +4 -0
  174. data/lib/puppet/file_serving/base.rb +86 -0
  175. data/lib/puppet/file_serving/configuration/parser.rb +113 -0
  176. data/lib/puppet/file_serving/configuration.rb +113 -0
  177. data/lib/puppet/file_serving/content.rb +43 -0
  178. data/lib/puppet/file_serving/fileset.rb +186 -0
  179. data/lib/puppet/file_serving/http_metadata.rb +62 -0
  180. data/lib/puppet/file_serving/metadata.rb +171 -0
  181. data/lib/puppet/file_serving/mount/file.rb +122 -0
  182. data/lib/puppet/file_serving/mount/locales.rb +35 -0
  183. data/lib/puppet/file_serving/mount/modules.rb +26 -0
  184. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  185. data/lib/puppet/file_serving/mount/plugins.rb +35 -0
  186. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  187. data/lib/puppet/file_serving/mount/tasks.rb +23 -0
  188. data/lib/puppet/file_serving/mount.rb +38 -0
  189. data/lib/puppet/file_serving/terminus_helper.rb +31 -0
  190. data/lib/puppet/file_serving/terminus_selector.rb +31 -0
  191. data/lib/puppet/file_serving.rb +3 -0
  192. data/lib/puppet/file_system/file_impl.rb +188 -0
  193. data/lib/puppet/file_system/jruby.rb +23 -0
  194. data/lib/puppet/file_system/memory_file.rb +79 -0
  195. data/lib/puppet/file_system/memory_impl.rb +99 -0
  196. data/lib/puppet/file_system/path_pattern.rb +93 -0
  197. data/lib/puppet/file_system/posix.rb +47 -0
  198. data/lib/puppet/file_system/uniquefile.rb +188 -0
  199. data/lib/puppet/file_system/windows.rb +213 -0
  200. data/lib/puppet/file_system.rb +419 -0
  201. data/lib/puppet/forge/cache.rb +60 -0
  202. data/lib/puppet/forge/errors.rb +114 -0
  203. data/lib/puppet/forge/repository.rb +95 -0
  204. data/lib/puppet/forge.rb +259 -0
  205. data/lib/puppet/functions/abs.rb +61 -0
  206. data/lib/puppet/functions/alert.rb +14 -0
  207. data/lib/puppet/functions/all.rb +104 -0
  208. data/lib/puppet/functions/annotate.rb +108 -0
  209. data/lib/puppet/functions/any.rb +109 -0
  210. data/lib/puppet/functions/assert_type.rb +93 -0
  211. data/lib/puppet/functions/binary_file.rb +32 -0
  212. data/lib/puppet/functions/break.rb +47 -0
  213. data/lib/puppet/functions/call.rb +80 -0
  214. data/lib/puppet/functions/camelcase.rb +62 -0
  215. data/lib/puppet/functions/capitalize.rb +61 -0
  216. data/lib/puppet/functions/ceiling.rb +37 -0
  217. data/lib/puppet/functions/chomp.rb +57 -0
  218. data/lib/puppet/functions/chop.rb +67 -0
  219. data/lib/puppet/functions/compare.rb +125 -0
  220. data/lib/puppet/functions/contain.rb +55 -0
  221. data/lib/puppet/functions/convert_to.rb +34 -0
  222. data/lib/puppet/functions/crit.rb +14 -0
  223. data/lib/puppet/functions/debug.rb +14 -0
  224. data/lib/puppet/functions/defined.rb +159 -0
  225. data/lib/puppet/functions/dig.rb +67 -0
  226. data/lib/puppet/functions/downcase.rb +89 -0
  227. data/lib/puppet/functions/each.rb +167 -0
  228. data/lib/puppet/functions/emerg.rb +14 -0
  229. data/lib/puppet/functions/empty.rb +85 -0
  230. data/lib/puppet/functions/epp.rb +49 -0
  231. data/lib/puppet/functions/err.rb +14 -0
  232. data/lib/puppet/functions/eyaml_lookup_key.rb +102 -0
  233. data/lib/puppet/functions/filter.rb +137 -0
  234. data/lib/puppet/functions/find_file.rb +44 -0
  235. data/lib/puppet/functions/find_template.rb +63 -0
  236. data/lib/puppet/functions/flatten.rb +64 -0
  237. data/lib/puppet/functions/floor.rb +37 -0
  238. data/lib/puppet/functions/get.rb +150 -0
  239. data/lib/puppet/functions/getvar.rb +87 -0
  240. data/lib/puppet/functions/group_by.rb +62 -0
  241. data/lib/puppet/functions/hiera.rb +89 -0
  242. data/lib/puppet/functions/hiera_array.rb +81 -0
  243. data/lib/puppet/functions/hiera_hash.rb +92 -0
  244. data/lib/puppet/functions/hiera_include.rb +104 -0
  245. data/lib/puppet/functions/hocon_data.rb +41 -0
  246. data/lib/puppet/functions/import.rb +7 -0
  247. data/lib/puppet/functions/include.rb +53 -0
  248. data/lib/puppet/functions/index.rb +167 -0
  249. data/lib/puppet/functions/info.rb +14 -0
  250. data/lib/puppet/functions/inline_epp.rb +60 -0
  251. data/lib/puppet/functions/join.rb +56 -0
  252. data/lib/puppet/functions/json_data.rb +33 -0
  253. data/lib/puppet/functions/keys.rb +25 -0
  254. data/lib/puppet/functions/length.rb +44 -0
  255. data/lib/puppet/functions/lest.rb +55 -0
  256. data/lib/puppet/functions/lookup.rb +224 -0
  257. data/lib/puppet/functions/lstrip.rb +58 -0
  258. data/lib/puppet/functions/map.rb +135 -0
  259. data/lib/puppet/functions/match.rb +130 -0
  260. data/lib/puppet/functions/max.rb +183 -0
  261. data/lib/puppet/functions/min.rb +182 -0
  262. data/lib/puppet/functions/module_directory.rb +41 -0
  263. data/lib/puppet/functions/new.rb +1011 -0
  264. data/lib/puppet/functions/next.rb +33 -0
  265. data/lib/puppet/functions/notice.rb +14 -0
  266. data/lib/puppet/functions/partition.rb +62 -0
  267. data/lib/puppet/functions/reduce.rb +162 -0
  268. data/lib/puppet/functions/regsubst.rb +101 -0
  269. data/lib/puppet/functions/require.rb +77 -0
  270. data/lib/puppet/functions/return.rb +15 -0
  271. data/lib/puppet/functions/reverse_each.rb +94 -0
  272. data/lib/puppet/functions/round.rb +24 -0
  273. data/lib/puppet/functions/rstrip.rb +58 -0
  274. data/lib/puppet/functions/scanf.rb +44 -0
  275. data/lib/puppet/functions/size.rb +15 -0
  276. data/lib/puppet/functions/slice.rb +124 -0
  277. data/lib/puppet/functions/sort.rb +74 -0
  278. data/lib/puppet/functions/split.rb +76 -0
  279. data/lib/puppet/functions/step.rb +98 -0
  280. data/lib/puppet/functions/strftime.rb +212 -0
  281. data/lib/puppet/functions/strip.rb +58 -0
  282. data/lib/puppet/functions/then.rb +77 -0
  283. data/lib/puppet/functions/tree_each.rb +197 -0
  284. data/lib/puppet/functions/type.rb +72 -0
  285. data/lib/puppet/functions/unique.rb +132 -0
  286. data/lib/puppet/functions/unwrap.rb +59 -0
  287. data/lib/puppet/functions/upcase.rb +89 -0
  288. data/lib/puppet/functions/values.rb +25 -0
  289. data/lib/puppet/functions/versioncmp.rb +40 -0
  290. data/lib/puppet/functions/warning.rb +14 -0
  291. data/lib/puppet/functions/with.rb +32 -0
  292. data/lib/puppet/functions/yaml_data.rb +45 -0
  293. data/lib/puppet/functions.rb +862 -0
  294. data/lib/puppet/generate/models/type/property.rb +70 -0
  295. data/lib/puppet/generate/models/type/type.rb +65 -0
  296. data/lib/puppet/generate/templates/type/pcore.erb +42 -0
  297. data/lib/puppet/generate/type.rb +249 -0
  298. data/lib/puppet/gettext/config.rb +275 -0
  299. data/lib/puppet/gettext/module_translations.rb +42 -0
  300. data/lib/puppet/gettext/stubs.rb +11 -0
  301. data/lib/puppet/graph/key.rb +26 -0
  302. data/lib/puppet/graph/prioritizer.rb +29 -0
  303. data/lib/puppet/graph/rb_tree_map.rb +388 -0
  304. data/lib/puppet/graph/relationship_graph.rb +284 -0
  305. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  306. data/lib/puppet/graph/simple_graph.rb +546 -0
  307. data/lib/puppet/graph.rb +9 -0
  308. data/lib/puppet/http/client.rb +525 -0
  309. data/lib/puppet/http/dns.rb +159 -0
  310. data/lib/puppet/http/errors.rb +48 -0
  311. data/lib/puppet/http/external_client.rb +88 -0
  312. data/lib/puppet/http/factory.rb +51 -0
  313. data/lib/puppet/http/pool.rb +172 -0
  314. data/lib/puppet/http/pool_entry.rb +17 -0
  315. data/lib/puppet/http/proxy.rb +137 -0
  316. data/lib/puppet/http/redirector.rb +85 -0
  317. data/lib/puppet/http/resolver/server_list.rb +87 -0
  318. data/lib/puppet/http/resolver/settings.rb +23 -0
  319. data/lib/puppet/http/resolver/srv.rb +41 -0
  320. data/lib/puppet/http/resolver.rb +48 -0
  321. data/lib/puppet/http/response.rb +102 -0
  322. data/lib/puppet/http/response_converter.rb +24 -0
  323. data/lib/puppet/http/response_net_http.rb +42 -0
  324. data/lib/puppet/http/retry_after_handler.rb +77 -0
  325. data/lib/puppet/http/service/ca.rb +101 -0
  326. data/lib/puppet/http/service/compiler.rb +353 -0
  327. data/lib/puppet/http/service/file_server.rb +198 -0
  328. data/lib/puppet/http/service/puppetserver.rb +53 -0
  329. data/lib/puppet/http/service/report.rb +64 -0
  330. data/lib/puppet/http/service.rb +182 -0
  331. data/lib/puppet/http/session.rb +122 -0
  332. data/lib/puppet/http/site.rb +42 -0
  333. data/lib/puppet/http.rb +46 -0
  334. data/lib/puppet/indirector/catalog/compiler.rb +431 -0
  335. data/lib/puppet/indirector/catalog/json.rb +40 -0
  336. data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  337. data/lib/puppet/indirector/catalog/rest.rb +49 -0
  338. data/lib/puppet/indirector/catalog/store_configs.rb +8 -0
  339. data/lib/puppet/indirector/catalog/yaml.rb +6 -0
  340. data/lib/puppet/indirector/code.rb +6 -0
  341. data/lib/puppet/indirector/data_binding/hiera.rb +7 -0
  342. data/lib/puppet/indirector/data_binding/none.rb +8 -0
  343. data/lib/puppet/indirector/direct_file_server.rb +17 -0
  344. data/lib/puppet/indirector/envelope.rb +11 -0
  345. data/lib/puppet/indirector/errors.rb +5 -0
  346. data/lib/puppet/indirector/exec.rb +38 -0
  347. data/lib/puppet/indirector/face.rb +153 -0
  348. data/lib/puppet/indirector/fact_search.rb +60 -0
  349. data/lib/puppet/indirector/facts/facter.rb +117 -0
  350. data/lib/puppet/indirector/facts/json.rb +27 -0
  351. data/lib/puppet/indirector/facts/memory.rb +9 -0
  352. data/lib/puppet/indirector/facts/network_device.rb +27 -0
  353. data/lib/puppet/indirector/facts/rest.rb +44 -0
  354. data/lib/puppet/indirector/facts/store_configs.rb +11 -0
  355. data/lib/puppet/indirector/facts/yaml.rb +29 -0
  356. data/lib/puppet/indirector/file_bucket_file/file.rb +262 -0
  357. data/lib/puppet/indirector/file_bucket_file/rest.rb +50 -0
  358. data/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
  359. data/lib/puppet/indirector/file_content/file.rb +7 -0
  360. data/lib/puppet/indirector/file_content/file_server.rb +7 -0
  361. data/lib/puppet/indirector/file_content/rest.rb +35 -0
  362. data/lib/puppet/indirector/file_content/selector.rb +30 -0
  363. data/lib/puppet/indirector/file_content.rb +5 -0
  364. data/lib/puppet/indirector/file_metadata/file.rb +7 -0
  365. data/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
  366. data/lib/puppet/indirector/file_metadata/http.rb +47 -0
  367. data/lib/puppet/indirector/file_metadata/rest.rb +56 -0
  368. data/lib/puppet/indirector/file_metadata/selector.rb +30 -0
  369. data/lib/puppet/indirector/file_metadata.rb +5 -0
  370. data/lib/puppet/indirector/file_server.rb +54 -0
  371. data/lib/puppet/indirector/generic_http.rb +5 -0
  372. data/lib/puppet/indirector/hiera.rb +100 -0
  373. data/lib/puppet/indirector/indirection.rb +372 -0
  374. data/lib/puppet/indirector/json.rb +79 -0
  375. data/lib/puppet/indirector/memory.rb +34 -0
  376. data/lib/puppet/indirector/msgpack.rb +83 -0
  377. data/lib/puppet/indirector/node/exec.rb +70 -0
  378. data/lib/puppet/indirector/node/json.rb +8 -0
  379. data/lib/puppet/indirector/node/memory.rb +10 -0
  380. data/lib/puppet/indirector/node/msgpack.rb +7 -0
  381. data/lib/puppet/indirector/node/plain.rb +21 -0
  382. data/lib/puppet/indirector/node/rest.rb +29 -0
  383. data/lib/puppet/indirector/node/store_configs.rb +8 -0
  384. data/lib/puppet/indirector/node/yaml.rb +7 -0
  385. data/lib/puppet/indirector/none.rb +9 -0
  386. data/lib/puppet/indirector/plain.rb +9 -0
  387. data/lib/puppet/indirector/report/json.rb +34 -0
  388. data/lib/puppet/indirector/report/msgpack.rb +11 -0
  389. data/lib/puppet/indirector/report/processor.rb +60 -0
  390. data/lib/puppet/indirector/report/rest.rb +42 -0
  391. data/lib/puppet/indirector/report/yaml.rb +34 -0
  392. data/lib/puppet/indirector/request.rb +194 -0
  393. data/lib/puppet/indirector/resource/ral.rb +66 -0
  394. data/lib/puppet/indirector/resource/store_configs.rb +12 -0
  395. data/lib/puppet/indirector/resource/validator.rb +8 -0
  396. data/lib/puppet/indirector/rest.rb +64 -0
  397. data/lib/puppet/indirector/store_configs.rb +30 -0
  398. data/lib/puppet/indirector/terminus.rb +176 -0
  399. data/lib/puppet/indirector/yaml.rb +63 -0
  400. data/lib/puppet/indirector.rb +61 -0
  401. data/lib/puppet/info_service/class_information_service.rb +109 -0
  402. data/lib/puppet/info_service/plan_information_service.rb +36 -0
  403. data/lib/puppet/info_service/task_information_service.rb +44 -0
  404. data/lib/puppet/info_service.rb +26 -0
  405. data/lib/puppet/interface/action.rb +406 -0
  406. data/lib/puppet/interface/action_builder.rb +161 -0
  407. data/lib/puppet/interface/action_manager.rb +98 -0
  408. data/lib/puppet/interface/documentation.rb +357 -0
  409. data/lib/puppet/interface/face_collection.rb +137 -0
  410. data/lib/puppet/interface/option.rb +172 -0
  411. data/lib/puppet/interface/option_builder.rb +105 -0
  412. data/lib/puppet/interface/option_manager.rb +106 -0
  413. data/lib/puppet/interface.rb +239 -0
  414. data/lib/puppet/loaders.rb +30 -0
  415. data/lib/puppet/metatype/manager.rb +197 -0
  416. data/lib/puppet/module/plan.rb +159 -0
  417. data/lib/puppet/module/task.rb +283 -0
  418. data/lib/puppet/module.rb +475 -0
  419. data/lib/puppet/module_tool/applications/application.rb +91 -0
  420. data/lib/puppet/module_tool/applications/checksummer.rb +62 -0
  421. data/lib/puppet/module_tool/applications/installer.rb +411 -0
  422. data/lib/puppet/module_tool/applications/uninstaller.rb +119 -0
  423. data/lib/puppet/module_tool/applications/unpacker.rb +100 -0
  424. data/lib/puppet/module_tool/applications/upgrader.rb +282 -0
  425. data/lib/puppet/module_tool/applications.rb +12 -0
  426. data/lib/puppet/module_tool/checksums.rb +49 -0
  427. data/lib/puppet/module_tool/contents_description.rb +89 -0
  428. data/lib/puppet/module_tool/dependency.rb +41 -0
  429. data/lib/puppet/module_tool/errors/base.rb +15 -0
  430. data/lib/puppet/module_tool/errors/installer.rb +93 -0
  431. data/lib/puppet/module_tool/errors/shared.rb +227 -0
  432. data/lib/puppet/module_tool/errors/uninstaller.rb +50 -0
  433. data/lib/puppet/module_tool/errors/upgrader.rb +63 -0
  434. data/lib/puppet/module_tool/errors.rb +11 -0
  435. data/lib/puppet/module_tool/install_directory.rb +45 -0
  436. data/lib/puppet/module_tool/installed_modules.rb +96 -0
  437. data/lib/puppet/module_tool/local_tarball.rb +90 -0
  438. data/lib/puppet/module_tool/metadata.rb +221 -0
  439. data/lib/puppet/module_tool/shared_behaviors.rb +181 -0
  440. data/lib/puppet/module_tool/tar/gnu.rb +19 -0
  441. data/lib/puppet/module_tool/tar/mini.rb +116 -0
  442. data/lib/puppet/module_tool/tar.rb +18 -0
  443. data/lib/puppet/module_tool.rb +194 -0
  444. data/lib/puppet/network/authconfig.rb +7 -0
  445. data/lib/puppet/network/authorization.rb +19 -0
  446. data/lib/puppet/network/client_request.rb +29 -0
  447. data/lib/puppet/network/format.rb +110 -0
  448. data/lib/puppet/network/format_handler.rb +108 -0
  449. data/lib/puppet/network/format_support.rb +139 -0
  450. data/lib/puppet/network/formats.rb +329 -0
  451. data/lib/puppet/network/http/api/indirected_routes.rb +277 -0
  452. data/lib/puppet/network/http/api/indirection_type.rb +32 -0
  453. data/lib/puppet/network/http/api/master/v3/environments.rb +3 -0
  454. data/lib/puppet/network/http/api/master/v3.rb +3 -0
  455. data/lib/puppet/network/http/api/master.rb +3 -0
  456. data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
  457. data/lib/puppet/network/http/api/server/v3.rb +39 -0
  458. data/lib/puppet/network/http/api/server.rb +10 -0
  459. data/lib/puppet/network/http/api.rb +39 -0
  460. data/lib/puppet/network/http/connection.rb +286 -0
  461. data/lib/puppet/network/http/error.rb +73 -0
  462. data/lib/puppet/network/http/handler.rb +215 -0
  463. data/lib/puppet/network/http/issues.rb +12 -0
  464. data/lib/puppet/network/http/memory_response.rb +13 -0
  465. data/lib/puppet/network/http/request.rb +71 -0
  466. data/lib/puppet/network/http/response.rb +23 -0
  467. data/lib/puppet/network/http/route.rb +101 -0
  468. data/lib/puppet/network/http.rb +28 -0
  469. data/lib/puppet/network/http_pool.rb +77 -0
  470. data/lib/puppet/network/uri.rb +18 -0
  471. data/lib/puppet/network.rb +3 -0
  472. data/lib/puppet/node/environment.rb +635 -0
  473. data/lib/puppet/node/facts.rb +165 -0
  474. data/lib/puppet/node/server_facts.rb +46 -0
  475. data/lib/puppet/node.rb +256 -0
  476. data/lib/puppet/pal/catalog_compiler.rb +108 -0
  477. data/lib/puppet/pal/compiler.rb +222 -0
  478. data/lib/puppet/pal/function_signature.rb +52 -0
  479. data/lib/puppet/pal/json_catalog_encoder.rb +71 -0
  480. data/lib/puppet/pal/pal_api.rb +15 -0
  481. data/lib/puppet/pal/pal_impl.rb +590 -0
  482. data/lib/puppet/pal/plan_signature.rb +71 -0
  483. data/lib/puppet/pal/script_compiler.rb +73 -0
  484. data/lib/puppet/pal/task_signature.rb +58 -0
  485. data/lib/puppet/parameter/boolean.rb +15 -0
  486. data/lib/puppet/parameter/package_options.rb +31 -0
  487. data/lib/puppet/parameter/path.rb +57 -0
  488. data/lib/puppet/parameter/value.rb +91 -0
  489. data/lib/puppet/parameter/value_collection.rb +212 -0
  490. data/lib/puppet/parameter.rb +589 -0
  491. data/lib/puppet/parser/abstract_compiler.rb +36 -0
  492. data/lib/puppet/parser/ast/block_expression.rb +15 -0
  493. data/lib/puppet/parser/ast/branch.rb +19 -0
  494. data/lib/puppet/parser/ast/hostclass.rb +27 -0
  495. data/lib/puppet/parser/ast/leaf.rb +81 -0
  496. data/lib/puppet/parser/ast/node.rb +17 -0
  497. data/lib/puppet/parser/ast/pops_bridge.rb +245 -0
  498. data/lib/puppet/parser/ast/resource.rb +66 -0
  499. data/lib/puppet/parser/ast/resource_instance.rb +10 -0
  500. data/lib/puppet/parser/ast/resourceparam.rb +31 -0
  501. data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
  502. data/lib/puppet/parser/ast.rb +61 -0
  503. data/lib/puppet/parser/catalog_compiler.rb +56 -0
  504. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +39 -0
  505. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  506. data/lib/puppet/parser/compiler.rb +615 -0
  507. data/lib/puppet/parser/e4_parser_adapter.rb +60 -0
  508. data/lib/puppet/parser/files.rb +93 -0
  509. data/lib/puppet/parser/functions/assert_type.rb +60 -0
  510. data/lib/puppet/parser/functions/binary_file.rb +24 -0
  511. data/lib/puppet/parser/functions/break.rb +39 -0
  512. data/lib/puppet/parser/functions/contain.rb +30 -0
  513. data/lib/puppet/parser/functions/create_resources.rb +110 -0
  514. data/lib/puppet/parser/functions/defined.rb +107 -0
  515. data/lib/puppet/parser/functions/dig.rb +38 -0
  516. data/lib/puppet/parser/functions/digest.rb +5 -0
  517. data/lib/puppet/parser/functions/each.rb +104 -0
  518. data/lib/puppet/parser/functions/epp.rb +39 -0
  519. data/lib/puppet/parser/functions/fail.rb +11 -0
  520. data/lib/puppet/parser/functions/file.rb +33 -0
  521. data/lib/puppet/parser/functions/filter.rb +79 -0
  522. data/lib/puppet/parser/functions/find_file.rb +28 -0
  523. data/lib/puppet/parser/functions/fqdn_rand.rb +44 -0
  524. data/lib/puppet/parser/functions/generate.rb +37 -0
  525. data/lib/puppet/parser/functions/hiera.rb +103 -0
  526. data/lib/puppet/parser/functions/hiera_array.rb +92 -0
  527. data/lib/puppet/parser/functions/hiera_hash.rb +102 -0
  528. data/lib/puppet/parser/functions/hiera_include.rb +101 -0
  529. data/lib/puppet/parser/functions/include.rb +34 -0
  530. data/lib/puppet/parser/functions/inline_epp.rb +51 -0
  531. data/lib/puppet/parser/functions/inline_template.rb +26 -0
  532. data/lib/puppet/parser/functions/lest.rb +49 -0
  533. data/lib/puppet/parser/functions/lookup.rb +132 -0
  534. data/lib/puppet/parser/functions/map.rb +76 -0
  535. data/lib/puppet/parser/functions/match.rb +43 -0
  536. data/lib/puppet/parser/functions/md5.rb +5 -0
  537. data/lib/puppet/parser/functions/new.rb +991 -0
  538. data/lib/puppet/parser/functions/next.rb +38 -0
  539. data/lib/puppet/parser/functions/realize.rb +20 -0
  540. data/lib/puppet/parser/functions/reduce.rb +137 -0
  541. data/lib/puppet/parser/functions/regsubst.rb +62 -0
  542. data/lib/puppet/parser/functions/require.rb +40 -0
  543. data/lib/puppet/parser/functions/return.rb +92 -0
  544. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  545. data/lib/puppet/parser/functions/scanf.rb +38 -0
  546. data/lib/puppet/parser/functions/sha1.rb +5 -0
  547. data/lib/puppet/parser/functions/sha256.rb +5 -0
  548. data/lib/puppet/parser/functions/shellquote.rb +61 -0
  549. data/lib/puppet/parser/functions/slice.rb +39 -0
  550. data/lib/puppet/parser/functions/split.rb +28 -0
  551. data/lib/puppet/parser/functions/sprintf.rb +61 -0
  552. data/lib/puppet/parser/functions/step.rb +84 -0
  553. data/lib/puppet/parser/functions/strftime.rb +185 -0
  554. data/lib/puppet/parser/functions/tag.rb +12 -0
  555. data/lib/puppet/parser/functions/tagged.rb +21 -0
  556. data/lib/puppet/parser/functions/template.rb +39 -0
  557. data/lib/puppet/parser/functions/then.rb +73 -0
  558. data/lib/puppet/parser/functions/type.rb +53 -0
  559. data/lib/puppet/parser/functions/versioncmp.rb +30 -0
  560. data/lib/puppet/parser/functions/with.rb +28 -0
  561. data/lib/puppet/parser/functions.rb +321 -0
  562. data/lib/puppet/parser/parser_factory.rb +30 -0
  563. data/lib/puppet/parser/relationship.rb +84 -0
  564. data/lib/puppet/parser/resource/param.rb +35 -0
  565. data/lib/puppet/parser/resource.rb +351 -0
  566. data/lib/puppet/parser/scope.rb +1127 -0
  567. data/lib/puppet/parser/script_compiler.rb +123 -0
  568. data/lib/puppet/parser/templatewrapper.rb +104 -0
  569. data/lib/puppet/parser/type_loader.rb +150 -0
  570. data/lib/puppet/parser.rb +20 -0
  571. data/lib/puppet/plugins/configuration.rb +29 -0
  572. data/lib/puppet/plugins/syntax_checkers.rb +98 -0
  573. data/lib/puppet/plugins.rb +9 -0
  574. data/lib/puppet/pops/adaptable.rb +197 -0
  575. data/lib/puppet/pops/adapters.rb +156 -0
  576. data/lib/puppet/pops/evaluator/access_operator.rb +719 -0
  577. data/lib/puppet/pops/evaluator/callable_signature.rb +107 -0
  578. data/lib/puppet/pops/evaluator/closure.rb +375 -0
  579. data/lib/puppet/pops/evaluator/collector_transformer.rb +234 -0
  580. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +86 -0
  581. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +29 -0
  582. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +70 -0
  583. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +38 -0
  584. data/lib/puppet/pops/evaluator/compare_operator.rb +254 -0
  585. data/lib/puppet/pops/evaluator/deferred_resolver.rb +225 -0
  586. data/lib/puppet/pops/evaluator/epp_evaluator.rb +120 -0
  587. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1317 -0
  588. data/lib/puppet/pops/evaluator/external_syntax_support.rb +46 -0
  589. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +82 -0
  590. data/lib/puppet/pops/evaluator/literal_evaluator.rb +100 -0
  591. data/lib/puppet/pops/evaluator/puppet_proc.rb +69 -0
  592. data/lib/puppet/pops/evaluator/relationship_operator.rb +185 -0
  593. data/lib/puppet/pops/evaluator/runtime3_converter.rb +221 -0
  594. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  595. data/lib/puppet/pops/evaluator/runtime3_support.rb +535 -0
  596. data/lib/puppet/pops/functions/dispatch.rb +107 -0
  597. data/lib/puppet/pops/functions/dispatcher.rb +75 -0
  598. data/lib/puppet/pops/functions/function.rb +139 -0
  599. data/lib/puppet/pops/issue_reporter.rb +137 -0
  600. data/lib/puppet/pops/issues.rb +928 -0
  601. data/lib/puppet/pops/label_provider.rb +90 -0
  602. data/lib/puppet/pops/loader/base_loader.rb +178 -0
  603. data/lib/puppet/pops/loader/dependency_loader.rb +91 -0
  604. data/lib/puppet/pops/loader/gem_support.rb +51 -0
  605. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +28 -0
  606. data/lib/puppet/pops/loader/loader.rb +221 -0
  607. data/lib/puppet/pops/loader/loader_paths.rb +412 -0
  608. data/lib/puppet/pops/loader/module_loaders.rb +556 -0
  609. data/lib/puppet/pops/loader/predefined_loader.rb +28 -0
  610. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +84 -0
  611. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +93 -0
  612. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +79 -0
  613. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +39 -0
  614. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +45 -0
  615. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +120 -0
  616. data/lib/puppet/pops/loader/runtime3_type_loader.rb +103 -0
  617. data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
  618. data/lib/puppet/pops/loader/static_loader.rb +131 -0
  619. data/lib/puppet/pops/loader/task_instantiator.rb +44 -0
  620. data/lib/puppet/pops/loader/type_definition_instantiator.rb +100 -0
  621. data/lib/puppet/pops/loader/typed_name.rb +54 -0
  622. data/lib/puppet/pops/loader/uri_helper.rb +22 -0
  623. data/lib/puppet/pops/loaders.rb +546 -0
  624. data/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
  625. data/lib/puppet/pops/lookup/context.rb +199 -0
  626. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  627. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
  628. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
  629. data/lib/puppet/pops/lookup/data_provider.rb +92 -0
  630. data/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
  631. data/lib/puppet/pops/lookup/explainer.rb +595 -0
  632. data/lib/puppet/pops/lookup/function_provider.rb +110 -0
  633. data/lib/puppet/pops/lookup/global_data_provider.rb +75 -0
  634. data/lib/puppet/pops/lookup/hiera_config.rb +775 -0
  635. data/lib/puppet/pops/lookup/interpolation.rb +155 -0
  636. data/lib/puppet/pops/lookup/invocation.rb +268 -0
  637. data/lib/puppet/pops/lookup/key_recorder.rb +18 -0
  638. data/lib/puppet/pops/lookup/location_resolver.rb +99 -0
  639. data/lib/puppet/pops/lookup/lookup_adapter.rb +528 -0
  640. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  641. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
  642. data/lib/puppet/pops/lookup/module_data_provider.rb +89 -0
  643. data/lib/puppet/pops/lookup/sub_lookup.rb +92 -0
  644. data/lib/puppet/pops/lookup.rb +97 -0
  645. data/lib/puppet/pops/merge_strategy.rb +441 -0
  646. data/lib/puppet/pops/migration/migration_checker.rb +58 -0
  647. data/lib/puppet/pops/model/ast.pp +669 -0
  648. data/lib/puppet/pops/model/ast.rb +4675 -0
  649. data/lib/puppet/pops/model/ast_transformer.rb +131 -0
  650. data/lib/puppet/pops/model/factory.rb +1155 -0
  651. data/lib/puppet/pops/model/model_label_provider.rb +134 -0
  652. data/lib/puppet/pops/model/model_tree_dumper.rb +445 -0
  653. data/lib/puppet/pops/model/pn_transformer.rb +385 -0
  654. data/lib/puppet/pops/model/tree_dumper.rb +59 -0
  655. data/lib/puppet/pops/parser/code_merger.rb +29 -0
  656. data/lib/puppet/pops/parser/egrammar.ra +889 -0
  657. data/lib/puppet/pops/parser/eparser.rb +3184 -0
  658. data/lib/puppet/pops/parser/epp_parser.rb +51 -0
  659. data/lib/puppet/pops/parser/epp_support.rb +265 -0
  660. data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
  661. data/lib/puppet/pops/parser/heredoc_support.rb +153 -0
  662. data/lib/puppet/pops/parser/interpolation_support.rb +249 -0
  663. data/lib/puppet/pops/parser/lexer2.rb +777 -0
  664. data/lib/puppet/pops/parser/lexer_support.rb +221 -0
  665. data/lib/puppet/pops/parser/locatable.rb +23 -0
  666. data/lib/puppet/pops/parser/locator.rb +357 -0
  667. data/lib/puppet/pops/parser/parser_support.rb +251 -0
  668. data/lib/puppet/pops/parser/pn_parser.rb +317 -0
  669. data/lib/puppet/pops/parser/slurp_support.rb +118 -0
  670. data/lib/puppet/pops/patterns.rb +60 -0
  671. data/lib/puppet/pops/pcore.rb +135 -0
  672. data/lib/puppet/pops/pn.rb +236 -0
  673. data/lib/puppet/pops/puppet_stack.rb +61 -0
  674. data/lib/puppet/pops/resource/param.rb +55 -0
  675. data/lib/puppet/pops/resource/resource_type_impl.rb +294 -0
  676. data/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
  677. data/lib/puppet/pops/semantic_error.rb +29 -0
  678. data/lib/puppet/pops/serialization/abstract_reader.rb +180 -0
  679. data/lib/puppet/pops/serialization/abstract_writer.rb +222 -0
  680. data/lib/puppet/pops/serialization/deserializer.rb +80 -0
  681. data/lib/puppet/pops/serialization/extension.rb +158 -0
  682. data/lib/puppet/pops/serialization/from_data_converter.rb +224 -0
  683. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  684. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  685. data/lib/puppet/pops/serialization/json.rb +297 -0
  686. data/lib/puppet/pops/serialization/json_path.rb +127 -0
  687. data/lib/puppet/pops/serialization/object.rb +70 -0
  688. data/lib/puppet/pops/serialization/serializer.rb +140 -0
  689. data/lib/puppet/pops/serialization/time_factory.rb +67 -0
  690. data/lib/puppet/pops/serialization/to_data_converter.rb +313 -0
  691. data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
  692. data/lib/puppet/pops/serialization.rb +43 -0
  693. data/lib/puppet/pops/time/timespan.rb +716 -0
  694. data/lib/puppet/pops/time/timestamp.rb +160 -0
  695. data/lib/puppet/pops/types/annotatable.rb +36 -0
  696. data/lib/puppet/pops/types/annotation.rb +71 -0
  697. data/lib/puppet/pops/types/class_loader.rb +132 -0
  698. data/lib/puppet/pops/types/implementation_registry.rb +134 -0
  699. data/lib/puppet/pops/types/iterable.rb +365 -0
  700. data/lib/puppet/pops/types/p_binary_type.rb +232 -0
  701. data/lib/puppet/pops/types/p_init_type.rb +238 -0
  702. data/lib/puppet/pops/types/p_meta_type.rb +94 -0
  703. data/lib/puppet/pops/types/p_object_type.rb +1117 -0
  704. data/lib/puppet/pops/types/p_object_type_extension.rb +228 -0
  705. data/lib/puppet/pops/types/p_runtime_type.rb +115 -0
  706. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +190 -0
  707. data/lib/puppet/pops/types/p_sem_ver_type.rb +155 -0
  708. data/lib/puppet/pops/types/p_sensitive_type.rb +83 -0
  709. data/lib/puppet/pops/types/p_timespan_type.rb +192 -0
  710. data/lib/puppet/pops/types/p_timestamp_type.rb +73 -0
  711. data/lib/puppet/pops/types/p_type_set_type.rb +387 -0
  712. data/lib/puppet/pops/types/p_uri_type.rb +190 -0
  713. data/lib/puppet/pops/types/puppet_object.rb +40 -0
  714. data/lib/puppet/pops/types/recursion_guard.rb +136 -0
  715. data/lib/puppet/pops/types/ruby_generator.rb +472 -0
  716. data/lib/puppet/pops/types/ruby_method.rb +31 -0
  717. data/lib/puppet/pops/types/string_converter.rb +1134 -0
  718. data/lib/puppet/pops/types/tree_iterators.rb +254 -0
  719. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  720. data/lib/puppet/pops/types/type_asserter.rb +47 -0
  721. data/lib/puppet/pops/types/type_assertion_error.rb +27 -0
  722. data/lib/puppet/pops/types/type_calculator.rb +822 -0
  723. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  724. data/lib/puppet/pops/types/type_factory.rb +631 -0
  725. data/lib/puppet/pops/types/type_formatter.rb +801 -0
  726. data/lib/puppet/pops/types/type_mismatch_describer.rb +1096 -0
  727. data/lib/puppet/pops/types/type_parser.rb +683 -0
  728. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  729. data/lib/puppet/pops/types/type_with_members.rb +43 -0
  730. data/lib/puppet/pops/types/types.rb +3633 -0
  731. data/lib/puppet/pops/utils.rb +119 -0
  732. data/lib/puppet/pops/validation/checker4_0.rb +1148 -0
  733. data/lib/puppet/pops/validation/tasks_checker.rb +93 -0
  734. data/lib/puppet/pops/validation/validator_factory_4_0.rb +45 -0
  735. data/lib/puppet/pops/validation.rb +459 -0
  736. data/lib/puppet/pops/visitable.rb +6 -0
  737. data/lib/puppet/pops/visitor.rb +122 -0
  738. data/lib/puppet/pops.rb +121 -0
  739. data/lib/puppet/property/boolean.rb +7 -0
  740. data/lib/puppet/property/ensure.rb +106 -0
  741. data/lib/puppet/property/keyvalue.rb +158 -0
  742. data/lib/puppet/property/list.rb +70 -0
  743. data/lib/puppet/property/ordered_list.rb +29 -0
  744. data/lib/puppet/property.rb +611 -0
  745. data/lib/puppet/provider/aix_object.rb +485 -0
  746. data/lib/puppet/provider/command.rb +25 -0
  747. data/lib/puppet/provider/confine.rb +6 -0
  748. data/lib/puppet/provider/exec/posix.rb +60 -0
  749. data/lib/puppet/provider/exec/shell.rb +25 -0
  750. data/lib/puppet/provider/exec/windows.rb +55 -0
  751. data/lib/puppet/provider/exec.rb +105 -0
  752. data/lib/puppet/provider/file/posix.rb +144 -0
  753. data/lib/puppet/provider/file/windows.rb +152 -0
  754. data/lib/puppet/provider/group/aix.rb +99 -0
  755. data/lib/puppet/provider/group/directoryservice.rb +22 -0
  756. data/lib/puppet/provider/group/groupadd.rb +174 -0
  757. data/lib/puppet/provider/group/ldap.rb +48 -0
  758. data/lib/puppet/provider/group/pw.rb +51 -0
  759. data/lib/puppet/provider/group/windows_adsi.rb +113 -0
  760. data/lib/puppet/provider/ldap.rb +141 -0
  761. data/lib/puppet/provider/nameservice/directoryservice.rb +512 -0
  762. data/lib/puppet/provider/nameservice/objectadd.rb +22 -0
  763. data/lib/puppet/provider/nameservice/pw.rb +21 -0
  764. data/lib/puppet/provider/nameservice.rb +293 -0
  765. data/lib/puppet/provider/network_device.rb +74 -0
  766. data/lib/puppet/provider/package/aix.rb +169 -0
  767. data/lib/puppet/provider/package/appdmg.rb +111 -0
  768. data/lib/puppet/provider/package/apple.rb +47 -0
  769. data/lib/puppet/provider/package/apt.rb +262 -0
  770. data/lib/puppet/provider/package/aptitude.rb +35 -0
  771. data/lib/puppet/provider/package/aptrpm.rb +83 -0
  772. data/lib/puppet/provider/package/blastwave.rb +112 -0
  773. data/lib/puppet/provider/package/dnf.rb +50 -0
  774. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  775. data/lib/puppet/provider/package/dpkg.rb +192 -0
  776. data/lib/puppet/provider/package/fink.rb +97 -0
  777. data/lib/puppet/provider/package/freebsd.rb +47 -0
  778. data/lib/puppet/provider/package/gem.rb +293 -0
  779. data/lib/puppet/provider/package/hpux.rb +44 -0
  780. data/lib/puppet/provider/package/macports.rb +110 -0
  781. data/lib/puppet/provider/package/nim.rb +291 -0
  782. data/lib/puppet/provider/package/openbsd.rb +260 -0
  783. data/lib/puppet/provider/package/opkg.rb +82 -0
  784. data/lib/puppet/provider/package/pacman.rb +273 -0
  785. data/lib/puppet/provider/package/pip.rb +346 -0
  786. data/lib/puppet/provider/package/pip2.rb +17 -0
  787. data/lib/puppet/provider/package/pip3.rb +17 -0
  788. data/lib/puppet/provider/package/pkg.rb +295 -0
  789. data/lib/puppet/provider/package/pkgdmg.rb +153 -0
  790. data/lib/puppet/provider/package/pkgin.rb +87 -0
  791. data/lib/puppet/provider/package/pkgng.rb +173 -0
  792. data/lib/puppet/provider/package/pkgutil.rb +187 -0
  793. data/lib/puppet/provider/package/portage.rb +310 -0
  794. data/lib/puppet/provider/package/ports.rb +91 -0
  795. data/lib/puppet/provider/package/portupgrade.rb +240 -0
  796. data/lib/puppet/provider/package/puppet_gem.rb +34 -0
  797. data/lib/puppet/provider/package/puppetserver_gem.rb +171 -0
  798. data/lib/puppet/provider/package/rpm.rb +250 -0
  799. data/lib/puppet/provider/package/rug.rb +51 -0
  800. data/lib/puppet/provider/package/sun.rb +133 -0
  801. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  802. data/lib/puppet/provider/package/tdnf.rb +28 -0
  803. data/lib/puppet/provider/package/up2date.rb +40 -0
  804. data/lib/puppet/provider/package/urpmi.rb +55 -0
  805. data/lib/puppet/provider/package/windows/exe_package.rb +106 -0
  806. data/lib/puppet/provider/package/windows/msi_package.rb +70 -0
  807. data/lib/puppet/provider/package/windows/package.rb +110 -0
  808. data/lib/puppet/provider/package/windows.rb +130 -0
  809. data/lib/puppet/provider/package/yum.rb +387 -0
  810. data/lib/puppet/provider/package/zypper.rb +206 -0
  811. data/lib/puppet/provider/package.rb +59 -0
  812. data/lib/puppet/provider/package_targetable.rb +69 -0
  813. data/lib/puppet/provider/parsedfile.rb +490 -0
  814. data/lib/puppet/provider/service/base.rb +139 -0
  815. data/lib/puppet/provider/service/bsd.rb +51 -0
  816. data/lib/puppet/provider/service/daemontools.rb +193 -0
  817. data/lib/puppet/provider/service/debian.rb +75 -0
  818. data/lib/puppet/provider/service/freebsd.rb +143 -0
  819. data/lib/puppet/provider/service/gentoo.rb +45 -0
  820. data/lib/puppet/provider/service/init.rb +192 -0
  821. data/lib/puppet/provider/service/launchd.rb +384 -0
  822. data/lib/puppet/provider/service/openbsd.rb +100 -0
  823. data/lib/puppet/provider/service/openrc.rb +71 -0
  824. data/lib/puppet/provider/service/openwrt.rb +36 -0
  825. data/lib/puppet/provider/service/rcng.rb +51 -0
  826. data/lib/puppet/provider/service/redhat.rb +72 -0
  827. data/lib/puppet/provider/service/runit.rb +106 -0
  828. data/lib/puppet/provider/service/service.rb +68 -0
  829. data/lib/puppet/provider/service/smf.rb +317 -0
  830. data/lib/puppet/provider/service/src.rb +147 -0
  831. data/lib/puppet/provider/service/systemd.rb +232 -0
  832. data/lib/puppet/provider/service/upstart.rb +385 -0
  833. data/lib/puppet/provider/service/windows.rb +182 -0
  834. data/lib/puppet/provider/user/aix.rb +361 -0
  835. data/lib/puppet/provider/user/directoryservice.rb +680 -0
  836. data/lib/puppet/provider/user/hpux.rb +95 -0
  837. data/lib/puppet/provider/user/ldap.rb +132 -0
  838. data/lib/puppet/provider/user/openbsd.rb +77 -0
  839. data/lib/puppet/provider/user/pw.rb +108 -0
  840. data/lib/puppet/provider/user/user_role_add.rb +239 -0
  841. data/lib/puppet/provider/user/useradd.rb +406 -0
  842. data/lib/puppet/provider/user/windows_adsi.rb +172 -0
  843. data/lib/puppet/provider.rb +612 -0
  844. data/lib/puppet/reference/configuration.rb +97 -0
  845. data/lib/puppet/reference/function.rb +17 -0
  846. data/lib/puppet/reference/indirection.rb +71 -0
  847. data/lib/puppet/reference/metaparameter.rb +33 -0
  848. data/lib/puppet/reference/providers.rb +117 -0
  849. data/lib/puppet/reference/report.rb +20 -0
  850. data/lib/puppet/reference/type.rb +109 -0
  851. data/lib/puppet/relationship.rb +84 -0
  852. data/lib/puppet/reports/http.rb +44 -0
  853. data/lib/puppet/reports/log.rb +14 -0
  854. data/lib/puppet/reports/store.rb +68 -0
  855. data/lib/puppet/reports.rb +93 -0
  856. data/lib/puppet/resource/catalog.rb +654 -0
  857. data/lib/puppet/resource/status.rb +229 -0
  858. data/lib/puppet/resource/type.rb +425 -0
  859. data/lib/puppet/resource/type_collection.rb +231 -0
  860. data/lib/puppet/resource.rb +663 -0
  861. data/lib/puppet/runtime.rb +65 -0
  862. data/lib/puppet/scheduler/job.rb +53 -0
  863. data/lib/puppet/scheduler/scheduler.rb +44 -0
  864. data/lib/puppet/scheduler/splay_job.rb +32 -0
  865. data/lib/puppet/scheduler/timer.rb +13 -0
  866. data/lib/puppet/scheduler.rb +16 -0
  867. data/lib/puppet/settings/alias_setting.rb +37 -0
  868. data/lib/puppet/settings/array_setting.rb +17 -0
  869. data/lib/puppet/settings/autosign_setting.rb +22 -0
  870. data/lib/puppet/settings/base_setting.rb +223 -0
  871. data/lib/puppet/settings/boolean_setting.rb +32 -0
  872. data/lib/puppet/settings/certificate_revocation_setting.rb +21 -0
  873. data/lib/puppet/settings/config_file.rb +146 -0
  874. data/lib/puppet/settings/directory_setting.rb +18 -0
  875. data/lib/puppet/settings/duration_setting.rb +32 -0
  876. data/lib/puppet/settings/enum_setting.rb +16 -0
  877. data/lib/puppet/settings/environment_conf.rb +224 -0
  878. data/lib/puppet/settings/errors.rb +11 -0
  879. data/lib/puppet/settings/file_or_directory_setting.rb +40 -0
  880. data/lib/puppet/settings/file_setting.rb +241 -0
  881. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  882. data/lib/puppet/settings/ini_file.rb +226 -0
  883. data/lib/puppet/settings/integer_setting.rb +17 -0
  884. data/lib/puppet/settings/path_setting.rb +8 -0
  885. data/lib/puppet/settings/port_setting.rb +15 -0
  886. data/lib/puppet/settings/priority_setting.rb +43 -0
  887. data/lib/puppet/settings/server_list_setting.rb +29 -0
  888. data/lib/puppet/settings/string_setting.rb +9 -0
  889. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  890. data/lib/puppet/settings/terminus_setting.rb +14 -0
  891. data/lib/puppet/settings/ttl_setting.rb +51 -0
  892. data/lib/puppet/settings/value_translator.rb +14 -0
  893. data/lib/puppet/settings.rb +1642 -0
  894. data/lib/puppet/ssl/base.rb +149 -0
  895. data/lib/puppet/ssl/certificate.rb +96 -0
  896. data/lib/puppet/ssl/certificate_request.rb +324 -0
  897. data/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
  898. data/lib/puppet/ssl/certificate_signer.rb +39 -0
  899. data/lib/puppet/ssl/digest.rb +20 -0
  900. data/lib/puppet/ssl/error.rb +26 -0
  901. data/lib/puppet/ssl/oids.rb +197 -0
  902. data/lib/puppet/ssl/openssl_loader.rb +24 -0
  903. data/lib/puppet/ssl/ssl_context.rb +25 -0
  904. data/lib/puppet/ssl/ssl_provider.rb +350 -0
  905. data/lib/puppet/ssl/state_machine.rb +474 -0
  906. data/lib/puppet/ssl/verifier.rb +142 -0
  907. data/lib/puppet/ssl.rb +23 -0
  908. data/lib/puppet/syntax_checkers/base64.rb +40 -0
  909. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  910. data/lib/puppet/syntax_checkers/json.rb +35 -0
  911. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  912. data/lib/puppet/syntax_checkers.rb +3 -0
  913. data/lib/puppet/test/test_helper.rb +265 -0
  914. data/lib/puppet/thread_local.rb +4 -0
  915. data/lib/puppet/transaction/additional_resource_generator.rb +220 -0
  916. data/lib/puppet/transaction/event.rb +168 -0
  917. data/lib/puppet/transaction/event_manager.rb +179 -0
  918. data/lib/puppet/transaction/persistence.rb +119 -0
  919. data/lib/puppet/transaction/report.rb +504 -0
  920. data/lib/puppet/transaction/resource_harness.rb +323 -0
  921. data/lib/puppet/transaction.rb +491 -0
  922. data/lib/puppet/trusted_external.rb +41 -0
  923. data/lib/puppet/type/component.rb +89 -0
  924. data/lib/puppet/type/exec.rb +720 -0
  925. data/lib/puppet/type/file/checksum.rb +50 -0
  926. data/lib/puppet/type/file/checksum_value.rb +54 -0
  927. data/lib/puppet/type/file/content.rb +176 -0
  928. data/lib/puppet/type/file/ctime.rb +21 -0
  929. data/lib/puppet/type/file/data_sync.rb +98 -0
  930. data/lib/puppet/type/file/ensure.rb +195 -0
  931. data/lib/puppet/type/file/group.rb +48 -0
  932. data/lib/puppet/type/file/mode.rb +189 -0
  933. data/lib/puppet/type/file/mtime.rb +19 -0
  934. data/lib/puppet/type/file/owner.rb +51 -0
  935. data/lib/puppet/type/file/selcontext.rb +142 -0
  936. data/lib/puppet/type/file/source.rb +379 -0
  937. data/lib/puppet/type/file/target.rb +88 -0
  938. data/lib/puppet/type/file/type.rb +20 -0
  939. data/lib/puppet/type/file.rb +1133 -0
  940. data/lib/puppet/type/filebucket.rb +121 -0
  941. data/lib/puppet/type/group.rb +237 -0
  942. data/lib/puppet/type/notify.rb +47 -0
  943. data/lib/puppet/type/package.rb +713 -0
  944. data/lib/puppet/type/resources.rb +187 -0
  945. data/lib/puppet/type/schedule.rb +441 -0
  946. data/lib/puppet/type/service.rb +309 -0
  947. data/lib/puppet/type/stage.rb +27 -0
  948. data/lib/puppet/type/tidy.rb +376 -0
  949. data/lib/puppet/type/user.rb +859 -0
  950. data/lib/puppet/type/whit.rb +34 -0
  951. data/lib/puppet/type.rb +2676 -0
  952. data/lib/puppet/util/at_fork/noop.rb +18 -0
  953. data/lib/puppet/util/at_fork/solaris.rb +160 -0
  954. data/lib/puppet/util/at_fork.rb +35 -0
  955. data/lib/puppet/util/autoload.rb +215 -0
  956. data/lib/puppet/util/backups.rb +86 -0
  957. data/lib/puppet/util/character_encoding.rb +80 -0
  958. data/lib/puppet/util/checksums.rb +376 -0
  959. data/lib/puppet/util/classgen.rb +228 -0
  960. data/lib/puppet/util/colors.rb +100 -0
  961. data/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
  962. data/lib/puppet/util/command_line/trollop.rb +825 -0
  963. data/lib/puppet/util/command_line.rb +196 -0
  964. data/lib/puppet/util/constant_inflector.rb +24 -0
  965. data/lib/puppet/util/diff.rb +81 -0
  966. data/lib/puppet/util/docs.rb +128 -0
  967. data/lib/puppet/util/errors.rb +159 -0
  968. data/lib/puppet/util/execution.rb +424 -0
  969. data/lib/puppet/util/execution_stub.rb +26 -0
  970. data/lib/puppet/util/feature.rb +129 -0
  971. data/lib/puppet/util/file_watcher.rb +28 -0
  972. data/lib/puppet/util/fileparsing.rb +408 -0
  973. data/lib/puppet/util/filetype.rb +358 -0
  974. data/lib/puppet/util/http_proxy.rb +4 -0
  975. data/lib/puppet/util/inifile.rb +340 -0
  976. data/lib/puppet/util/instance_loader.rb +66 -0
  977. data/lib/puppet/util/json.rb +92 -0
  978. data/lib/puppet/util/json_lockfile.rb +44 -0
  979. data/lib/puppet/util/ldap/connection.rb +73 -0
  980. data/lib/puppet/util/ldap/generator.rb +42 -0
  981. data/lib/puppet/util/ldap/manager.rb +284 -0
  982. data/lib/puppet/util/ldap.rb +2 -0
  983. data/lib/puppet/util/libuser.conf +15 -0
  984. data/lib/puppet/util/libuser.rb +12 -0
  985. data/lib/puppet/util/limits.rb +12 -0
  986. data/lib/puppet/util/lockfile.rb +66 -0
  987. data/lib/puppet/util/log/destination.rb +49 -0
  988. data/lib/puppet/util/log/destinations.rb +253 -0
  989. data/lib/puppet/util/log.rb +427 -0
  990. data/lib/puppet/util/logging.rb +300 -0
  991. data/lib/puppet/util/metaid.rb +21 -0
  992. data/lib/puppet/util/metric.rb +65 -0
  993. data/lib/puppet/util/monkey_patches.rb +122 -0
  994. data/lib/puppet/util/multi_match.rb +51 -0
  995. data/lib/puppet/util/network_device/base.rb +23 -0
  996. data/lib/puppet/util/network_device/config.rb +105 -0
  997. data/lib/puppet/util/network_device/transport/base.rb +26 -0
  998. data/lib/puppet/util/network_device/transport.rb +5 -0
  999. data/lib/puppet/util/network_device.rb +17 -0
  1000. data/lib/puppet/util/package/version/debian.rb +175 -0
  1001. data/lib/puppet/util/package/version/gem.rb +15 -0
  1002. data/lib/puppet/util/package/version/pip.rb +167 -0
  1003. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  1004. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  1005. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  1006. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  1007. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  1008. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  1009. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  1010. data/lib/puppet/util/package/version/range.rb +53 -0
  1011. data/lib/puppet/util/package/version/rpm.rb +73 -0
  1012. data/lib/puppet/util/package.rb +40 -0
  1013. data/lib/puppet/util/pidlock.rb +102 -0
  1014. data/lib/puppet/util/platform.rb +70 -0
  1015. data/lib/puppet/util/plist.rb +161 -0
  1016. data/lib/puppet/util/posix.rb +203 -0
  1017. data/lib/puppet/util/profiler/aggregate.rb +85 -0
  1018. data/lib/puppet/util/profiler/around_profiler.rb +67 -0
  1019. data/lib/puppet/util/profiler/logging.rb +48 -0
  1020. data/lib/puppet/util/profiler/object_counts.rb +17 -0
  1021. data/lib/puppet/util/profiler/wall_clock.rb +35 -0
  1022. data/lib/puppet/util/profiler.rb +53 -0
  1023. data/lib/puppet/util/provider_features.rb +179 -0
  1024. data/lib/puppet/util/psych_support.rb +30 -0
  1025. data/lib/puppet/util/rdoc/code_objects.rb +295 -0
  1026. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +912 -0
  1027. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
  1028. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +259 -0
  1029. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  1030. data/lib/puppet/util/rdoc/parser.rb +12 -0
  1031. data/lib/puppet/util/rdoc.rb +53 -0
  1032. data/lib/puppet/util/reference.rb +119 -0
  1033. data/lib/puppet/util/resource_template.rb +61 -0
  1034. data/lib/puppet/util/retry_action.rb +46 -0
  1035. data/lib/puppet/util/rpm_compare.rb +193 -0
  1036. data/lib/puppet/util/rubygems.rb +67 -0
  1037. data/lib/puppet/util/run_mode.rb +122 -0
  1038. data/lib/puppet/util/selinux.rb +297 -0
  1039. data/lib/puppet/util/skip_tags.rb +13 -0
  1040. data/lib/puppet/util/splayer.rb +18 -0
  1041. data/lib/puppet/util/storage.rb +100 -0
  1042. data/lib/puppet/util/suidmanager.rb +166 -0
  1043. data/lib/puppet/util/symbolic_file_mode.rb +156 -0
  1044. data/lib/puppet/util/tag_set.rb +27 -0
  1045. data/lib/puppet/util/tagging.rb +132 -0
  1046. data/lib/puppet/util/terminal.rb +16 -0
  1047. data/lib/puppet/util/user_attr.rb +21 -0
  1048. data/lib/puppet/util/warnings.rb +31 -0
  1049. data/lib/puppet/util/watched_file.rb +37 -0
  1050. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  1051. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  1052. data/lib/puppet/util/watcher/timer.rb +19 -0
  1053. data/lib/puppet/util/watcher.rb +17 -0
  1054. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  1055. data/lib/puppet/util/windows/access_control_list.rb +113 -0
  1056. data/lib/puppet/util/windows/adsi.rb +654 -0
  1057. data/lib/puppet/util/windows/com.rb +225 -0
  1058. data/lib/puppet/util/windows/daemon.rb +343 -0
  1059. data/lib/puppet/util/windows/error.rb +84 -0
  1060. data/lib/puppet/util/windows/eventlog.rb +187 -0
  1061. data/lib/puppet/util/windows/file.rb +355 -0
  1062. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  1063. data/lib/puppet/util/windows/principal.rb +201 -0
  1064. data/lib/puppet/util/windows/process.rb +364 -0
  1065. data/lib/puppet/util/windows/registry.rb +441 -0
  1066. data/lib/puppet/util/windows/root_certs.rb +108 -0
  1067. data/lib/puppet/util/windows/security.rb +907 -0
  1068. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  1069. data/lib/puppet/util/windows/service.rb +696 -0
  1070. data/lib/puppet/util/windows/sid.rb +289 -0
  1071. data/lib/puppet/util/windows/string.rb +15 -0
  1072. data/lib/puppet/util/windows/user.rb +550 -0
  1073. data/lib/puppet/util/windows.rb +51 -0
  1074. data/lib/puppet/util/yaml.rb +65 -0
  1075. data/lib/puppet/util.rb +808 -0
  1076. data/lib/puppet/vendor/require_vendored.rb +4 -0
  1077. data/lib/puppet/vendor.rb +57 -0
  1078. data/lib/puppet/version.rb +95 -0
  1079. data/lib/puppet/x509/cert_provider.rb +369 -0
  1080. data/lib/puppet/x509/pem_store.rb +55 -0
  1081. data/lib/puppet/x509.rb +11 -0
  1082. data/lib/puppet.rb +345 -0
  1083. data/lib/puppet_pal.rb +8 -0
  1084. data/lib/puppet_x.rb +14 -0
  1085. data/locales/config.yaml +29 -0
  1086. data/locales/en/puppet.po +19 -0
  1087. data/locales/puppet.pot +20 -0
  1088. data/man/man5/puppet.conf.5 +2198 -0
  1089. data/man/man8/puppet-agent.8 +203 -0
  1090. data/man/man8/puppet-apply.8 +100 -0
  1091. data/man/man8/puppet-catalog.8 +291 -0
  1092. data/man/man8/puppet-config.8 +151 -0
  1093. data/man/man8/puppet-describe.8 +51 -0
  1094. data/man/man8/puppet-device.8 +119 -0
  1095. data/man/man8/puppet-doc.8 +46 -0
  1096. data/man/man8/puppet-epp.8 +377 -0
  1097. data/man/man8/puppet-facts.8 +234 -0
  1098. data/man/man8/puppet-filebucket.8 +166 -0
  1099. data/man/man8/puppet-generate.8 +84 -0
  1100. data/man/man8/puppet-help.8 +67 -0
  1101. data/man/man8/puppet-lookup.8 +107 -0
  1102. data/man/man8/puppet-module.8 +325 -0
  1103. data/man/man8/puppet-node.8 +163 -0
  1104. data/man/man8/puppet-parser.8 +130 -0
  1105. data/man/man8/puppet-plugin.8 +73 -0
  1106. data/man/man8/puppet-report.8 +127 -0
  1107. data/man/man8/puppet-resource.8 +88 -0
  1108. data/man/man8/puppet-script.8 +70 -0
  1109. data/man/man8/puppet-ssl.8 +63 -0
  1110. data/man/man8/puppet.8 +28 -0
  1111. data/tasks/benchmark.rake +180 -0
  1112. data/tasks/ci.rake +24 -0
  1113. data/tasks/generate_ast_model.rake +90 -0
  1114. data/tasks/generate_cert_fixtures.rake +194 -0
  1115. data/tasks/manpages.rake +67 -0
  1116. data/tasks/memwalk.rake +195 -0
  1117. data/tasks/parallel.rake +410 -0
  1118. data/tasks/parser.rake +22 -0
  1119. data/tasks/yard.rake +59 -0
  1120. metadata +1324 -0
@@ -0,0 +1,1155 @@
1
+ # frozen_string_literal: true
2
+ # Factory is a helper class that makes construction of a Pops Model
3
+ # much more convenient. It can be viewed as a small internal DSL for model
4
+ # constructions.
5
+ # For usage see tests using the factory.
6
+ #
7
+ # @todo All those uppercase methods ... they look bad in one way, but stand out nicely in the grammar...
8
+ # decide if they should change into lower case names (some of the are lower case)...
9
+ #
10
+ module Puppet::Pops
11
+ module Model
12
+ class Factory
13
+ # Shared build_visitor, since there are many instances of Factory being used
14
+
15
+ KEY_LENGTH = 'length'
16
+ KEY_OFFSET = 'offset'
17
+ KEY_LOCATOR = 'locator'
18
+ KEY_OPERATOR = 'operator'
19
+
20
+ KEY_VALUE = 'value'
21
+ KEY_KEYS = 'keys'
22
+ KEY_NAME = 'name'
23
+ KEY_BODY = 'body'
24
+ KEY_EXPR = 'expr'
25
+ KEY_LEFT_EXPR = 'left_expr'
26
+ KEY_RIGHT_EXPR = 'right_expr'
27
+ KEY_PARAMETERS = 'parameters'
28
+
29
+ BUILD_VISITOR = Visitor.new(self, 'build')
30
+ INFER_VISITOR = Visitor.new(self, 'infer')
31
+ INTERPOLATION_VISITOR = Visitor.new(self, 'interpolate')
32
+ MAPOFFSET_VISITOR = Visitor.new(self, 'map_offset')
33
+
34
+ def self.infer(o)
35
+ if o.instance_of?(Factory)
36
+ o
37
+ else
38
+ new(o)
39
+ end
40
+ end
41
+
42
+ attr_reader :model_class, :unfolded
43
+
44
+ def [](key)
45
+ @init_hash[key]
46
+ end
47
+
48
+ def []=(key, value)
49
+ @init_hash[key] = value
50
+ end
51
+
52
+ def all_factories(&block)
53
+ block.call(self)
54
+ @init_hash.each_value { |value| value.all_factories(&block) if value.instance_of?(Factory) }
55
+ end
56
+
57
+ def model
58
+ if @current.nil?
59
+ # Assign a default Locator if it's missing. Should only happen when the factory is used by other
60
+ # means than from a parser (e.g. unit tests)
61
+ unless @init_hash.include?(KEY_LOCATOR)
62
+ @init_hash[KEY_LOCATOR] = Parser::Locator.locator('<no source>', 'no file')
63
+ unless @model_class <= Program
64
+ @init_hash[KEY_OFFSET] = 0
65
+ @init_hash[KEY_LENGTH] = 0
66
+ end
67
+ end
68
+ @current = create_model
69
+ end
70
+ @current
71
+ end
72
+
73
+ # Backward API compatibility
74
+ alias current model
75
+
76
+ def create_model
77
+ @init_hash.each_pair { |key, elem| @init_hash[key] = factory_to_model(elem) }
78
+ model_class.from_asserted_hash(@init_hash)
79
+ end
80
+
81
+ # Initialize a factory with a single object, or a class with arguments applied to build of
82
+ # created instance
83
+ #
84
+ def initialize(o, *args)
85
+ @init_hash = {}
86
+ if o.instance_of?(Class)
87
+ @model_class = o
88
+ BUILD_VISITOR.visit_this_class(self, o, args)
89
+ else
90
+ INFER_VISITOR.visit_this(self, o, EMPTY_ARRAY)
91
+ end
92
+ end
93
+
94
+ def map_offset(model, locator)
95
+ MAPOFFSET_VISITOR.visit_this_1(self, model, locator)
96
+ end
97
+
98
+ def map_offset_Object(o, locator)
99
+ o
100
+ end
101
+
102
+ def map_offset_Factory(o, locator)
103
+ map_offset(o.model, locator)
104
+ end
105
+
106
+ def map_offset_Positioned(o, locator)
107
+ # Transpose the local offset, length to global "coordinates"
108
+ global_offset, global_length = locator.to_global(o.offset, o.length)
109
+
110
+ # mutate
111
+ o.instance_variable_set(:'@offset', global_offset)
112
+ o.instance_variable_set(:'@length', global_length)
113
+ # Change locator since the positions were transposed to the global coordinates
114
+ o.instance_variable_set(:'@locator', locator.locator) if locator.is_a? Puppet::Pops::Parser::Locator::SubLocator
115
+ end
116
+
117
+ # Polymorphic interpolate
118
+ def interpolate()
119
+ INTERPOLATION_VISITOR.visit_this_class(self, @model_class, EMPTY_ARRAY)
120
+ end
121
+
122
+ # Building of Model classes
123
+
124
+ def build_ArithmeticExpression(o, op, a, b)
125
+ @init_hash[KEY_OPERATOR] = op
126
+ build_BinaryExpression(o, a, b)
127
+ end
128
+
129
+ def build_AssignmentExpression(o, op, a, b)
130
+ @init_hash[KEY_OPERATOR] = op
131
+ build_BinaryExpression(o, a, b)
132
+ end
133
+
134
+ def build_AttributeOperation(o, name, op, value)
135
+ @init_hash[KEY_OPERATOR] = op
136
+ @init_hash['attribute_name'] = name.to_s # BOOLEAN is allowed in the grammar
137
+ @init_hash['value_expr'] = value
138
+ end
139
+
140
+ def build_AttributesOperation(o, value)
141
+ @init_hash[KEY_EXPR] = value
142
+ end
143
+
144
+ def build_AccessExpression(o, left, keys)
145
+ @init_hash[KEY_LEFT_EXPR] = left
146
+ @init_hash[KEY_KEYS] = keys
147
+ end
148
+
149
+ def build_BinaryExpression(o, left, right)
150
+ @init_hash[KEY_LEFT_EXPR] = left
151
+ @init_hash[KEY_RIGHT_EXPR] = right
152
+ end
153
+
154
+ def build_BlockExpression(o, args)
155
+ @init_hash['statements'] = args
156
+ end
157
+
158
+ def build_EppExpression(o, parameters_specified, body)
159
+ @init_hash['parameters_specified'] = parameters_specified
160
+ b = f_build_body(body)
161
+ @init_hash[KEY_BODY] = b unless b.nil?
162
+ end
163
+
164
+ # @param rval_required [Boolean] if the call must produce a value
165
+ def build_CallExpression(o, functor, rval_required, args)
166
+ @init_hash['functor_expr'] = functor
167
+ @init_hash['rval_required'] = rval_required
168
+ @init_hash['arguments'] = args
169
+ end
170
+
171
+ def build_CallMethodExpression(o, functor, rval_required, lambda, args)
172
+ build_CallExpression(o, functor, rval_required, args)
173
+ @init_hash['lambda'] = lambda
174
+ end
175
+
176
+ def build_CaseExpression(o, test, args)
177
+ @init_hash['test'] = test
178
+ @init_hash['options'] = args
179
+ end
180
+
181
+ def build_CaseOption(o, value_list, then_expr)
182
+ value_list = [value_list] unless value_list.is_a?(Array)
183
+ @init_hash['values'] = value_list
184
+ b = f_build_body(then_expr)
185
+ @init_hash['then_expr'] = b unless b.nil?
186
+ end
187
+
188
+ def build_CollectExpression(o, type_expr, query_expr, attribute_operations)
189
+ @init_hash['type_expr'] = type_expr
190
+ @init_hash['query'] = query_expr
191
+ @init_hash['operations'] = attribute_operations
192
+ end
193
+
194
+ def build_ComparisonExpression(o, op, a, b)
195
+ @init_hash[KEY_OPERATOR] = op
196
+ build_BinaryExpression(o, a, b)
197
+ end
198
+
199
+ def build_ConcatenatedString(o, args)
200
+ # Strip empty segments
201
+ @init_hash['segments'] = args.reject { |arg| arg.model_class == LiteralString && arg['value'].empty? }
202
+ end
203
+
204
+ def build_HeredocExpression(o, name, expr)
205
+ @init_hash['syntax'] = name
206
+ @init_hash['text_expr'] = expr
207
+ end
208
+
209
+ # @param name [String] a valid classname
210
+ # @param parameters [Array<Parameter>] may be empty
211
+ # @param parent_class_name [String, nil] a valid classname referencing a parent class, optional.
212
+ # @param body [Array<Expression>, Expression, nil] expression that constitute the body
213
+ # @return [HostClassDefinition] configured from the parameters
214
+ #
215
+ def build_HostClassDefinition(o, name, parameters, parent_class_name, body)
216
+ build_NamedDefinition(o, name, parameters, body)
217
+ @init_hash['parent_class'] = parent_class_name unless parent_class_name.nil?
218
+ end
219
+
220
+ def build_ResourceOverrideExpression(o, resources, attribute_operations)
221
+ @init_hash['resources'] = resources
222
+ @init_hash['operations'] = attribute_operations
223
+ end
224
+
225
+ def build_ReservedWord(o, name, future)
226
+ @init_hash['word'] = name
227
+ @init_hash['future'] = future
228
+ end
229
+
230
+ def build_KeyedEntry(o, k, v)
231
+ @init_hash['key'] = k
232
+ @init_hash[KEY_VALUE] = v
233
+ end
234
+
235
+ def build_LiteralHash(o, keyed_entries, unfolded)
236
+ @init_hash['entries'] = keyed_entries
237
+ @unfolded = unfolded
238
+ end
239
+
240
+ def build_LiteralList(o, values)
241
+ @init_hash['values'] = values
242
+ end
243
+
244
+ def build_LiteralFloat(o, val)
245
+ @init_hash[KEY_VALUE] = val
246
+ end
247
+
248
+ def build_LiteralInteger(o, val, radix)
249
+ @init_hash[KEY_VALUE] = val
250
+ @init_hash['radix'] = radix
251
+ end
252
+
253
+ def build_LiteralString(o, value)
254
+ @init_hash[KEY_VALUE] = val
255
+ end
256
+
257
+ def build_IfExpression(o, t, ift, els)
258
+ @init_hash['test'] = t
259
+ @init_hash['then_expr'] = ift
260
+ @init_hash['else_expr'] = els
261
+ end
262
+
263
+ def build_ApplyExpression(o, args, body)
264
+ @init_hash['arguments'] = args
265
+ @init_hash['body'] = body
266
+ end
267
+
268
+ def build_MatchExpression(o, op, a, b)
269
+ @init_hash[KEY_OPERATOR] = op
270
+ build_BinaryExpression(o, a, b)
271
+ end
272
+
273
+ # Building model equivalences of Ruby objects
274
+ # Allows passing regular ruby objects to the factory to produce instructions
275
+ # that when evaluated produce the same thing.
276
+
277
+ def infer_String(o)
278
+ @model_class = LiteralString
279
+ @init_hash[KEY_VALUE] = o
280
+ end
281
+
282
+ def infer_NilClass(o)
283
+ @model_class = Nop
284
+ end
285
+
286
+ def infer_TrueClass(o)
287
+ @model_class = LiteralBoolean
288
+ @init_hash[KEY_VALUE] = o
289
+ end
290
+
291
+ def infer_FalseClass(o)
292
+ @model_class = LiteralBoolean
293
+ @init_hash[KEY_VALUE] = o
294
+ end
295
+
296
+ def infer_Integer(o)
297
+ @model_class = LiteralInteger
298
+ @init_hash[KEY_VALUE] = o
299
+ end
300
+
301
+ def infer_Float(o)
302
+ @model_class = LiteralFloat
303
+ @init_hash[KEY_VALUE] = o
304
+ end
305
+
306
+ def infer_Regexp(o)
307
+ @model_class = LiteralRegularExpression
308
+ @init_hash['pattern'] = o.inspect
309
+ @init_hash[KEY_VALUE] = o
310
+ end
311
+
312
+ # Creates a String literal, unless the symbol is one of the special :undef, or :default
313
+ # which instead creates a LiterlUndef, or a LiteralDefault.
314
+ # Supports :undef because nil creates a no-op instruction.
315
+ def infer_Symbol(o)
316
+ case o
317
+ when :undef
318
+ @model_class = LiteralUndef
319
+ when :default
320
+ @model_class = LiteralDefault
321
+ else
322
+ infer_String(o.to_s)
323
+ end
324
+ end
325
+
326
+ # Creates a LiteralList instruction from an Array, where the entries are built.
327
+ def infer_Array(o)
328
+ @model_class = LiteralList
329
+ @init_hash['values'] = o.map { |e| Factory.infer(e) }
330
+ end
331
+
332
+ # Create a LiteralHash instruction from a hash, where keys and values are built
333
+ # The hash entries are added in sorted order based on key.to_s
334
+ #
335
+ def infer_Hash(o)
336
+ @model_class = LiteralHash
337
+ @init_hash['entries'] = o.sort_by { |k,_| k.to_s }.map { |k, v| Factory.new(KeyedEntry, Factory.infer(k), Factory.infer(v)) }
338
+ @unfolded = false
339
+ end
340
+
341
+ def f_build_body(body)
342
+ case body
343
+ when NilClass
344
+ nil
345
+ when Array
346
+ Factory.new(BlockExpression, body)
347
+ when Factory
348
+ body
349
+ else
350
+ Factory.infer(body)
351
+ end
352
+ end
353
+
354
+ def build_LambdaExpression(o, parameters, body, return_type)
355
+ @init_hash[KEY_PARAMETERS] = parameters
356
+ b = f_build_body(body)
357
+ @init_hash[KEY_BODY] = b unless b.nil?
358
+ @init_hash['return_type'] = return_type unless return_type.nil?
359
+ end
360
+
361
+ def build_NamedDefinition(o, name, parameters, body)
362
+ @init_hash[KEY_PARAMETERS] = parameters
363
+ b = f_build_body(body)
364
+ @init_hash[KEY_BODY] = b unless b.nil?
365
+ @init_hash[KEY_NAME] = name
366
+ end
367
+
368
+ def build_FunctionDefinition(o, name, parameters, body, return_type)
369
+ @init_hash[KEY_PARAMETERS] = parameters
370
+ b = f_build_body(body)
371
+ @init_hash[KEY_BODY] = b unless b.nil?
372
+ @init_hash[KEY_NAME] = name
373
+ @init_hash['return_type'] = return_type unless return_type.nil?
374
+ end
375
+
376
+ def build_PlanDefinition(o, name, parameters, body, return_type=nil)
377
+ @init_hash[KEY_PARAMETERS] = parameters
378
+ b = f_build_body(body)
379
+ @init_hash[KEY_BODY] = b unless b.nil?
380
+ @init_hash[KEY_NAME] = name
381
+ @init_hash['return_type'] = return_type unless return_type.nil?
382
+ end
383
+
384
+ def build_NodeDefinition(o, hosts, parent, body)
385
+ @init_hash['host_matches'] = hosts
386
+ @init_hash['parent'] = parent unless parent.nil? # no nop here
387
+ b = f_build_body(body)
388
+ @init_hash[KEY_BODY] = b unless b.nil?
389
+ end
390
+
391
+ def build_Parameter(o, name, expr)
392
+ @init_hash[KEY_NAME] = name
393
+ @init_hash[KEY_VALUE] = expr
394
+ end
395
+
396
+ def build_QualifiedReference(o, name)
397
+ @init_hash['cased_value'] = name.to_s
398
+ end
399
+
400
+ def build_RelationshipExpression(o, op, a, b)
401
+ @init_hash[KEY_OPERATOR] = op
402
+ build_BinaryExpression(o, a, b)
403
+ end
404
+
405
+ def build_ResourceExpression(o, type_name, bodies)
406
+ @init_hash['type_name'] = type_name
407
+ @init_hash['bodies'] = bodies
408
+ end
409
+
410
+ def build_RenderStringExpression(o, string)
411
+ @init_hash[KEY_VALUE] = string;
412
+ end
413
+
414
+ def build_ResourceBody(o, title_expression, attribute_operations)
415
+ @init_hash['title'] = title_expression
416
+ @init_hash['operations'] = attribute_operations
417
+ end
418
+
419
+ def build_ResourceDefaultsExpression(o, type_ref, attribute_operations)
420
+ @init_hash['type_ref'] = type_ref
421
+ @init_hash['operations'] = attribute_operations
422
+ end
423
+
424
+ def build_SelectorExpression(o, left, *selectors)
425
+ @init_hash[KEY_LEFT_EXPR] = left
426
+ @init_hash['selectors'] = selectors
427
+ end
428
+
429
+ def build_SelectorEntry(o, matching, value)
430
+ @init_hash['matching_expr'] = matching
431
+ @init_hash['value_expr'] = value
432
+ end
433
+
434
+ def build_QueryExpression(o, expr)
435
+ @init_hash[KEY_EXPR] = expr unless Factory.nop?(expr)
436
+ end
437
+
438
+ def build_TypeAlias(o, name, type_expr)
439
+ if type_expr.model_class <= KeyedEntry
440
+ # KeyedEntry is used for the form:
441
+ #
442
+ # type Foo = Bar { ... }
443
+ #
444
+ # The entry contains Bar => { ... } and must be transformed into:
445
+ #
446
+ # Object[{parent => Bar, ... }]
447
+ #
448
+ parent = type_expr['key']
449
+ hash = type_expr['value']
450
+ pn = parent['cased_value']
451
+ unless pn == 'Object' || pn == 'TypeSet'
452
+ hash['entries'] << Factory.KEY_ENTRY(Factory.QNAME('parent'), parent)
453
+ parent = Factory.QREF('Object')
454
+ end
455
+ type_expr = parent.access([hash])
456
+ elsif type_expr.model_class <= LiteralHash
457
+ # LiteralHash is used for the form:
458
+ #
459
+ # type Foo = { ... }
460
+ #
461
+ # The hash must be transformed into:
462
+ #
463
+ # Object[{ ... }]
464
+ #
465
+ type_expr = Factory.QREF('Object').access([type_expr])
466
+ end
467
+ @init_hash['type_expr'] = type_expr
468
+ @init_hash[KEY_NAME] = name
469
+ end
470
+
471
+ def build_TypeMapping(o, lhs, rhs)
472
+ @init_hash['type_expr'] = lhs
473
+ @init_hash['mapping_expr'] = rhs
474
+ end
475
+
476
+ def build_TypeDefinition(o, name, parent, body)
477
+ b = f_build_body(body)
478
+ @init_hash[KEY_BODY] = b unless b.nil?
479
+ @init_hash['parent'] = parent
480
+ @init_hash[KEY_NAME] = name
481
+ end
482
+
483
+ def build_UnaryExpression(o, expr)
484
+ @init_hash[KEY_EXPR] = expr unless Factory.nop?(expr)
485
+ end
486
+
487
+ def build_Program(o, body, definitions, locator)
488
+ @init_hash[KEY_BODY] = body
489
+ # non containment
490
+ @init_hash['definitions'] = definitions
491
+ @init_hash[KEY_LOCATOR] = locator
492
+ end
493
+
494
+ def build_QualifiedName(o, name)
495
+ @init_hash[KEY_VALUE] = name
496
+ end
497
+
498
+ def build_TokenValue(o)
499
+ raise "Factory can not deal with a Lexer Token. Got token: #{o}. Probably caused by wrong index in grammar val[n]."
500
+ end
501
+
502
+ # Factory helpers
503
+ def f_build_unary(klazz, expr)
504
+ Factory.new(klazz, expr)
505
+ end
506
+
507
+ def f_build_binary_op(klazz, op, left, right)
508
+ Factory.new(klazz, op, left, right)
509
+ end
510
+
511
+ def f_build_binary(klazz, left, right)
512
+ Factory.new(klazz, left, right)
513
+ end
514
+
515
+ def f_arithmetic(op, r)
516
+ f_build_binary_op(ArithmeticExpression, op, self, r)
517
+ end
518
+
519
+ def f_comparison(op, r)
520
+ f_build_binary_op(ComparisonExpression, op, self, r)
521
+ end
522
+
523
+ def f_match(op, r)
524
+ f_build_binary_op(MatchExpression, op, self, r)
525
+ end
526
+
527
+ # Operator helpers
528
+ def in(r) f_build_binary(InExpression, self, r); end
529
+
530
+ def or(r) f_build_binary(OrExpression, self, r); end
531
+
532
+ def and(r) f_build_binary(AndExpression, self, r); end
533
+
534
+ def not(); f_build_unary(NotExpression, self); end
535
+
536
+ def minus(); f_build_unary(UnaryMinusExpression, self); end
537
+
538
+ def unfold(); f_build_unary(UnfoldExpression, self); end
539
+
540
+ def text(); f_build_unary(TextExpression, self); end
541
+
542
+ def var(); f_build_unary(VariableExpression, self); end
543
+
544
+ def access(r); f_build_binary(AccessExpression, self, r); end
545
+
546
+ def dot r; f_build_binary(NamedAccessExpression, self, r); end
547
+
548
+ def + r; f_arithmetic('+', r); end
549
+
550
+ def - r; f_arithmetic('-', r); end
551
+
552
+ def / r; f_arithmetic('/', r); end
553
+
554
+ def * r; f_arithmetic('*', r); end
555
+
556
+ def % r; f_arithmetic('%', r); end
557
+
558
+ def << r; f_arithmetic('<<', r); end
559
+
560
+ def >> r; f_arithmetic('>>', r); end
561
+
562
+ def < r; f_comparison('<', r); end
563
+
564
+ def <= r; f_comparison('<=', r); end
565
+
566
+ def > r; f_comparison('>', r); end
567
+
568
+ def >= r; f_comparison('>=', r); end
569
+
570
+ def eq r; f_comparison('==', r); end
571
+
572
+ def ne r; f_comparison('!=', r); end
573
+
574
+ def =~ r; f_match('=~', r); end
575
+
576
+ def mne r; f_match('!~', r); end
577
+
578
+ def paren; f_build_unary(ParenthesizedExpression, self); end
579
+
580
+ def relop(op, r)
581
+ f_build_binary_op(RelationshipExpression, op, self, r)
582
+ end
583
+
584
+ def select(*args)
585
+ Factory.new(SelectorExpression, self, *args)
586
+ end
587
+
588
+ # Same as access, but with varargs and arguments that must be inferred. For testing purposes
589
+ def access_at(*r)
590
+ f_build_binary(AccessExpression, self, r.map { |arg| Factory.infer(arg) })
591
+ end
592
+
593
+ # For CaseExpression, setting the default for an already build CaseExpression
594
+ def default(r)
595
+ @init_hash['options'] << Factory.WHEN(Factory.infer(:default), r)
596
+ self
597
+ end
598
+
599
+ def lambda=(lambda)
600
+ @init_hash['lambda'] = lambda
601
+ self
602
+ end
603
+
604
+ # Assignment =
605
+ def set(r)
606
+ f_build_binary_op(AssignmentExpression, '=', self, r)
607
+ end
608
+
609
+ # Assignment +=
610
+ def plus_set(r)
611
+ f_build_binary_op(AssignmentExpression, '+=', self, r)
612
+ end
613
+
614
+ # Assignment -=
615
+ def minus_set(r)
616
+ f_build_binary_op(AssignmentExpression, '-=', self, r)
617
+ end
618
+
619
+ def attributes(*args)
620
+ @init_hash['attributes'] = args
621
+ self
622
+ end
623
+
624
+ def offset
625
+ @init_hash[KEY_OFFSET]
626
+ end
627
+
628
+ def length
629
+ @init_hash[KEY_LENGTH]
630
+ end
631
+
632
+ # Records the position (start -> end) and computes the resulting length.
633
+ #
634
+ def record_position(locator, start_locatable, end_locatable)
635
+ # record information directly in the Positioned object
636
+ start_offset = start_locatable.offset
637
+ @init_hash[KEY_LOCATOR] = locator
638
+ @init_hash[KEY_OFFSET] = start_offset
639
+ @init_hash[KEY_LENGTH] = end_locatable.nil? ? start_locatable.length : end_locatable.offset + end_locatable.length - start_offset
640
+ self
641
+ end
642
+
643
+ # Sets the form of the resource expression (:regular (the default), :virtual, or :exported).
644
+ # Produces true if the expression was a resource expression, false otherwise.
645
+ #
646
+ def self.set_resource_form(expr, form)
647
+ # Note: Validation handles illegal combinations
648
+ return false unless expr.instance_of?(self) && expr.model_class <= AbstractResource
649
+ expr['form'] = form
650
+ return true
651
+ end
652
+
653
+ # Returns symbolic information about an expected shape of a resource expression given the LHS of a resource expr.
654
+ #
655
+ # * `name { }` => `:resource`, create a resource of the given type
656
+ # * `Name { }` => ':defaults`, set defaults for the referenced type
657
+ # * `Name[] { }` => `:override`, overrides instances referenced by LHS
658
+ # * _any other_ => ':error', all other are considered illegal
659
+ #
660
+ def self.resource_shape(expr)
661
+ if expr == 'class'
662
+ :class
663
+ elsif expr.instance_of?(self)
664
+ mc = expr.model_class
665
+ if mc <= QualifiedName
666
+ :resource
667
+ elsif mc <= QualifiedReference
668
+ :defaults
669
+ elsif mc <= AccessExpression
670
+ # if Resource[e], then it is not resource specific
671
+ lhs = expr[KEY_LEFT_EXPR]
672
+ if lhs.model_class <= QualifiedReference && lhs[KEY_VALUE] == 'resource' && expr[KEY_KEYS].size == 1
673
+ :defaults
674
+ else
675
+ :override
676
+ end
677
+ else
678
+ :error
679
+ end
680
+ else
681
+ :error
682
+ end
683
+ end
684
+
685
+ # Factory starting points
686
+
687
+ def self.literal(o); infer(o); end
688
+
689
+ def self.minus(o); infer(o).minus; end
690
+
691
+ def self.unfold(o); infer(o).unfold; end
692
+
693
+ def self.var(o); infer(o).var; end
694
+
695
+ def self.block(*args); new(BlockExpression, args.map { |arg| infer(arg) }); end
696
+
697
+ def self.string(*args); new(ConcatenatedString, args.map { |arg| infer(arg) }); end
698
+
699
+ def self.text(o); infer(o).text; end
700
+
701
+ def self.IF(test_e,then_e,else_e); new(IfExpression, test_e, then_e, else_e); end
702
+
703
+ def self.UNLESS(test_e,then_e,else_e); new(UnlessExpression, test_e, then_e, else_e); end
704
+
705
+ def self.CASE(test_e,*options); new(CaseExpression, test_e, options); end
706
+
707
+ def self.WHEN(values_list, block); new(CaseOption, values_list, block); end
708
+
709
+ def self.MAP(match, value); new(SelectorEntry, match, value); end
710
+
711
+ def self.KEY_ENTRY(key, val); new(KeyedEntry, key, val); end
712
+
713
+ def self.HASH(entries); new(LiteralHash, entries, false); end
714
+
715
+ def self.HASH_UNFOLDED(entries); new(LiteralHash, entries, true); end
716
+
717
+ def self.HEREDOC(name, expr); new(HeredocExpression, name, expr); end
718
+
719
+ def self.STRING(*args); new(ConcatenatedString, args); end
720
+
721
+ def self.LIST(entries); new(LiteralList, entries); end
722
+
723
+ def self.PARAM(name, expr=nil); new(Parameter, name, expr); end
724
+
725
+ def self.NODE(hosts, parent, body); new(NodeDefinition, hosts, parent, body); end
726
+
727
+ # Parameters
728
+
729
+ # Mark parameter as capturing the rest of arguments
730
+ def captures_rest
731
+ @init_hash['captures_rest'] = true
732
+ end
733
+
734
+ # Set Expression that should evaluate to the parameter's type
735
+ def type_expr(o)
736
+ @init_hash['type_expr'] = o
737
+ end
738
+
739
+ # Creates a QualifiedName representation of o, unless o already represents a QualifiedName in which
740
+ # case it is returned.
741
+ #
742
+ def self.fqn(o)
743
+ o.instance_of?(Factory) && o.model_class <= QualifiedName ? self : new(QualifiedName, o)
744
+ end
745
+
746
+ # Creates a QualifiedName representation of o, unless o already represents a QualifiedName in which
747
+ # case it is returned.
748
+ #
749
+ def self.fqr(o)
750
+ o.instance_of?(Factory) && o.model_class <= QualifiedReference ? self : new(QualifiedReference, o)
751
+ end
752
+
753
+ def self.SUBLOCATE(token, expr_factory)
754
+ # expr is a Factory wrapped LiteralString, or ConcatenatedString
755
+ # The token is SUBLOCATED token which has a SubLocator as the token's locator
756
+ # Use the SubLocator to recalculate the offsets and lengths.
757
+ model = expr_factory.model
758
+ locator = token.locator
759
+ expr_factory.map_offset(model, locator)
760
+ model._pcore_all_contents([]) { |element| expr_factory.map_offset(element, locator) }
761
+
762
+ # Returned the factory wrapping the now offset/length transformed expression(s)
763
+ expr_factory
764
+ end
765
+
766
+ def self.TEXT(expr)
767
+ new(TextExpression, infer(expr).interpolate)
768
+ end
769
+
770
+ # TODO_EPP
771
+ def self.RENDER_STRING(o)
772
+ new(RenderStringExpression, o)
773
+ end
774
+
775
+ def self.RENDER_EXPR(expr)
776
+ new(RenderExpression, expr)
777
+ end
778
+
779
+ def self.EPP(parameters, body)
780
+ if parameters.nil?
781
+ params = []
782
+ parameters_specified = false
783
+ else
784
+ params = parameters
785
+ parameters_specified = true
786
+ end
787
+ LAMBDA(params, new(EppExpression, parameters_specified, body), nil)
788
+ end
789
+
790
+ def self.RESERVED(name, future=false)
791
+ new(ReservedWord, name, future)
792
+ end
793
+
794
+ # TODO: This is the same a fqn factory method, don't know if callers to fqn and QNAME can live with the
795
+ # same result or not yet - refactor into one method when decided.
796
+ #
797
+ def self.QNAME(name)
798
+ new(QualifiedName, name)
799
+ end
800
+
801
+ def self.NUMBER(name_or_numeric)
802
+ n_radix = Utils.to_n_with_radix(name_or_numeric)
803
+ if n_radix
804
+ val, radix = n_radix
805
+ if val.is_a?(Float)
806
+ new(LiteralFloat, val)
807
+ else
808
+ new(LiteralInteger, val, radix)
809
+ end
810
+ else
811
+ # Bad number should already have been caught by lexer - this should never happen
812
+ #TRANSLATORS 'NUMBER' refers to a method name and the 'name_or_numeric' was the passed in value and should not be translated
813
+ raise ArgumentError, _("Internal Error, NUMBER token does not contain a valid number, %{name_or_numeric}") %
814
+ { name_or_numeric: name_or_numeric }
815
+ end
816
+ end
817
+
818
+ # Convert input string to either a qualified name, a LiteralInteger with radix, or a LiteralFloat
819
+ #
820
+ def self.QNAME_OR_NUMBER(name)
821
+ n_radix = Utils.to_n_with_radix(name)
822
+ if n_radix
823
+ val, radix = n_radix
824
+ if val.is_a?(Float)
825
+ new(LiteralFloat, val)
826
+ else
827
+ new(LiteralInteger, val, radix)
828
+ end
829
+ else
830
+ new(QualifiedName, name)
831
+ end
832
+ end
833
+
834
+ def self.QREF(name)
835
+ new(QualifiedReference, name)
836
+ end
837
+
838
+ def self.VIRTUAL_QUERY(query_expr)
839
+ new(VirtualQuery, query_expr)
840
+ end
841
+
842
+ def self.EXPORTED_QUERY(query_expr)
843
+ new(ExportedQuery, query_expr)
844
+ end
845
+
846
+ def self.ARGUMENTS(args, arg)
847
+ if !args.empty? && arg.model_class <= LiteralHash && arg.unfolded
848
+ last = args[args.size() - 1]
849
+ if last.model_class <= LiteralHash && last.unfolded
850
+ last['entries'].concat(arg['entries'])
851
+ return args
852
+ end
853
+ end
854
+ args.push(arg)
855
+ end
856
+
857
+ def self.ATTRIBUTE_OP(name, op, expr)
858
+ new(AttributeOperation, name, op, expr)
859
+ end
860
+
861
+ def self.ATTRIBUTES_OP(expr)
862
+ new(AttributesOperation, expr)
863
+ end
864
+
865
+ # Same as CALL_NAMED but with inference and varargs (for testing purposes)
866
+ def self.call_named(name, rval_required, *argument_list)
867
+ new(CallNamedFunctionExpression, fqn(name), rval_required, argument_list.map { |arg| infer(arg) })
868
+ end
869
+
870
+ def self.CALL_NAMED(name, rval_required, argument_list)
871
+ new(CallNamedFunctionExpression, name, rval_required, argument_list)
872
+ end
873
+
874
+ def self.CALL_METHOD(functor, argument_list)
875
+ new(CallMethodExpression, functor, true, nil, argument_list)
876
+ end
877
+
878
+ def self.COLLECT(type_expr, query_expr, attribute_operations)
879
+ new(CollectExpression, type_expr, query_expr, attribute_operations)
880
+ end
881
+
882
+ def self.NAMED_ACCESS(type_name, bodies)
883
+ new(NamedAccessExpression, type_name, bodies)
884
+ end
885
+
886
+ def self.RESOURCE(type_name, bodies)
887
+ new(ResourceExpression, type_name, bodies)
888
+ end
889
+
890
+ def self.RESOURCE_DEFAULTS(type_name, attribute_operations)
891
+ new(ResourceDefaultsExpression, type_name, attribute_operations)
892
+ end
893
+
894
+ def self.RESOURCE_OVERRIDE(resource_ref, attribute_operations)
895
+ new(ResourceOverrideExpression, resource_ref, attribute_operations)
896
+ end
897
+
898
+ def self.RESOURCE_BODY(resource_title, attribute_operations)
899
+ new(ResourceBody, resource_title, attribute_operations)
900
+ end
901
+
902
+ def self.PROGRAM(body, definitions, locator)
903
+ new(Program, body, definitions, locator)
904
+ end
905
+
906
+ # Builds a BlockExpression if args size > 1, else the single expression/value in args
907
+ def self.block_or_expression(args, left_brace = nil, right_brace = nil)
908
+ if args.size > 1
909
+ block_expr = new(BlockExpression, args)
910
+
911
+ # If given a left and right brace position, use those
912
+ # otherwise use the first and last element of the block
913
+ if !left_brace.nil? && !right_brace.nil?
914
+ block_expr.record_position(args.first[KEY_LOCATOR], left_brace, right_brace)
915
+ else
916
+ block_expr.record_position(args.first[KEY_LOCATOR], args.first, args.last)
917
+ end
918
+
919
+ block_expr
920
+ else
921
+ args[0]
922
+ end
923
+ end
924
+
925
+ def self.HOSTCLASS(name, parameters, parent, body)
926
+ new(HostClassDefinition, name, parameters, parent, body)
927
+ end
928
+
929
+ def self.DEFINITION(name, parameters, body)
930
+ new(ResourceTypeDefinition, name, parameters, body)
931
+ end
932
+
933
+ def self.PLAN(name, parameters, body)
934
+ new(PlanDefinition, name, parameters, body, nil)
935
+ end
936
+
937
+ def self.APPLY(arguments, body)
938
+ new(ApplyExpression, arguments, body)
939
+ end
940
+
941
+ def self.APPLY_BLOCK(statements)
942
+ new(ApplyBlockExpression, statements)
943
+ end
944
+
945
+ def self.FUNCTION(name, parameters, body, return_type)
946
+ new(FunctionDefinition, name, parameters, body, return_type)
947
+ end
948
+
949
+ def self.LAMBDA(parameters, body, return_type)
950
+ new(LambdaExpression, parameters, body, return_type)
951
+ end
952
+
953
+ def self.TYPE_ASSIGNMENT(lhs, rhs)
954
+ if lhs.model_class <= AccessExpression
955
+ new(TypeMapping, lhs, rhs)
956
+ else
957
+ new(TypeAlias, lhs['cased_value'], rhs)
958
+ end
959
+ end
960
+
961
+ def self.TYPE_DEFINITION(name, parent, body)
962
+ new(TypeDefinition, name, parent, body)
963
+ end
964
+
965
+ def self.nop? o
966
+ o.nil? || o.instance_of?(Factory) && o.model_class <= Nop
967
+ end
968
+
969
+ STATEMENT_CALLS = {
970
+ 'require' => true,
971
+ 'realize' => true,
972
+ 'include' => true,
973
+ 'contain' => true,
974
+ 'tag' => true,
975
+
976
+ 'debug' => true,
977
+ 'info' => true,
978
+ 'notice' => true,
979
+ 'warning' => true,
980
+ 'err' => true,
981
+
982
+ 'fail' => true,
983
+ 'import' => true, # discontinued, but transform it to make it call error reporting function
984
+ 'break' => true,
985
+ 'next' => true,
986
+ 'return' => true
987
+ }.freeze
988
+
989
+ # Returns true if the given name is a "statement keyword" (require, include, contain,
990
+ # error, notice, info, debug
991
+ #
992
+ def self.name_is_statement?(name)
993
+ STATEMENT_CALLS.include?(name)
994
+ end
995
+
996
+ class ArgsToNonCallError < RuntimeError
997
+ attr_reader :args, :name_expr
998
+ def initialize(args, name_expr)
999
+ @args = args
1000
+ @name_expr = name_expr
1001
+ end
1002
+ end
1003
+
1004
+ # Transforms an array of expressions containing literal name expressions to calls if followed by an
1005
+ # expression, or expression list.
1006
+ #
1007
+ def self.transform_calls(expressions)
1008
+ expressions.reduce([]) do |memo, expr|
1009
+ name = memo[-1]
1010
+ if name.instance_of?(Factory) && name.model_class <= QualifiedName && name_is_statement?(name[KEY_VALUE])
1011
+ if expr.is_a?(Array)
1012
+ expr = expr.reject { |e| e.is_a?(Parser::LexerSupport::TokenValue) }
1013
+ else
1014
+ expr = [expr]
1015
+ end
1016
+ the_call = self.CALL_NAMED(name, false, expr)
1017
+ # last positioned is last arg if there are several
1018
+ the_call.record_position(name[KEY_LOCATOR], name, expr[-1])
1019
+ memo[-1] = the_call
1020
+ if expr.is_a?(CallNamedFunctionExpression)
1021
+ # Patch statement function call to expression style
1022
+ # This is needed because it is first parsed as a "statement" and the requirement changes as it becomes
1023
+ # an argument to the name to call transform above.
1024
+ expr.rval_required = true
1025
+ end
1026
+ elsif expr.is_a?(Array)
1027
+ raise ArgsToNonCallError.new(expr, name)
1028
+ else
1029
+ memo << expr
1030
+ if expr.model_class <= CallNamedFunctionExpression
1031
+ # Patch rvalue expression function call to statement style.
1032
+ # This is not really required but done to be AST model compliant
1033
+ expr['rval_required'] = false
1034
+ end
1035
+ end
1036
+ memo
1037
+ end
1038
+ end
1039
+
1040
+ # Transforms a left expression followed by an untitled resource (in the form of attribute_operations)
1041
+ # @param left [Factory, Expression] the lhs followed what may be a hash
1042
+ def self.transform_resource_wo_title(left, attribute_ops, lbrace_token, rbrace_token)
1043
+ # Returning nil means accepting the given as a potential resource expression
1044
+ return nil unless attribute_ops.is_a? Array
1045
+ return nil unless left.model_class <= QualifiedName
1046
+ keyed_entries = attribute_ops.map do |ao|
1047
+ return nil if ao[KEY_OPERATOR] == '+>'
1048
+ KEY_ENTRY(infer(ao['attribute_name']), ao['value_expr'])
1049
+ end
1050
+ a_hash = HASH(keyed_entries)
1051
+ a_hash.record_position(left[KEY_LOCATOR], lbrace_token, rbrace_token)
1052
+ result = block_or_expression(transform_calls([left, a_hash]))
1053
+ result
1054
+ end
1055
+
1056
+ def interpolate_Factory(c)
1057
+ self
1058
+ end
1059
+
1060
+ def interpolate_LiteralInteger(c)
1061
+ # convert number to a variable
1062
+ self.var
1063
+ end
1064
+
1065
+ def interpolate_Object(c)
1066
+ self
1067
+ end
1068
+
1069
+ def interpolate_QualifiedName(c)
1070
+ self.var
1071
+ end
1072
+
1073
+ # rewrite left expression to variable if it is name, number, and recurse if it is an access expression
1074
+ # this is for interpolation support in new lexer (${NAME}, ${NAME[}}, ${NUMBER}, ${NUMBER[]} - all
1075
+ # other expressions requires variables to be preceded with $
1076
+ #
1077
+ def interpolate_AccessExpression(c)
1078
+ lhs = @init_hash[KEY_LEFT_EXPR]
1079
+ if is_interop_rewriteable?(lhs)
1080
+ @init_hash[KEY_LEFT_EXPR] = lhs.interpolate
1081
+ end
1082
+ self
1083
+ end
1084
+
1085
+ def interpolate_NamedAccessExpression(c)
1086
+ lhs = @init_hash[KEY_LEFT_EXPR]
1087
+ if is_interop_rewriteable?(lhs)
1088
+ @init_hash[KEY_LEFT_EXPR] = lhs.interpolate
1089
+ end
1090
+ self
1091
+ end
1092
+
1093
+ # Rewrite method calls on the form ${x.each ...} to ${$x.each}
1094
+ def interpolate_CallMethodExpression(c)
1095
+ functor_expr = @init_hash['functor_expr']
1096
+ if is_interop_rewriteable?(functor_expr)
1097
+ @init_hash['functor_expr'] = functor_expr.interpolate
1098
+ end
1099
+ self
1100
+ end
1101
+
1102
+ def is_interop_rewriteable?(o)
1103
+ mc = o.model_class
1104
+ if mc <= AccessExpression || mc <= QualifiedName || mc <= NamedAccessExpression || mc <= CallMethodExpression
1105
+ true
1106
+ elsif mc <= LiteralInteger
1107
+ # Only decimal integers can represent variables, else it is a number
1108
+ o['radix'] == 10
1109
+ else
1110
+ false
1111
+ end
1112
+ end
1113
+
1114
+ def self.concat(*args)
1115
+ result = ''.dup
1116
+ args.each do |e|
1117
+ if e.instance_of?(Factory) && e.model_class <= LiteralString
1118
+ result << e[KEY_VALUE]
1119
+ elsif e.is_a?(String)
1120
+ result << e
1121
+ else
1122
+ raise ArgumentError, _("can only concatenate strings, got %{class_name}") % { class_name: e.class }
1123
+ end
1124
+ end
1125
+ infer(result)
1126
+ end
1127
+
1128
+ def to_s
1129
+ "Factory for #{@model_class}"
1130
+ end
1131
+
1132
+ def factory_to_model(value)
1133
+ if value.instance_of?(Factory)
1134
+ value.contained_current(self)
1135
+ elsif value.instance_of?(Array)
1136
+ value.each_with_index { |el, idx| value[idx] = el.contained_current(self) if el.instance_of?(Factory) }
1137
+ else
1138
+ value
1139
+ end
1140
+ end
1141
+
1142
+ def contained_current(container)
1143
+ if @current.nil?
1144
+ unless @init_hash.include?(KEY_LOCATOR)
1145
+ @init_hash[KEY_LOCATOR] = container[KEY_LOCATOR]
1146
+ @init_hash[KEY_OFFSET] = container[KEY_OFFSET] || 0
1147
+ @init_hash[KEY_LENGTH] = 0
1148
+ end
1149
+ @current = create_model
1150
+ end
1151
+ @current
1152
+ end
1153
+ end
1154
+ end
1155
+ end