bolt 0.20.0 → 0.20.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bolt might be problematic. Click here for more details.

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