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,238 @@
1
+ module Puppet::Pops
2
+ module Types
3
+
4
+ # @api public
5
+ class PInitType < PTypeWithContainedType
6
+ def self.register_ptype(loader, ir)
7
+ create_ptype(loader, ir, 'AnyType',
8
+ 'type' => {
9
+ KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
10
+ KEY_VALUE => nil
11
+ },
12
+ 'init_args' => {
13
+ KEY_TYPE => PArrayType::DEFAULT,
14
+ KEY_VALUE => EMPTY_ARRAY
15
+ }
16
+ )
17
+ end
18
+
19
+ attr_reader :init_args
20
+
21
+ def initialize(type, init_args)
22
+ super(type)
23
+ @init_args = init_args.nil? ? EMPTY_ARRAY : init_args
24
+
25
+ if type.nil?
26
+ raise ArgumentError, _('Init cannot be parameterized with an undefined type and additional arguments') unless @init_args.empty?
27
+ @initialized = true
28
+ else
29
+ @initialized = false
30
+ end
31
+ end
32
+
33
+ def instance?(o, guard = nil)
34
+ really_instance?(o, guard) == 1
35
+ end
36
+
37
+ # @api private
38
+ def really_instance?(o, guard = nil)
39
+ if @type.nil?
40
+ TypeFactory.rich_data.really_instance?(o)
41
+ else
42
+ assert_initialized
43
+ guarded_recursion(guard, 0) do |g|
44
+ v = @type.really_instance?(o, g)
45
+ if v < 1
46
+ if @single_type
47
+ s = @single_type.really_instance?(o, g)
48
+ v = s if s > v
49
+ end
50
+ end
51
+ if v < 1
52
+ if @other_type
53
+ s = @other_type.really_instance?(o, g)
54
+ s = @other_type.really_instance?([o], g) if s < 0 && @has_optional_single
55
+ v = s if s > v
56
+ end
57
+ end
58
+ v
59
+ end
60
+ end
61
+ end
62
+
63
+ def eql?(o)
64
+ super && @init_args == o.init_args
65
+ end
66
+
67
+ def hash
68
+ super ^ @init_args.hash
69
+ end
70
+
71
+ def new_function
72
+ return super if type.nil?
73
+ assert_initialized
74
+
75
+ target_type = type
76
+ single_type = @single_type
77
+ if @init_args.empty?
78
+ @new_function ||= Puppet::Functions.create_function(:new_Init, Puppet::Functions::InternalFunction) do
79
+ @target_type = target_type
80
+ @single_type = single_type
81
+
82
+ dispatch :from_array do
83
+ scope_param
84
+ param 'Array', :value
85
+ end
86
+
87
+ dispatch :create do
88
+ scope_param
89
+ param 'Any', :value
90
+ end
91
+
92
+ def self.create(scope, value, func)
93
+ func.call(scope, @target_type, value)
94
+ end
95
+
96
+ def self.from_array(scope, value, func)
97
+ # If there is a single argument that matches the array, then that gets priority over
98
+ # expanding the array into all arguments
99
+ if @single_type.instance?(value) || (@other_type && !@other_type.instance?(value) && @has_optional_single && @other_type.instance?([value]))
100
+ func.call(scope, @target_type, value)
101
+ else
102
+ func.call(scope, @target_type, *value)
103
+ end
104
+ end
105
+
106
+ def from_array(scope, value)
107
+ self.class.from_array(scope, value, loader.load(:function, 'new'))
108
+ end
109
+
110
+ def create(scope, value)
111
+ self.class.create(scope, value, loader.load(:function, 'new'))
112
+ end
113
+ end
114
+ else
115
+ init_args = @init_args
116
+ @new_function ||= Puppet::Functions.create_function(:new_Init, Puppet::Functions::InternalFunction) do
117
+ @target_type = target_type
118
+ @init_args = init_args
119
+
120
+ dispatch :create do
121
+ scope_param
122
+ param 'Any', :value
123
+ end
124
+
125
+ def self.create(scope, value, func)
126
+ func.call(scope, @target_type, value, *@init_args)
127
+ end
128
+
129
+ def create(scope, value)
130
+ self.class.create(scope, value, loader.load(:function, 'new'))
131
+ end
132
+ end
133
+ end
134
+ end
135
+
136
+ DEFAULT = PInitType.new(nil, EMPTY_ARRAY)
137
+
138
+ EXACTLY_ONE = [1, 1].freeze
139
+
140
+ def assert_initialized
141
+ return self if @initialized
142
+
143
+ @initialized = true
144
+ @self_recursion = true
145
+
146
+ begin
147
+ # Filter out types that will provide a new_function but are unsuitable to be contained in Init
148
+ #
149
+ # Calling Init#new would cause endless recursion
150
+ # The Optional is the same as Variant[T,Undef].
151
+ # The NotUndef is not meaningful to create instances of
152
+ if @type.instance_of?(PInitType) || @type.instance_of?(POptionalType) || @type.instance_of?(PNotUndefType)
153
+ raise ArgumentError.new
154
+ end
155
+ new_func = @type.new_function
156
+ rescue ArgumentError
157
+ raise ArgumentError, _("Creation of new instance of type '%{type_name}' is not supported") % { type_name: @type.to_s }
158
+ end
159
+ param_tuples = new_func.dispatcher.signatures.map { |closure| closure.type.param_types }
160
+
161
+ # An instance of the contained type is always a match to this type.
162
+ single_types = [@type]
163
+
164
+ if @init_args.empty?
165
+ # A value that is assignable to the type of a single parameter is also a match
166
+ single_tuples, other_tuples = param_tuples.partition { |tuple| EXACTLY_ONE == tuple.size_range }
167
+ single_types.concat(single_tuples.map { |tuple| tuple.types[0] })
168
+ else
169
+ tc = TypeCalculator.singleton
170
+ init_arg_types = @init_args.map { |arg| tc.infer_set(arg) }
171
+ arg_count = 1 + init_arg_types.size
172
+
173
+ # disqualify all parameter tuples that doesn't allow one value (type unknown at ths stage) + init args.
174
+ param_tuples = param_tuples.select do |tuple|
175
+ min, max = tuple.size_range
176
+ if arg_count >= min && arg_count <= max
177
+ # Aside from the first parameter, does the other parameters match?
178
+ tuple.assignable?(PTupleType.new(tuple.types[0..0].concat(init_arg_types)))
179
+ else
180
+ false
181
+ end
182
+ end
183
+ if param_tuples.empty?
184
+ raise ArgumentError, _("The type '%{type}' does not represent a valid set of parameters for %{subject}.new()") %
185
+ { type: to_s, subject: @type.generalize.name }
186
+ end
187
+ single_types.concat(param_tuples.map { |tuple| tuple.types[0] })
188
+ other_tuples = EMPTY_ARRAY
189
+ end
190
+ @single_type = PVariantType.maybe_create(single_types)
191
+ unless other_tuples.empty?
192
+ @other_type = PVariantType.maybe_create(other_tuples)
193
+ @has_optional_single = other_tuples.any? { |tuple| tuple.size_range.min == 1 }
194
+ end
195
+
196
+ guard = RecursionGuard.new
197
+ accept(NoopTypeAcceptor::INSTANCE, guard)
198
+ @self_recursion = guard.recursive_this?(self)
199
+ end
200
+
201
+ def accept(visitor, guard)
202
+ guarded_recursion(guard, nil) do |g|
203
+ super(visitor, g)
204
+ @single_type.accept(visitor, guard) if @single_type
205
+ @other_type.accept(visitor, guard) if @other_type
206
+ end
207
+ end
208
+
209
+ protected
210
+
211
+ def _assignable?(o, guard)
212
+ guarded_recursion(guard, false) do |g|
213
+ assert_initialized
214
+ if o.is_a?(PInitType)
215
+ @type.nil? || @type.assignable?(o.type, g)
216
+ elsif @type.nil?
217
+ TypeFactory.rich_data.assignable?(o, g)
218
+ else
219
+ @type.assignable?(o, g) ||
220
+ @single_type && @single_type.assignable?(o, g) ||
221
+ @other_type && (@other_type.assignable?(o, g) || @has_optional_single && @other_type.assignable?(PTupleType.new([o])))
222
+ end
223
+ end
224
+ end
225
+
226
+ private
227
+
228
+ def guarded_recursion(guard, dflt)
229
+ if @self_recursion
230
+ guard ||= RecursionGuard.new
231
+ guard.with_this(self) { |state| (state & RecursionGuard::SELF_RECURSION_IN_THIS) == 0 ? yield(guard) : dflt }
232
+ else
233
+ yield(guard)
234
+ end
235
+ end
236
+ end
237
+ end
238
+ end
@@ -0,0 +1,94 @@
1
+ # @abstract base class for PObjectType and other types that implements lazy evaluation of content
2
+ # @api private
3
+ module Puppet::Pops
4
+ module Types
5
+
6
+ KEY_NAME = 'name'.freeze
7
+ KEY_TYPE = 'type'.freeze
8
+ KEY_VALUE = 'value'.freeze
9
+
10
+ class PMetaType < PAnyType
11
+ include Annotatable
12
+
13
+ attr_reader :loader
14
+
15
+ def self.register_ptype(loader, ir)
16
+ # Abstract type. It doesn't register anything
17
+ end
18
+
19
+ def accept(visitor, guard)
20
+ annotatable_accept(visitor, guard)
21
+ super
22
+ end
23
+
24
+ def instance?(o, guard = nil)
25
+ assignable?(TypeCalculator.infer(o), guard)
26
+ end
27
+
28
+ # Called from the TypeParser once it has found a type using the Loader. The TypeParser will
29
+ # interpret the contained expression and the resolved type is remembered. This method also
30
+ # checks and remembers if the resolve type contains self recursion.
31
+ #
32
+ # @param type_parser [TypeParser] type parser that will interpret the type expression
33
+ # @param loader [Loader::Loader] loader to use when loading type aliases
34
+ # @return [PTypeAliasType] the receiver of the call, i.e. `self`
35
+ # @api private
36
+ def resolve(loader)
37
+ unless @init_hash_expression.nil?
38
+ @loader = loader
39
+ @self_recursion = true # assumed while it being found out below
40
+
41
+ init_hash_expression = @init_hash_expression
42
+ @init_hash_expression = nil
43
+ if init_hash_expression.is_a?(Model::LiteralHash)
44
+ init_hash = resolve_literal_hash(loader, init_hash_expression)
45
+ else
46
+ init_hash = resolve_hash(loader, init_hash_expression)
47
+ end
48
+ _pcore_init_from_hash(init_hash)
49
+
50
+ # Find out if this type is recursive. A recursive type has performance implications
51
+ # on several methods and this knowledge is used to avoid that for non-recursive
52
+ # types.
53
+ guard = RecursionGuard.new
54
+ accept(NoopTypeAcceptor::INSTANCE, guard)
55
+ @self_recursion = guard.recursive_this?(self)
56
+ end
57
+ self
58
+ end
59
+
60
+ def resolve_literal_hash(loader, init_hash_expression)
61
+ TypeParser.singleton.interpret_LiteralHash(init_hash_expression, loader)
62
+ end
63
+
64
+ def resolve_hash(loader, init_hash)
65
+ resolve_type_refs(loader, init_hash)
66
+ end
67
+
68
+ def resolve_type_refs(loader, o)
69
+ case o
70
+ when Hash
71
+ Hash[o.map { |k, v| [resolve_type_refs(loader, k), resolve_type_refs(loader, v)] }]
72
+ when Array
73
+ o.map { |e| resolve_type_refs(loader, e) }
74
+ when PAnyType
75
+ o.resolve(loader)
76
+ else
77
+ o
78
+ end
79
+ end
80
+
81
+ def resolved?
82
+ @init_hash_expression.nil?
83
+ end
84
+
85
+ # Returns the expanded string the form of the alias, e.g. <alias name> = <resolved type>
86
+ #
87
+ # @return [String] the expanded form of this alias
88
+ # @api public
89
+ def to_s
90
+ TypeFormatter.singleton.alias_expanded_string(self)
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,1114 @@
1
+ require_relative 'ruby_generator'
2
+ require_relative 'type_with_members'
3
+
4
+ module Puppet::Pops
5
+ module Types
6
+
7
+ KEY_ATTRIBUTES = 'attributes'.freeze
8
+ KEY_CHECKS = 'checks'.freeze
9
+ KEY_CONSTANTS = 'constants'.freeze
10
+ KEY_EQUALITY = 'equality'.freeze
11
+ KEY_EQUALITY_INCLUDE_TYPE = 'equality_include_type'.freeze
12
+ KEY_FINAL = 'final'.freeze
13
+ KEY_FUNCTIONS = 'functions'.freeze
14
+ KEY_KIND = 'kind'.freeze
15
+ KEY_OVERRIDE = 'override'.freeze
16
+ KEY_PARENT = 'parent'.freeze
17
+ KEY_TYPE_PARAMETERS = 'type_parameters'.freeze
18
+
19
+ # @api public
20
+ class PObjectType < PMetaType
21
+ include TypeWithMembers
22
+
23
+ ATTRIBUTE_KIND_CONSTANT = 'constant'.freeze
24
+ ATTRIBUTE_KIND_DERIVED = 'derived'.freeze
25
+ ATTRIBUTE_KIND_GIVEN_OR_DERIVED = 'given_or_derived'.freeze
26
+ ATTRIBUTE_KIND_REFERENCE = 'reference'.freeze
27
+ TYPE_ATTRIBUTE_KIND = TypeFactory.enum(ATTRIBUTE_KIND_CONSTANT, ATTRIBUTE_KIND_DERIVED, ATTRIBUTE_KIND_GIVEN_OR_DERIVED, ATTRIBUTE_KIND_REFERENCE)
28
+
29
+ TYPE_OBJECT_NAME = Pcore::TYPE_QUALIFIED_REFERENCE
30
+
31
+ TYPE_ATTRIBUTE = TypeFactory.struct({
32
+ KEY_TYPE => PTypeType::DEFAULT,
33
+ TypeFactory.optional(KEY_FINAL) => PBooleanType::DEFAULT,
34
+ TypeFactory.optional(KEY_OVERRIDE) => PBooleanType::DEFAULT,
35
+ TypeFactory.optional(KEY_KIND) => TYPE_ATTRIBUTE_KIND,
36
+ KEY_VALUE => PAnyType::DEFAULT,
37
+ TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS
38
+ })
39
+
40
+ TYPE_PARAMETER = TypeFactory.struct({
41
+ KEY_TYPE => PTypeType::DEFAULT,
42
+ TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS
43
+ })
44
+
45
+ TYPE_CONSTANTS = TypeFactory.hash_kv(Pcore::TYPE_MEMBER_NAME, PAnyType::DEFAULT)
46
+ TYPE_ATTRIBUTES = TypeFactory.hash_kv(Pcore::TYPE_MEMBER_NAME, TypeFactory.not_undef)
47
+ TYPE_PARAMETERS = TypeFactory.hash_kv(Pcore::TYPE_MEMBER_NAME, TypeFactory.not_undef)
48
+ TYPE_ATTRIBUTE_CALLABLE = TypeFactory.callable(0,0)
49
+
50
+ TYPE_FUNCTION_TYPE = PTypeType.new(PCallableType::DEFAULT)
51
+
52
+ TYPE_FUNCTION = TypeFactory.struct({
53
+ KEY_TYPE => TYPE_FUNCTION_TYPE,
54
+ TypeFactory.optional(KEY_FINAL) => PBooleanType::DEFAULT,
55
+ TypeFactory.optional(KEY_OVERRIDE) => PBooleanType::DEFAULT,
56
+ TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS
57
+ })
58
+ TYPE_FUNCTIONS = TypeFactory.hash_kv(PVariantType.new([Pcore::TYPE_MEMBER_NAME, PStringType.new('[]')]), TypeFactory.not_undef)
59
+
60
+ TYPE_EQUALITY = TypeFactory.variant(Pcore::TYPE_MEMBER_NAME, TypeFactory.array_of(Pcore::TYPE_MEMBER_NAME))
61
+
62
+ TYPE_CHECKS = PAnyType::DEFAULT # TBD
63
+
64
+ TYPE_OBJECT_I12N = TypeFactory.struct({
65
+ TypeFactory.optional(KEY_NAME) => TYPE_OBJECT_NAME,
66
+ TypeFactory.optional(KEY_PARENT) => PTypeType::DEFAULT,
67
+ TypeFactory.optional(KEY_TYPE_PARAMETERS) => TYPE_PARAMETERS,
68
+ TypeFactory.optional(KEY_ATTRIBUTES) => TYPE_ATTRIBUTES,
69
+ TypeFactory.optional(KEY_CONSTANTS) => TYPE_CONSTANTS,
70
+ TypeFactory.optional(KEY_FUNCTIONS) => TYPE_FUNCTIONS,
71
+ TypeFactory.optional(KEY_EQUALITY) => TYPE_EQUALITY,
72
+ TypeFactory.optional(KEY_EQUALITY_INCLUDE_TYPE) => PBooleanType::DEFAULT,
73
+ TypeFactory.optional(KEY_CHECKS) => TYPE_CHECKS,
74
+ TypeFactory.optional(KEY_ANNOTATIONS) => TYPE_ANNOTATIONS
75
+ })
76
+
77
+ def self.register_ptype(loader, ir)
78
+ type = create_ptype(loader, ir, 'AnyType', '_pcore_init_hash' => TYPE_OBJECT_I12N)
79
+
80
+ # Now, when the Object type exists, add annotations with keys derived from Annotation and freeze the types.
81
+ annotations = TypeFactory.optional(PHashType.new(PTypeType.new(Annotation._pcore_type), TypeFactory.hash_kv(Pcore::TYPE_MEMBER_NAME, PAnyType::DEFAULT)))
82
+ TYPE_ATTRIBUTE.hashed_elements[KEY_ANNOTATIONS].replace_value_type(annotations)
83
+ TYPE_FUNCTION.hashed_elements[KEY_ANNOTATIONS].replace_value_type(annotations)
84
+ TYPE_OBJECT_I12N.hashed_elements[KEY_ANNOTATIONS].replace_value_type(annotations)
85
+ PTypeSetType::TYPE_TYPESET_I12N.hashed_elements[KEY_ANNOTATIONS].replace_value_type(annotations)
86
+ PTypeSetType::TYPE_TYPE_REFERENCE_I12N.hashed_elements[KEY_ANNOTATIONS].replace_value_type(annotations)
87
+ type
88
+ end
89
+
90
+ # @abstract Encapsulates behavior common to {PAttribute} and {PFunction}
91
+ # @api public
92
+ class PAnnotatedMember
93
+ include Annotatable
94
+ include InvocableMember
95
+
96
+ # @return [PObjectType] the object type containing this member
97
+ # @api public
98
+ attr_reader :container
99
+
100
+ # @return [String] the name of this member
101
+ # @api public
102
+ attr_reader :name
103
+
104
+ # @return [PAnyType] the type of this member
105
+ # @api public
106
+ attr_reader :type
107
+
108
+ # @param name [String] The name of the member
109
+ # @param container [PObjectType] The containing object type
110
+ # @param init_hash [Hash{String=>Object}] Hash containing feature options
111
+ # @option init_hash [PAnyType] 'type' The member type (required)
112
+ # @option init_hash [Boolean] 'override' `true` if this feature must override an inherited feature. Default is `false`.
113
+ # @option init_hash [Boolean] 'final' `true` if this feature cannot be overridden. Default is `false`.
114
+ # @option init_hash [Hash{PTypeType => Hash}] 'annotations' Annotations hash. Default is `nil`.
115
+ # @api public
116
+ def initialize(name, container, init_hash)
117
+ @name = name
118
+ @container = container
119
+ @type = init_hash[KEY_TYPE]
120
+ @override = init_hash[KEY_OVERRIDE]
121
+ @override = false if @override.nil?
122
+ @final = init_hash[KEY_FINAL]
123
+ @final = false if @final.nil?
124
+ init_annotatable(init_hash)
125
+ end
126
+
127
+ # Delegates to the contained type
128
+ # @param visitor [TypeAcceptor] the visitor
129
+ # @param guard [RecursionGuard] guard against recursion. Only used by internal calls
130
+ # @api public
131
+ def accept(visitor, guard)
132
+ annotatable_accept(visitor, guard)
133
+ @type.accept(visitor, guard)
134
+ end
135
+
136
+ # Checks if the this _member_ overrides an inherited member, and if so, that this member is declared with override = true and that
137
+ # the inherited member accepts to be overridden by this member.
138
+ #
139
+ # @param parent_members [Hash{String=>PAnnotatedMember}] the hash of inherited members
140
+ # @return [PAnnotatedMember] this instance
141
+ # @raises [Puppet::ParseError] if the assertion fails
142
+ # @api private
143
+ def assert_override(parent_members)
144
+ parent_member = parent_members[@name]
145
+ if parent_member.nil?
146
+ if @override
147
+ raise Puppet::ParseError, _("expected %{label} to override an inherited %{feature_type}, but no such %{feature_type} was found") %
148
+ { label: label, feature_type: feature_type }
149
+ end
150
+ self
151
+ else
152
+ parent_member.assert_can_be_overridden(self)
153
+ end
154
+ end
155
+
156
+ # Checks if the given _member_ can override this member.
157
+ #
158
+ # @param member [PAnnotatedMember] the overriding member
159
+ # @return [PAnnotatedMember] its argument
160
+ # @raises [Puppet::ParseError] if the assertion fails
161
+ # @api private
162
+ def assert_can_be_overridden(member)
163
+ unless self.class == member.class
164
+ raise Puppet::ParseError, _("%{member} attempts to override %{label}") % { member: member.label, label: label }
165
+ end
166
+ if @final && !(constant? && member.constant?)
167
+ raise Puppet::ParseError, _("%{member} attempts to override final %{label}") % { member: member.label, label: label }
168
+ end
169
+ unless member.override?
170
+ #TRANSLATOR 'override => true' is a puppet syntax and should not be translated
171
+ raise Puppet::ParseError, _("%{member} attempts to override %{label} without having override => true") % { member: member.label, label: label }
172
+ end
173
+ unless @type.assignable?(member.type)
174
+ raise Puppet::ParseError, _("%{member} attempts to override %{label} with a type that does not match") % { member: member.label, label: label }
175
+ end
176
+ member
177
+ end
178
+
179
+ def constant?
180
+ false
181
+ end
182
+
183
+ # @return [Boolean] `true` if this feature cannot be overridden
184
+ # @api public
185
+ def final?
186
+ @final
187
+ end
188
+
189
+ # @return [Boolean] `true` if this feature must override an inherited feature
190
+ # @api public
191
+ def override?
192
+ @override
193
+ end
194
+
195
+ # @api public
196
+ def hash
197
+ @name.hash ^ @type.hash
198
+ end
199
+
200
+ # @api public
201
+ def eql?(o)
202
+ self.class == o.class && @name == o.name && @type == o.type && @override == o.override? && @final == o.final?
203
+ end
204
+
205
+ # @api public
206
+ def ==(o)
207
+ eql?(o)
208
+ end
209
+
210
+ # Returns the member as a hash suitable as an argument for constructor. Name is excluded
211
+ # @return [Hash{String=>Object}] the initialization hash
212
+ # @api private
213
+ def _pcore_init_hash
214
+ hash = { KEY_TYPE => @type }
215
+ hash[KEY_FINAL] = true if @final
216
+ hash[KEY_OVERRIDE] = true if @override
217
+ hash[KEY_ANNOTATIONS] = @annotations unless @annotations.nil?
218
+ hash
219
+ end
220
+
221
+ # @api private
222
+ def feature_type
223
+ self.class.feature_type
224
+ end
225
+
226
+ # @api private
227
+ def label
228
+ self.class.label(@container, @name)
229
+ end
230
+
231
+ # Performs type checking of arguments and invokes the method that corresponds to this
232
+ # method. The result of the invocation is returned
233
+ #
234
+ # @param receiver [Object] The receiver of the call
235
+ # @param scope [Puppet::Parser::Scope] The caller scope
236
+ # @param args [Array] Array of arguments.
237
+ # @return [Object] The result returned by the member function or attribute
238
+ #
239
+ # @api private
240
+ def invoke(receiver, scope, args, &block)
241
+ @dispatch ||= create_dispatch(receiver)
242
+
243
+ args_type = TypeCalculator.infer_set(block_given? ? args + [block] : args)
244
+ found = @dispatch.find { |d| d.type.callable?(args_type) }
245
+ raise ArgumentError, TypeMismatchDescriber.describe_signatures(label, @dispatch, args_type) if found.nil?
246
+ found.invoke(receiver, scope, args, &block)
247
+ end
248
+
249
+ # @api private
250
+ def create_dispatch(instance)
251
+ # TODO: Assumes Ruby implementation for now
252
+ if(callable_type.is_a?(PVariantType))
253
+ callable_type.types.map do |ct|
254
+ Functions::Dispatch.new(ct, RubyGenerator.protect_reserved_name(name), [], false, ct.block_type.nil? ? nil : 'block')
255
+ end
256
+ else
257
+ [Functions::Dispatch.new(callable_type, RubyGenerator.protect_reserved_name(name), [], false, callable_type.block_type.nil? ? nil : 'block')]
258
+ end
259
+ end
260
+
261
+ # @api private
262
+ def self.feature_type
263
+ raise NotImplementedError, "'#{self.class.name}' should implement #feature_type"
264
+ end
265
+
266
+ def self.label(container, name)
267
+ "#{feature_type} #{container.label}[#{name}]"
268
+ end
269
+ end
270
+
271
+ # Describes a named Attribute in an Object type
272
+ # @api public
273
+ class PAttribute < PAnnotatedMember
274
+
275
+ # @return [String,nil] The attribute kind as defined by #TYPE_ATTRIBUTE_KIND, or `nil`
276
+ attr_reader :kind
277
+
278
+ # @param name [String] The name of the attribute
279
+ # @param container [PObjectType] The containing object type
280
+ # @param init_hash [Hash{String=>Object}] Hash containing attribute options
281
+ # @option init_hash [PAnyType] 'type' The attribute type (required)
282
+ # @option init_hash [Object] 'value' The default value, must be an instanceof the given `type` (optional)
283
+ # @option init_hash [String] 'kind' The attribute kind, matching #TYPE_ATTRIBUTE_KIND
284
+ # @api public
285
+ def initialize(name, container, init_hash)
286
+ super(name, container, TypeAsserter.assert_instance_of(nil, TYPE_ATTRIBUTE, init_hash) { "initializer for #{self.class.label(container, name)}" })
287
+ @kind = init_hash[KEY_KIND]
288
+ if @kind == ATTRIBUTE_KIND_CONSTANT # final is implied
289
+ if init_hash.include?(KEY_FINAL) && !@final
290
+ #TRANSLATOR 'final => false' is puppet syntax and should not be translated
291
+ raise Puppet::ParseError, _("%{label} of kind 'constant' cannot be combined with final => false") % { label: label }
292
+ end
293
+ @final = true
294
+ end
295
+
296
+ if init_hash.include?(KEY_VALUE)
297
+ if @kind == ATTRIBUTE_KIND_DERIVED || @kind == ATTRIBUTE_KIND_GIVEN_OR_DERIVED
298
+ raise Puppet::ParseError, _("%{label} of kind '%{kind}' cannot be combined with an attribute value") % { label: label, kind: @kind }
299
+ end
300
+ v = init_hash[KEY_VALUE]
301
+ @value = v == :default ? v : TypeAsserter.assert_instance_of(nil, type, v) {"#{label} #{KEY_VALUE}" }
302
+ else
303
+ raise Puppet::ParseError, _("%{label} of kind 'constant' requires a value") % { label: label } if @kind == ATTRIBUTE_KIND_CONSTANT
304
+ @value = :undef # Not to be confused with nil or :default
305
+ end
306
+ end
307
+
308
+ def callable_type
309
+ TYPE_ATTRIBUTE_CALLABLE
310
+ end
311
+
312
+ # @api public
313
+ def eql?(o)
314
+ super && @kind == o.kind && @value == (o.value? ? o.value : :undef)
315
+ end
316
+
317
+ # Returns the member as a hash suitable as an argument for constructor. Name is excluded
318
+ # @return [Hash{String=>Object}] the hash
319
+ # @api private
320
+ def _pcore_init_hash
321
+ hash = super
322
+ unless @kind.nil?
323
+ hash[KEY_KIND] = @kind
324
+ hash.delete(KEY_FINAL) if @kind == ATTRIBUTE_KIND_CONSTANT # final is implied
325
+ end
326
+ hash[KEY_VALUE] = @value unless @value == :undef
327
+ hash
328
+ end
329
+
330
+ def constant?
331
+ @kind == ATTRIBUTE_KIND_CONSTANT
332
+ end
333
+
334
+ # @return [Booelan] true if the given value equals the default value for this attribute
335
+ def default_value?(value)
336
+ @value == value
337
+ end
338
+
339
+ # @return [Boolean] `true` if a value has been defined for this attribute.
340
+ def value?
341
+ @value != :undef
342
+ end
343
+
344
+ # Returns the value of this attribute, or raises an error if no value has been defined. Raising an error
345
+ # is necessary since a defined value may be `nil`.
346
+ #
347
+ # @return [Object] the value that has been defined for this attribute.
348
+ # @raise [Puppet::Error] if no value has been defined
349
+ # @api public
350
+ def value
351
+ # An error must be raised here since `nil` is a valid value and it would be bad to leak the :undef symbol
352
+ raise Puppet::Error, "#{label} has no value" if @value == :undef
353
+ @value
354
+ end
355
+
356
+ # @api private
357
+ def self.feature_type
358
+ 'attribute'
359
+ end
360
+ end
361
+
362
+ class PTypeParameter < PAttribute
363
+ # @return [Hash{String=>Object}] the hash
364
+ # @api private
365
+ def _pcore_init_hash
366
+ hash = super
367
+ hash[KEY_TYPE] = hash[KEY_TYPE].type
368
+ hash.delete(KEY_VALUE) if hash.include?(KEY_VALUE) && hash[KEY_VALUE].nil?
369
+ hash
370
+ end
371
+
372
+ # @api private
373
+ def self.feature_type
374
+ 'type_parameter'
375
+ end
376
+ end
377
+
378
+ # Describes a named Function in an Object type
379
+ # @api public
380
+ class PFunction < PAnnotatedMember
381
+
382
+ # @param name [String] The name of the attribute
383
+ # @param container [PObjectType] The containing object type
384
+ # @param init_hash [Hash{String=>Object}] Hash containing function options
385
+ # @api public
386
+ def initialize(name, container, init_hash)
387
+ super(name, container, TypeAsserter.assert_instance_of(["initializer for function '%s'", name], TYPE_FUNCTION, init_hash))
388
+ end
389
+
390
+ def callable_type
391
+ type
392
+ end
393
+
394
+ # @api private
395
+ def self.feature_type
396
+ 'function'
397
+ end
398
+ end
399
+
400
+ attr_reader :name
401
+ attr_reader :parent
402
+ attr_reader :equality
403
+ attr_reader :checks
404
+ attr_reader :annotations
405
+
406
+ # Initialize an Object Type instance. The initialization will use either a name and an initialization
407
+ # hash expression, or a fully resolved initialization hash.
408
+ #
409
+ # @overload initialize(name, init_hash_expression)
410
+ # Used when the Object type is loaded using a type alias expression. When that happens, it is important that
411
+ # the actual resolution of the expression is deferred until all definitions have been made known to the current
412
+ # loader. The object will then be resolved when it is loaded by the {TypeParser}. "resolved" here, means that
413
+ # the hash expression is fully resolved, and then passed to the {#_pcore_init_from_hash} method.
414
+ # @param name [String] The name of the object
415
+ # @param init_hash_expression [Model::LiteralHash] The hash describing the Object features
416
+ #
417
+ # @overload initialize(init_hash)
418
+ # Used when the object is created by the {TypeFactory}. The init_hash must be fully resolved.
419
+ # @param _pcore_init_hash [Hash{String=>Object}] The hash describing the Object features
420
+ # @param loader [Loaders::Loader,nil] the loader that loaded the type
421
+ #
422
+ # @api private
423
+ def initialize(_pcore_init_hash, init_hash_expression = nil)
424
+ if _pcore_init_hash.is_a?(Hash)
425
+ _pcore_init_from_hash(_pcore_init_hash)
426
+ @loader = init_hash_expression unless init_hash_expression.nil?
427
+ else
428
+ @type_parameters = EMPTY_HASH
429
+ @attributes = EMPTY_HASH
430
+ @functions = EMPTY_HASH
431
+ @name = TypeAsserter.assert_instance_of('object name', TYPE_OBJECT_NAME, _pcore_init_hash)
432
+ @init_hash_expression = init_hash_expression
433
+ end
434
+ end
435
+
436
+ def instance?(o, guard = nil)
437
+ if o.is_a?(PuppetObject)
438
+ assignable?(o._pcore_type, guard)
439
+ else
440
+ name = o.class.name
441
+ return false if name.nil? # anonymous class that doesn't implement PuppetObject is not an instance
442
+ ir = Loaders.implementation_registry
443
+ type = ir.nil? ? nil : ir.type_for_module(name)
444
+ !type.nil? && assignable?(type, guard)
445
+ end
446
+ end
447
+
448
+ # @api private
449
+ def new_function
450
+ @new_function ||= create_new_function
451
+ end
452
+
453
+ # Assign a new instance reader to this type
454
+ # @param [Serialization::InstanceReader] reader the reader to assign
455
+ # @api private
456
+ def reader=(reader)
457
+ @reader = reader
458
+ end
459
+
460
+ # Assign a new instance write to this type
461
+ # @param [Serialization::InstanceWriter] the writer to assign
462
+ # @api private
463
+ def writer=(writer)
464
+ @writer = writer
465
+ end
466
+
467
+ # Read an instance of this type from a deserializer
468
+ # @param [Integer] value_count the number attributes needed to create the instance
469
+ # @param [Serialization::Deserializer] deserializer the deserializer to read from
470
+ # @return [Object] the created instance
471
+ # @api private
472
+ def read(value_count, deserializer)
473
+ reader.read(self, implementation_class, value_count, deserializer)
474
+ end
475
+
476
+ # Write an instance of this type using a serializer
477
+ # @param [Object] value the instance to write
478
+ # @param [Serialization::Serializer] the serializer to write to
479
+ # @api private
480
+ def write(value, serializer)
481
+ writer.write(self, value, serializer)
482
+ end
483
+
484
+ # @api private
485
+ def create_new_function
486
+ impl_class = implementation_class
487
+ return impl_class.create_new_function(self) if impl_class.respond_to?(:create_new_function)
488
+
489
+ (param_names, param_types, required_param_count) = parameter_info(impl_class)
490
+
491
+ # Create the callable with a size that reflects the required and optional parameters
492
+ create_type = TypeFactory.callable(*param_types, required_param_count, param_names.size)
493
+ from_hash_type = TypeFactory.callable(init_hash_type, 1, 1)
494
+
495
+ # Create and return a #new_XXX function where the dispatchers are added programmatically.
496
+ Puppet::Functions.create_loaded_function(:"new_#{name}", loader) do
497
+
498
+ # The class that creates new instances must be available to the constructor methods
499
+ # and is therefore declared as a variable and accessor on the class that represents
500
+ # this added function.
501
+ @impl_class = impl_class
502
+
503
+ def self.impl_class
504
+ @impl_class
505
+ end
506
+
507
+ # It's recommended that an implementor of an Object type provides the method #from_asserted_hash.
508
+ # This method should accept a hash and assume that type assertion has been made already (it is made
509
+ # by the dispatch added here).
510
+ if impl_class.respond_to?(:from_asserted_hash)
511
+ dispatcher.add(Functions::Dispatch.new(from_hash_type, :from_hash, ['hash']))
512
+ def from_hash(hash)
513
+ self.class.impl_class.from_asserted_hash(hash)
514
+ end
515
+ end
516
+
517
+ # Add the dispatch that uses the standard #from_asserted_args or #new method on the class. It's assumed that the
518
+ # method performs no assertions.
519
+ dispatcher.add(Functions::Dispatch.new(create_type, :create, param_names))
520
+ if impl_class.respond_to?(:from_asserted_args)
521
+ def create(*args)
522
+ self.class.impl_class.from_asserted_args(*args)
523
+ end
524
+ else
525
+ def create(*args)
526
+ self.class.impl_class.new(*args)
527
+ end
528
+ end
529
+ end
530
+ end
531
+
532
+ # @api private
533
+ def implementation_class(create = true)
534
+ if @implementation_class.nil? && create
535
+ ir = Loaders.implementation_registry
536
+ class_name = ir.nil? ? nil : ir.module_name_for_type(self)
537
+ if class_name.nil?
538
+ # Use generator to create a default implementation
539
+ @implementation_class = RubyGenerator.new.create_class(self)
540
+ @implementation_class.class_eval(&@implementation_override) if instance_variable_defined?(:@implementation_override)
541
+ else
542
+ # Can the mapping be loaded?
543
+ @implementation_class = ClassLoader.provide(class_name)
544
+
545
+ raise Puppet::Error, "Unable to load class #{class_name}" if @implementation_class.nil?
546
+ unless @implementation_class < PuppetObject || @implementation_class.respond_to?(:ecore)
547
+ raise Puppet::Error, "Unable to create an instance of #{name}. #{class_name} does not include module #{PuppetObject.name}"
548
+ end
549
+ end
550
+ end
551
+ @implementation_class
552
+ end
553
+
554
+ # @api private
555
+ def implementation_class=(cls)
556
+ raise ArgumentError, "attempt to redefine implementation class for #{label}" unless @implementation_class.nil?
557
+ @implementation_class = cls
558
+ end
559
+
560
+ # The block passed to this method will be passed in a call to `#class_eval` on the dynamically generated
561
+ # class for this data type. It's indended use is to complement or redefine the generated methods and
562
+ # attribute readers.
563
+ #
564
+ # The method is normally called with the block passed to `#implementation` when a data type is defined using
565
+ # {Puppet::DataTypes::create_type}.
566
+ #
567
+ # @api private
568
+ def implementation_override=(block)
569
+ if !@implementation_class.nil? || instance_variable_defined?(:@implementation_override)
570
+ raise ArgumentError, "attempt to redefine implementation override for #{label}"
571
+ end
572
+ @implementation_override = block
573
+ end
574
+
575
+ def extract_init_hash(o)
576
+ return o._pcore_init_hash if o.respond_to?(:_pcore_init_hash)
577
+
578
+ result = {}
579
+ pic = parameter_info(o.class)
580
+ attrs = attributes(true)
581
+ pic[0].each do |name|
582
+ v = o.send(name)
583
+ result[name] = v unless attrs[name].default_value?(v)
584
+ end
585
+ result
586
+ end
587
+
588
+ # @api private
589
+ # @return [(Array<String>, Array<PAnyType>, Integer)] array of parameter names, array of parameter types, and a count reflecting the required number of parameters
590
+ def parameter_info(impl_class)
591
+ # Create a types and a names array where optional entries ends up last
592
+ @parameter_info ||= {}
593
+ pic = @parameter_info[impl_class]
594
+ return pic if pic
595
+
596
+ opt_types = []
597
+ opt_names = []
598
+ non_opt_types = []
599
+ non_opt_names = []
600
+ init_hash_type.elements.each do |se|
601
+ if se.key_type.is_a?(POptionalType)
602
+ opt_names << se.name
603
+ opt_types << se.value_type
604
+ else
605
+ non_opt_names << se.name
606
+ non_opt_types << se.value_type
607
+ end
608
+ end
609
+ param_names = non_opt_names + opt_names
610
+ param_types = non_opt_types + opt_types
611
+ param_count = param_names.size
612
+
613
+ init = impl_class.respond_to?(:from_asserted_args) ? impl_class.method(:from_asserted_args) : impl_class.instance_method(:initialize)
614
+ init_non_opt_count = 0
615
+ init_param_names = init.parameters.map do |p|
616
+ init_non_opt_count += 1 if :req == p[0]
617
+ n = p[1].to_s
618
+ r = RubyGenerator.unprotect_reserved_name(n)
619
+ unless r.equal?(n)
620
+ # assert that the protected name wasn't a real name (names can start with underscore)
621
+ n = r unless param_names.index(r).nil?
622
+ end
623
+ n
624
+ end
625
+
626
+ if init_param_names != param_names
627
+ if init_param_names.size < param_count || init_non_opt_count > param_count
628
+ raise Serialization::SerializationError, "Initializer for class #{impl_class.name} does not match the attributes of #{name}"
629
+ end
630
+ init_param_names = init_param_names[0, param_count] if init_param_names.size > param_count
631
+ unless init_param_names == param_names
632
+ # Reorder needed to match initialize method arguments
633
+ new_param_types = []
634
+ init_param_names.each do |ip|
635
+ index = param_names.index(ip)
636
+ if index.nil?
637
+ raise Serialization::SerializationError,
638
+ "Initializer for class #{impl_class.name} parameter '#{ip}' does not match any of the the attributes of type #{name}"
639
+ end
640
+ new_param_types << param_types[index]
641
+ end
642
+ param_names = init_param_names
643
+ param_types = new_param_types
644
+ end
645
+ end
646
+
647
+ pic = [param_names.freeze, param_types.freeze, non_opt_types.size].freeze
648
+ @parameter_info[impl_class] = pic
649
+ pic
650
+ end
651
+
652
+ # @api private
653
+ def attr_reader_name(se)
654
+ if se.value_type.is_a?(PBooleanType) || se.value_type.is_a?(POptionalType) && se.value_type.type.is_a?(PBooleanType)
655
+ "#{se.name}?"
656
+ else
657
+ se.name
658
+ end
659
+ end
660
+
661
+ def self.from_hash(hash)
662
+ new(hash, nil)
663
+ end
664
+
665
+ # @api private
666
+ def _pcore_init_from_hash(init_hash)
667
+ TypeAsserter.assert_instance_of('object initializer', TYPE_OBJECT_I12N, init_hash)
668
+ @type_parameters = EMPTY_HASH
669
+ @attributes = EMPTY_HASH
670
+ @functions = EMPTY_HASH
671
+
672
+ # Name given to the loader have higher precedence than a name declared in the type
673
+ @name ||= init_hash[KEY_NAME]
674
+ @name.freeze unless @name.nil?
675
+
676
+ @parent = init_hash[KEY_PARENT]
677
+
678
+ parent_members = EMPTY_HASH
679
+ parent_type_params = EMPTY_HASH
680
+ parent_object_type = nil
681
+ unless @parent.nil?
682
+ check_self_recursion(self)
683
+ rp = resolved_parent
684
+ raise Puppet::ParseError, _("reference to unresolved type '%{name}'") % { :name => rp.type_string } if rp.is_a?(PTypeReferenceType)
685
+ if rp.is_a?(PObjectType)
686
+ parent_object_type = rp
687
+ parent_members = rp.members(true)
688
+ parent_type_params = rp.type_parameters(true)
689
+ end
690
+ end
691
+
692
+ type_parameters = init_hash[KEY_TYPE_PARAMETERS]
693
+ unless type_parameters.nil? || type_parameters.empty?
694
+ @type_parameters = {}
695
+ type_parameters.each do |key, param_spec|
696
+ param_value = :undef
697
+ if param_spec.is_a?(Hash)
698
+ param_type = param_spec[KEY_TYPE]
699
+ param_value = param_spec[KEY_VALUE] if param_spec.include?(KEY_VALUE)
700
+ else
701
+ param_type = TypeAsserter.assert_instance_of(nil, PTypeType::DEFAULT, param_spec) { "type_parameter #{label}[#{key}]" }
702
+ end
703
+ param_type = POptionalType.new(param_type) unless param_type.is_a?(POptionalType)
704
+ type_param = PTypeParameter.new(key, self, KEY_TYPE => param_type, KEY_VALUE => param_value).assert_override(parent_type_params)
705
+ @type_parameters[key] = type_param
706
+ end
707
+ end
708
+
709
+ constants = init_hash[KEY_CONSTANTS]
710
+ attr_specs = init_hash[KEY_ATTRIBUTES]
711
+ if attr_specs.nil?
712
+ attr_specs = {}
713
+ else
714
+ # attr_specs might be frozen
715
+ attr_specs = Hash[attr_specs]
716
+ end
717
+ unless constants.nil? || constants.empty?
718
+ constants.each do |key, value|
719
+ if attr_specs.include?(key)
720
+ raise Puppet::ParseError, _("attribute %{label}[%{key}] is defined as both a constant and an attribute") % { label: label, key: key }
721
+ end
722
+ attr_spec = {
723
+ # Type must be generic here, or overrides would become impossible
724
+ KEY_TYPE => TypeCalculator.infer(value).generalize,
725
+ KEY_VALUE => value,
726
+ KEY_KIND => ATTRIBUTE_KIND_CONSTANT
727
+ }
728
+ # Indicate override if parent member exists. Type check etc. will take place later on.
729
+ attr_spec[KEY_OVERRIDE] = parent_members.include?(key)
730
+ attr_specs[key] = attr_spec
731
+ end
732
+ end
733
+
734
+ unless attr_specs.empty?
735
+ @attributes = Hash[attr_specs.map do |key, attr_spec|
736
+ unless attr_spec.is_a?(Hash)
737
+ attr_type = TypeAsserter.assert_instance_of(nil, PTypeType::DEFAULT, attr_spec) { "attribute #{label}[#{key}]" }
738
+ attr_spec = { KEY_TYPE => attr_type }
739
+ attr_spec[KEY_VALUE] = nil if attr_type.is_a?(POptionalType)
740
+ end
741
+ attr = PAttribute.new(key, self, attr_spec)
742
+ [attr.name, attr.assert_override(parent_members)]
743
+ end].freeze
744
+ end
745
+
746
+ func_specs = init_hash[KEY_FUNCTIONS]
747
+ unless func_specs.nil? || func_specs.empty?
748
+ @functions = Hash[func_specs.map do |key, func_spec|
749
+ func_spec = { KEY_TYPE => TypeAsserter.assert_instance_of(nil, TYPE_FUNCTION_TYPE, func_spec) { "function #{label}[#{key}]" } } unless func_spec.is_a?(Hash)
750
+ func = PFunction.new(key, self, func_spec)
751
+ name = func.name
752
+ raise Puppet::ParseError, _("%{label} conflicts with attribute with the same name") % { label: func.label } if @attributes.include?(name)
753
+ [name, func.assert_override(parent_members)]
754
+ end].freeze
755
+ end
756
+
757
+ @equality_include_type = init_hash[KEY_EQUALITY_INCLUDE_TYPE]
758
+ @equality_include_type = true if @equality_include_type.nil?
759
+
760
+ equality = init_hash[KEY_EQUALITY]
761
+ equality = [equality] if equality.is_a?(String)
762
+ if equality.is_a?(Array)
763
+ unless equality.empty?
764
+ #TRANSLATORS equality_include_type = false should not be translated
765
+ raise Puppet::ParseError, _('equality_include_type = false cannot be combined with non empty equality specification') unless @equality_include_type
766
+ parent_eq_attrs = nil
767
+ equality.each do |attr_name|
768
+
769
+ attr = parent_members[attr_name]
770
+ if attr.nil?
771
+ attr = @attributes[attr_name] || @functions[attr_name]
772
+ elsif attr.is_a?(PAttribute)
773
+ # Assert that attribute is not already include by parent equality
774
+ parent_eq_attrs ||= parent_object_type.equality_attributes
775
+ if parent_eq_attrs.include?(attr_name)
776
+ including_parent = find_equality_definer_of(attr)
777
+ raise Puppet::ParseError, _("%{label} equality is referencing %{attribute} which is included in equality of %{including_parent}") %
778
+ { label: label, attribute: attr.label, including_parent: including_parent.label }
779
+ end
780
+ end
781
+
782
+ unless attr.is_a?(PAttribute)
783
+ if attr.nil?
784
+ raise Puppet::ParseError, _("%{label} equality is referencing non existent attribute '%{attribute}'") % { label: label, attribute: attr_name }
785
+ end
786
+ raise Puppet::ParseError, _("%{label} equality is referencing %{attribute}. Only attribute references are allowed") %
787
+ { label: label, attribute: attr.label }
788
+ end
789
+ if attr.kind == ATTRIBUTE_KIND_CONSTANT
790
+ raise Puppet::ParseError, _("%{label} equality is referencing constant %{attribute}.") % { label: label, attribute: attr.label } + ' ' +
791
+ _("Reference to constant is not allowed in equality")
792
+ end
793
+ end
794
+ end
795
+ equality.freeze
796
+ end
797
+ @equality = equality
798
+
799
+ @checks = init_hash[KEY_CHECKS]
800
+ init_annotatable(init_hash)
801
+ end
802
+
803
+ def [](name)
804
+ member = @attributes[name] || @functions[name]
805
+ if member.nil?
806
+ rp = resolved_parent
807
+ member = rp[name] if rp.is_a?(PObjectType)
808
+ end
809
+ member
810
+ end
811
+
812
+ def accept(visitor, guard)
813
+ guarded_recursion(guard, nil) do |g|
814
+ super(visitor, g)
815
+ @parent.accept(visitor, g) unless parent.nil?
816
+ @type_parameters.values.each { |p| p.accept(visitor, g) }
817
+ @attributes.values.each { |a| a.accept(visitor, g) }
818
+ @functions.values.each { |f| f.accept(visitor, g) }
819
+ end
820
+ end
821
+
822
+ def callable_args?(callable, guard)
823
+ @parent.nil? ? false : @parent.callable_args?(callable, guard)
824
+ end
825
+
826
+ # Returns the type that a initialization hash used for creating instances of this type must conform to.
827
+ #
828
+ # @return [PStructType] the initialization hash type
829
+ # @api public
830
+ def init_hash_type
831
+ @init_hash_type ||= create_init_hash_type
832
+ end
833
+
834
+ def allocate
835
+ implementation_class.allocate
836
+ end
837
+
838
+ def create(*args)
839
+ implementation_class.create(*args)
840
+ end
841
+
842
+ def from_hash(hash)
843
+ implementation_class.from_hash(hash)
844
+ end
845
+
846
+ # Creates the type that a initialization hash used for creating instances of this type must conform to.
847
+ #
848
+ # @return [PStructType] the initialization hash type
849
+ # @api private
850
+ def create_init_hash_type
851
+ struct_elems = {}
852
+ attributes(true).values.each do |attr|
853
+ unless attr.kind == ATTRIBUTE_KIND_CONSTANT || attr.kind == ATTRIBUTE_KIND_DERIVED
854
+ if attr.value?
855
+ struct_elems[TypeFactory.optional(attr.name)] = attr.type
856
+ else
857
+ struct_elems[attr.name] = attr.type
858
+ end
859
+ end
860
+ end
861
+ TypeFactory.struct(struct_elems)
862
+ end
863
+
864
+ # The init_hash is primarily intended for serialization and string representation purposes. It creates a hash
865
+ # suitable for passing to {PObjectType#new(init_hash)}
866
+ #
867
+ # @return [Hash{String=>Object}] the features hash
868
+ # @api public
869
+ def _pcore_init_hash(include_name = true)
870
+ result = super()
871
+ result[KEY_NAME] = @name if include_name && !@name.nil?
872
+ result[KEY_PARENT] = @parent unless @parent.nil?
873
+ result[KEY_TYPE_PARAMETERS] = compressed_members_hash(@type_parameters) unless @type_parameters.empty?
874
+ unless @attributes.empty?
875
+ # Divide attributes into constants and others
876
+ tc = TypeCalculator.singleton
877
+ constants, others = @attributes.partition do |_, a|
878
+ a.kind == ATTRIBUTE_KIND_CONSTANT && a.type == tc.infer(a.value).generalize
879
+ end.map { |ha| Hash[ha] }
880
+
881
+ result[KEY_ATTRIBUTES] = compressed_members_hash(others) unless others.empty?
882
+ unless constants.empty?
883
+ # { kind => 'constant', type => <type of value>, value => <value> } becomes just <value>
884
+ constants.each_pair { |key, a| constants[key] = a.value }
885
+ result[KEY_CONSTANTS] = constants
886
+ end
887
+ end
888
+ result[KEY_FUNCTIONS] = compressed_members_hash(@functions) unless @functions.empty?
889
+ result[KEY_EQUALITY] = @equality unless @equality.nil?
890
+ result[KEY_CHECKS] = @checks unless @checks.nil?
891
+ result
892
+ end
893
+
894
+ def eql?(o)
895
+ self.class == o.class &&
896
+ @name == o.name &&
897
+ @parent == o.parent &&
898
+ @type_parameters == o.type_parameters &&
899
+ @attributes == o.attributes &&
900
+ @functions == o.functions &&
901
+ @equality == o.equality &&
902
+ @checks == o.checks
903
+ end
904
+
905
+ def hash
906
+ @name.nil? ? [@parent, @type_parameters, @attributes, @functions].hash : @name.hash
907
+ end
908
+
909
+ def kind_of_callable?(optional=true, guard = nil)
910
+ @parent.nil? ? false : @parent.kind_of_callable?(optional, guard)
911
+ end
912
+
913
+ def iterable?(guard = nil)
914
+ @parent.nil? ? false : @parent.iterable?(guard)
915
+ end
916
+
917
+ def iterable_type(guard = nil)
918
+ @parent.nil? ? false : @parent.iterable_type(guard)
919
+ end
920
+
921
+ def parameterized?
922
+ if @type_parameters.empty?
923
+ @parent.is_a?(PObjectType) ? @parent.parameterized? : false
924
+ else
925
+ true
926
+ end
927
+ end
928
+
929
+ # Returns the members (attributes and functions) of this `Object` type. If _include_parent_ is `true`, then all
930
+ # inherited members will be included in the returned `Hash`.
931
+ #
932
+ # @param include_parent [Boolean] `true` if inherited members should be included
933
+ # @return [Hash{String=>PAnnotatedMember}] a hash with the members
934
+ # @api public
935
+ def members(include_parent = false)
936
+ get_members(include_parent, :both)
937
+ end
938
+
939
+ # Returns the attributes of this `Object` type. If _include_parent_ is `true`, then all
940
+ # inherited attributes will be included in the returned `Hash`.
941
+ #
942
+ # @param include_parent [Boolean] `true` if inherited attributes should be included
943
+ # @return [Hash{String=>PAttribute}] a hash with the attributes
944
+ # @api public
945
+ def attributes(include_parent = false)
946
+ get_members(include_parent, :attributes)
947
+ end
948
+
949
+ # Returns the attributes that participate in equality comparison. Inherited equality attributes
950
+ # are included.
951
+ # @return [Hash{String=>PAttribute}] a hash of attributes
952
+ # @api public
953
+ def equality_attributes
954
+ all = {}
955
+ collect_equality_attributes(all)
956
+ all
957
+ end
958
+
959
+ # @return [Boolean] `true` if this type is included when comparing instances
960
+ # @api public
961
+ def equality_include_type?
962
+ @equality_include_type
963
+ end
964
+
965
+ # Returns the functions of this `Object` type. If _include_parent_ is `true`, then all
966
+ # inherited functions will be included in the returned `Hash`.
967
+ #
968
+ # @param include_parent [Boolean] `true` if inherited functions should be included
969
+ # @return [Hash{String=>PFunction}] a hash with the functions
970
+ # @api public
971
+ def functions(include_parent = false)
972
+ get_members(include_parent, :functions)
973
+ end
974
+
975
+ DEFAULT = PObjectType.new(EMPTY_HASH)
976
+ # Assert that this type does not inherit from itself
977
+ # @api private
978
+ def check_self_recursion(originator)
979
+ unless @parent.nil?
980
+ raise Puppet::Error, "The Object type '#{originator.label}' inherits from itself" if @parent.equal?(originator)
981
+ @parent.check_self_recursion(originator)
982
+ end
983
+ end
984
+
985
+ # @api private
986
+ def label
987
+ @name || 'Object'
988
+ end
989
+
990
+ # @api private
991
+ def resolved_parent
992
+ parent = @parent
993
+ while parent.is_a?(PTypeAliasType)
994
+ parent = parent.resolved_type
995
+ end
996
+ parent
997
+ end
998
+
999
+ def simple_name
1000
+ label.split(DOUBLE_COLON).last
1001
+ end
1002
+
1003
+ # Returns the type_parameters of this `Object` type. If _include_parent_ is `true`, then all
1004
+ # inherited type_parameters will be included in the returned `Hash`.
1005
+ #
1006
+ # @param include_parent [Boolean] `true` if inherited type_parameters should be included
1007
+ # @return [Hash{String=>PTypeParameter}] a hash with the type_parameters
1008
+ # @api public
1009
+ def type_parameters(include_parent = false)
1010
+ all = {}
1011
+ collect_type_parameters(all, include_parent)
1012
+ all
1013
+ end
1014
+
1015
+ protected
1016
+
1017
+ # An Object type is only assignable from another Object type. The other type
1018
+ # or one of its parents must be equal to this type.
1019
+ def _assignable?(o, guard)
1020
+ if o.is_a?(PObjectType)
1021
+ if DEFAULT == self || self == o
1022
+ true
1023
+ else
1024
+ op = o.parent
1025
+ op.nil? ? false : assignable?(op, guard)
1026
+ end
1027
+ elsif o.is_a?(PObjectTypeExtension)
1028
+ assignable?(o.base_type, guard)
1029
+ else
1030
+ false
1031
+ end
1032
+ end
1033
+
1034
+ def get_members(include_parent, member_type)
1035
+ all = {}
1036
+ collect_members(all, include_parent, member_type)
1037
+ all
1038
+ end
1039
+
1040
+ def collect_members(collector, include_parent, member_type)
1041
+ if include_parent
1042
+ parent = resolved_parent
1043
+ parent.collect_members(collector, include_parent, member_type) if parent.is_a?(PObjectType)
1044
+ end
1045
+ collector.merge!(@attributes) unless member_type == :functions
1046
+ collector.merge!(@functions) unless member_type == :attributes
1047
+ nil
1048
+ end
1049
+
1050
+ def collect_equality_attributes(collector)
1051
+ parent = resolved_parent
1052
+ parent.collect_equality_attributes(collector) if parent.is_a?(PObjectType)
1053
+ if @equality.nil?
1054
+ # All attributes except constants participate
1055
+ collector.merge!(@attributes.reject { |_, attr| attr.kind == ATTRIBUTE_KIND_CONSTANT })
1056
+ else
1057
+ collector.merge!(Hash[@equality.map { |attr_name| [attr_name, @attributes[attr_name]] }])
1058
+ end
1059
+ nil
1060
+ end
1061
+
1062
+ def collect_type_parameters(collector, include_parent)
1063
+ if include_parent
1064
+ parent = resolved_parent
1065
+ parent.collect_type_parameters(collector, include_parent) if parent.is_a?(PObjectType)
1066
+ end
1067
+ collector.merge!(@type_parameters)
1068
+ nil
1069
+ end
1070
+
1071
+ private
1072
+
1073
+ def compressed_members_hash(features)
1074
+ Hash[features.values.map do |feature|
1075
+ fh = feature._pcore_init_hash
1076
+ if fh.size == 1
1077
+ type = fh[KEY_TYPE]
1078
+ fh = type unless type.nil?
1079
+ end
1080
+ [feature.name, fh]
1081
+ end]
1082
+ end
1083
+
1084
+ # @return [PObjectType] the topmost parent who's #equality_attributes include the given _attr_
1085
+ def find_equality_definer_of(attr)
1086
+ type = self
1087
+ while !type.nil? do
1088
+ p = type.resolved_parent
1089
+ return type unless p.is_a?(PObjectType)
1090
+ return type unless p.equality_attributes.include?(attr.name)
1091
+ type = p
1092
+ end
1093
+ nil
1094
+ end
1095
+
1096
+ def guarded_recursion(guard, dflt)
1097
+ if @self_recursion
1098
+ guard ||= RecursionGuard.new
1099
+ guard.with_this(self) { |state| (state & RecursionGuard::SELF_RECURSION_IN_THIS) == 0 ? yield(guard) : dflt }
1100
+ else
1101
+ yield(guard)
1102
+ end
1103
+ end
1104
+
1105
+ def reader
1106
+ @reader ||= Serialization::ObjectReader::INSTANCE
1107
+ end
1108
+
1109
+ def writer
1110
+ @writer ||= Serialization::ObjectWriter::INSTANCE
1111
+ end
1112
+ end
1113
+ end
1114
+ end