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,143 @@
1
+ module Puppet::Pops
2
+ module Parser
3
+ module HeredocSupport
4
+ include LexerSupport
5
+
6
+ # Pattern for heredoc `@(endtag[:syntax][/escapes])
7
+ # Produces groups for endtag (group 1), syntax (group 2), and escapes (group 3)
8
+ #
9
+ PATTERN_HEREDOC = %r{@\(([^:/\r\n\)]+)(?::[[:blank:]]*([a-z][a-zA-Z0-9_+]+)[[:blank:]]*)?(?:/((?:\w|[$])*)[[:blank:]]*)?\)}
10
+
11
+
12
+ def heredoc
13
+ scn = @scanner
14
+ ctx = @lexing_context
15
+ locator = @locator
16
+ before = scn.pos
17
+
18
+ # scanner is at position before @(
19
+ # find end of the heredoc spec
20
+ str = scn.scan_until(/\)/) || lex_error(Issues::HEREDOC_UNCLOSED_PARENTHESIS, :followed_by => followed_by)
21
+ pos_after_heredoc = scn.pos
22
+ # Note: allows '+' as separator in syntax, but this needs validation as empty segments are not allowed
23
+ md = str.match(PATTERN_HEREDOC)
24
+ lex_error(Issues::HEREDOC_INVALID_SYNTAX) unless md
25
+ endtag = md[1]
26
+ syntax = md[2] || ''
27
+ escapes = md[3]
28
+
29
+ endtag.strip!
30
+
31
+ # Is this a dq string style heredoc? (endtag enclosed in "")
32
+ if endtag =~ /^"(.*)"$/
33
+ dqstring_style = true
34
+ endtag = $1.strip
35
+ end
36
+
37
+ lex_error(Issues::HEREDOC_EMPTY_ENDTAG) unless endtag.length >= 1
38
+
39
+ resulting_escapes = []
40
+ if escapes
41
+ escapes = "trnsuL$" if escapes.length < 1
42
+
43
+ escapes = escapes.split('')
44
+ unless escapes.length == escapes.uniq.length
45
+ lex_error(Issues::HEREDOC_MULTIPLE_AT_ESCAPES, :escapes => escapes)
46
+ end
47
+ resulting_escapes = ["\\"]
48
+ escapes.each do |e|
49
+ case e
50
+ when "t", "r", "n", "s", "u", "$"
51
+ resulting_escapes << e
52
+ when "L"
53
+ resulting_escapes += ["\n", "\r\n"]
54
+ else
55
+ lex_error(Issues::HEREDOC_INVALID_ESCAPE, :actual => e)
56
+ end
57
+ end
58
+ end
59
+
60
+ # Produce a heredoc token to make the syntax available to the grammar
61
+ enqueue_completed([:HEREDOC, syntax, pos_after_heredoc - before], before)
62
+
63
+ # If this is the second or subsequent heredoc on the line, the lexing context's :newline_jump contains
64
+ # the position after the \n where the next heredoc text should scan. If not set, this is the first
65
+ # and it should start scanning after the first found \n (or if not found == error).
66
+
67
+ if ctx[:newline_jump]
68
+ scn.pos = ctx[:newline_jump]
69
+ else
70
+ scn.scan_until(/\n/) || lex_error(Issues::HEREDOC_WITHOUT_TEXT)
71
+ end
72
+ # offset 0 for the heredoc, and its line number
73
+ heredoc_offset = scn.pos
74
+ heredoc_line = locator.line_for_offset(heredoc_offset)-1
75
+
76
+ # Compute message to emit if there is no end (to make it refer to the opening heredoc position).
77
+ eof_error = create_lex_error(Issues::HEREDOC_WITHOUT_END_TAGGED_LINE)
78
+
79
+ # Text from this position (+ lexing contexts offset for any preceding heredoc) is heredoc until a line
80
+ # that terminates the heredoc is found.
81
+
82
+ # (Endline in EBNF form): WS* ('|' WS*)? ('-' WS*)? endtag WS* \r? (\n|$)
83
+ endline_pattern = /([[:blank:]]*)(?:([|])[[:blank:]]*)?(?:(\-)[[:blank:]]*)?#{Regexp.escape(endtag)}[[:blank:]]*\r?(?:\n|\z)/
84
+ lines = []
85
+ while !scn.eos? do
86
+ one_line = scn.scan_until(/(?:\n|\z)/)
87
+ raise eof_error unless one_line
88
+ if md = one_line.match(endline_pattern)
89
+ leading = md[1]
90
+ has_margin = md[2] == '|'
91
+ remove_break = md[3] == '-'
92
+ # Record position where next heredoc (from same line as current @()) should start scanning for content
93
+ ctx[:newline_jump] = scn.pos
94
+
95
+
96
+ # Process captured lines - remove leading, and trailing newline
97
+ str = heredoc_text(lines, leading, has_margin, remove_break)
98
+
99
+ # Use a new lexer instance configured with a sub-locator to enable correct positioning
100
+ sublexer = self.class.new()
101
+ locator = Locator::SubLocator.sub_locator(str,
102
+ locator.file, heredoc_line, heredoc_offset, leading.length())
103
+
104
+ # Emit a token that provides the grammar with location information about the lines on which the heredoc
105
+ # content is based.
106
+ enqueue([:SUBLOCATE,
107
+ LexerSupport::TokenValue.new([:SUBLOCATE,
108
+ lines, lines.reduce(0) {|size, s| size + s.length} ],
109
+ heredoc_offset,
110
+ locator)])
111
+
112
+ sublexer.lex_unquoted_string(str, locator, resulting_escapes, dqstring_style)
113
+ sublexer.interpolate_uq_to(self)
114
+ # Continue scan after @(...)
115
+ scn.pos = pos_after_heredoc
116
+ return
117
+ else
118
+ lines << one_line
119
+ end
120
+ end
121
+ raise eof_error
122
+ end
123
+
124
+ # Produces the heredoc text string given the individual (unprocessed) lines as an array.
125
+ # @param lines [Array<String>] unprocessed lines of text in the heredoc w/o terminating line
126
+ # @param leading [String] the leading text up (up to pipe or other terminating char)
127
+ # @param has_margin [Boolean] if the left margin should be adjusted as indicated by `leading`
128
+ # @param remove_break [Boolean] if the line break (\r?\n) at the end of the last line should be removed or not
129
+ #
130
+ def heredoc_text(lines, leading, has_margin, remove_break)
131
+ if has_margin
132
+ leading_pattern = /^#{Regexp.escape(leading)}/
133
+ lines = lines.collect {|s| s.gsub(leading_pattern, '') }
134
+ end
135
+ result = lines.join('')
136
+ result.gsub!(/\r?\n\z/m, '') if remove_break
137
+ result
138
+ end
139
+
140
+
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,244 @@
1
+ # This module is an integral part of the Lexer.
2
+ # It defines interpolation support
3
+ # PERFORMANCE NOTE: There are 4 very similar methods in this module that are designed to be as
4
+ # performant as possible. While it is possible to parameterize them into one common method, the overhead
5
+ # of passing parameters and evaluating conditional logic has a negative impact on performance.
6
+ #
7
+ module Puppet::Pops::Parser::InterpolationSupport
8
+
9
+ PATTERN_VARIABLE = %r{(::)?(\w+::)*\w+}
10
+
11
+ # This is the starting point for a double quoted string with possible interpolation
12
+ # The structure mimics that of the grammar.
13
+ # The logic is explicit (where the former implementation used parameters/structures) given to a
14
+ # generic handler.
15
+ # (This is both easier to understand and faster).
16
+ #
17
+ def interpolate_dq
18
+ scn = @scanner
19
+ ctx = @lexing_context
20
+ before = scn.pos
21
+ # skip the leading " by doing a scan since the slurp_dqstring uses last matched when there is an error
22
+ scn.scan(/"/)
23
+ value,terminator = slurp_dqstring()
24
+ text = value
25
+ after = scn.pos
26
+ while true
27
+ case terminator
28
+ when '"'
29
+ # simple case, there was no interpolation, return directly
30
+ return emit_completed([:STRING, text, scn.pos-before], before)
31
+ when '${'
32
+ count = ctx[:brace_count]
33
+ ctx[:brace_count] += 1
34
+ # The ${ terminator is counted towards the string part
35
+ enqueue_completed([:DQPRE, text, scn.pos-before], before)
36
+ # Lex expression tokens until a closing (balanced) brace count is reached
37
+ enqueue_until count
38
+ break
39
+ when '$'
40
+ if varname = scn.scan(PATTERN_VARIABLE)
41
+ # The $ is counted towards the variable
42
+ enqueue_completed([:DQPRE, text, after-before-1], before)
43
+ enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
44
+ break
45
+ else
46
+ # false $ variable start
47
+ text += terminator
48
+ value,terminator = slurp_dqstring()
49
+ text += value
50
+ after = scn.pos
51
+ end
52
+ end
53
+ end
54
+ interpolate_tail_dq
55
+ # return the first enqueued token and shift the queue
56
+ @token_queue.shift
57
+ end
58
+
59
+ def interpolate_tail_dq
60
+ scn = @scanner
61
+ ctx = @lexing_context
62
+ before = scn.pos
63
+ value,terminator = slurp_dqstring
64
+ text = value
65
+ after = scn.pos
66
+ while true
67
+ case terminator
68
+ when '"'
69
+ # simple case, there was no further interpolation, return directly
70
+ enqueue_completed([:DQPOST, text, scn.pos-before], before)
71
+ return
72
+ when '${'
73
+ count = ctx[:brace_count]
74
+ ctx[:brace_count] += 1
75
+ # The ${ terminator is counted towards the string part
76
+ enqueue_completed([:DQMID, text, scn.pos-before], before)
77
+ # Lex expression tokens until a closing (balanced) brace count is reached
78
+ enqueue_until count
79
+ break
80
+ when '$'
81
+ if varname = scn.scan(PATTERN_VARIABLE)
82
+ # The $ is counted towards the variable
83
+ enqueue_completed([:DQMID, text, after-before-1], before)
84
+ enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
85
+ break
86
+ else
87
+ # false $ variable start
88
+ text += terminator
89
+ value,terminator = slurp_dqstring
90
+ text += value
91
+ after = scn.pos
92
+ end
93
+ end
94
+ end
95
+ interpolate_tail_dq
96
+ end
97
+
98
+ # This is the starting point for a un-quoted string with possible interpolation
99
+ # The logic is explicit (where the former implementation used parameters/strucures) given to a
100
+ # generic handler.
101
+ # (This is both easier to understand and faster).
102
+ #
103
+ def interpolate_uq
104
+ scn = @scanner
105
+ ctx = @lexing_context
106
+ before = scn.pos
107
+ value,terminator = slurp_uqstring()
108
+ text = value
109
+ after = scn.pos
110
+ while true
111
+ case terminator
112
+ when ''
113
+ # simple case, there was no interpolation, return directly
114
+ enqueue_completed([:STRING, text, scn.pos-before], before)
115
+ return
116
+ when '${'
117
+ count = ctx[:brace_count]
118
+ ctx[:brace_count] += 1
119
+ # The ${ terminator is counted towards the string part
120
+ enqueue_completed([:DQPRE, text, scn.pos-before], before)
121
+ # Lex expression tokens until a closing (balanced) brace count is reached
122
+ enqueue_until count
123
+ break
124
+ when '$'
125
+ if varname = scn.scan(PATTERN_VARIABLE)
126
+ # The $ is counted towards the variable
127
+ enqueue_completed([:DQPRE, text, after-before-1], before)
128
+ enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
129
+ break
130
+ else
131
+ # false $ variable start
132
+ text += terminator
133
+ value,terminator = slurp_uqstring()
134
+ text += value
135
+ after = scn.pos
136
+ end
137
+ end
138
+ end
139
+ interpolate_tail_uq
140
+ nil
141
+ end
142
+
143
+ def interpolate_tail_uq
144
+ scn = @scanner
145
+ ctx = @lexing_context
146
+ before = scn.pos
147
+ value,terminator = slurp_uqstring
148
+ text = value
149
+ after = scn.pos
150
+ while true
151
+ case terminator
152
+ when ''
153
+ # simple case, there was no further interpolation, return directly
154
+ enqueue_completed([:DQPOST, text, scn.pos-before], before)
155
+ return
156
+ when '${'
157
+ count = ctx[:brace_count]
158
+ ctx[:brace_count] += 1
159
+ # The ${ terminator is counted towards the string part
160
+ enqueue_completed([:DQMID, text, scn.pos-before], before)
161
+ # Lex expression tokens until a closing (balanced) brace count is reached
162
+ enqueue_until count
163
+ break
164
+ when '$'
165
+ if varname = scn.scan(PATTERN_VARIABLE)
166
+ # The $ is counted towards the variable
167
+ enqueue_completed([:DQMID, text, after-before-1], before)
168
+ enqueue_completed([:VARIABLE, varname, scn.pos - after + 1], after - 1)
169
+ break
170
+ else
171
+ # false $ variable start
172
+ text += terminator
173
+ value,terminator = slurp_uqstring
174
+ text += value
175
+ after = scn.pos
176
+ end
177
+ end
178
+ end
179
+ interpolate_tail_uq
180
+ end
181
+
182
+ # Enqueues lexed tokens until either end of input, or the given brace_count is reached
183
+ #
184
+ def enqueue_until brace_count
185
+ scn = @scanner
186
+ ctx = @lexing_context
187
+ queue = @token_queue
188
+ queue_base = @token_queue[0]
189
+
190
+ scn.skip(self.class::PATTERN_WS)
191
+ queue_size = queue.size
192
+ until scn.eos? do
193
+ if token = lex_token
194
+ if token.equal?(queue_base)
195
+ # A nested #interpolate_dq call shifted the queue_base token from the @token_queue. It must
196
+ # be put back since it is intended for the top level #interpolate_dq call only.
197
+ queue.insert(0, token)
198
+ next # all relevant tokens are already on the queue
199
+ end
200
+ token_name = token[0]
201
+ ctx[:after] = token_name
202
+ if token_name == :RBRACE && ctx[:brace_count] == brace_count
203
+ qlength = queue.size - queue_size
204
+ if qlength == 1
205
+ # Single token is subject to replacement
206
+ queue[-1] = transform_to_variable(queue[-1])
207
+ elsif qlength > 1 && [:DOT, :LBRACK].include?(queue[queue_size + 1][0])
208
+ # A first word, number of name token followed by '[' or '.' is subject to replacement
209
+ # But not for other operators such as ?, +, - etc. where user must use a $ before the name
210
+ # to get a variable
211
+ queue[queue_size] = transform_to_variable(queue[queue_size])
212
+ end
213
+ return
214
+ end
215
+ queue << token
216
+ else
217
+ scn.skip(self.class::PATTERN_WS)
218
+ end
219
+ end
220
+ end
221
+
222
+ def transform_to_variable(token)
223
+ token_name = token[0]
224
+ if [:NUMBER, :NAME, :WORD].include?(token_name) || self.class::KEYWORD_NAMES[token_name] || @taskm_keywords[token_name]
225
+ t = token[1]
226
+ ta = t.token_array
227
+ [:VARIABLE, self.class::TokenValue.new([:VARIABLE, ta[1], ta[2]], t.offset, t.locator)]
228
+ else
229
+ token
230
+ end
231
+ end
232
+
233
+ # Interpolates unquoted string and transfers the result to the given lexer
234
+ # (This is used when a second lexer instance is used to lex a substring)
235
+ #
236
+ def interpolate_uq_to(lexer)
237
+ interpolate_uq
238
+ queue = @token_queue
239
+ until queue.empty? do
240
+ lexer.enqueue(queue.shift)
241
+ end
242
+ end
243
+
244
+ end
@@ -0,0 +1,772 @@
1
+ # The Lexer is responsible for turning source text into tokens.
2
+ # This version is a performance enhanced lexer (in comparison to the 3.x and earlier "future parser" lexer.
3
+ #
4
+ # Old returns tokens [:KEY, value, { locator = }
5
+ # Could return [[token], locator]
6
+ # or Token.new([token], locator) with the same API x[0] = token_symbol, x[1] = self, x[:key] = (:value, :file, :line, :pos) etc
7
+
8
+ require 'strscan'
9
+ require 'puppet/pops/parser/lexer_support'
10
+ require 'puppet/pops/parser/heredoc_support'
11
+ require 'puppet/pops/parser/interpolation_support'
12
+ require 'puppet/pops/parser/epp_support'
13
+ require 'puppet/pops/parser/slurp_support'
14
+
15
+ module Puppet::Pops
16
+ module Parser
17
+ class Lexer2
18
+ include LexerSupport
19
+ include HeredocSupport
20
+ include InterpolationSupport
21
+ include SlurpSupport
22
+ include EppSupport
23
+
24
+ # ALl tokens have three slots, the token name (a Symbol), the token text (String), and a token text length.
25
+ # All operator and punctuation tokens reuse singleton arrays Tokens that require unique values create
26
+ # a unique array per token.
27
+ #
28
+ # PEFORMANCE NOTES:
29
+ # This construct reduces the amount of object that needs to be created for operators and punctuation.
30
+ # The length is pre-calculated for all singleton tokens. The length is used both to signal the length of
31
+ # the token, and to advance the scanner position (without having to advance it with a scan(regexp)).
32
+ #
33
+ TOKEN_LBRACK = [:LBRACK, '['.freeze, 1].freeze
34
+ TOKEN_LISTSTART = [:LISTSTART, '['.freeze, 1].freeze
35
+ TOKEN_RBRACK = [:RBRACK, ']'.freeze, 1].freeze
36
+ TOKEN_LBRACE = [:LBRACE, '{'.freeze, 1].freeze
37
+ TOKEN_RBRACE = [:RBRACE, '}'.freeze, 1].freeze
38
+ TOKEN_SELBRACE = [:SELBRACE, '{'.freeze, 1].freeze
39
+ TOKEN_LPAREN = [:LPAREN, '('.freeze, 1].freeze
40
+ TOKEN_WSLPAREN = [:WSLPAREN, '('.freeze, 1].freeze
41
+ TOKEN_RPAREN = [:RPAREN, ')'.freeze, 1].freeze
42
+
43
+ TOKEN_EQUALS = [:EQUALS, '='.freeze, 1].freeze
44
+ TOKEN_APPENDS = [:APPENDS, '+='.freeze, 2].freeze
45
+ TOKEN_DELETES = [:DELETES, '-='.freeze, 2].freeze
46
+
47
+ TOKEN_ISEQUAL = [:ISEQUAL, '=='.freeze, 2].freeze
48
+ TOKEN_NOTEQUAL = [:NOTEQUAL, '!='.freeze, 2].freeze
49
+ TOKEN_MATCH = [:MATCH, '=~'.freeze, 2].freeze
50
+ TOKEN_NOMATCH = [:NOMATCH, '!~'.freeze, 2].freeze
51
+ TOKEN_GREATEREQUAL = [:GREATEREQUAL, '>='.freeze, 2].freeze
52
+ TOKEN_GREATERTHAN = [:GREATERTHAN, '>'.freeze, 1].freeze
53
+ TOKEN_LESSEQUAL = [:LESSEQUAL, '<='.freeze, 2].freeze
54
+ TOKEN_LESSTHAN = [:LESSTHAN, '<'.freeze, 1].freeze
55
+
56
+ TOKEN_FARROW = [:FARROW, '=>'.freeze, 2].freeze
57
+ TOKEN_PARROW = [:PARROW, '+>'.freeze, 2].freeze
58
+
59
+ TOKEN_LSHIFT = [:LSHIFT, '<<'.freeze, 2].freeze
60
+ TOKEN_LLCOLLECT = [:LLCOLLECT, '<<|'.freeze, 3].freeze
61
+ TOKEN_LCOLLECT = [:LCOLLECT, '<|'.freeze, 2].freeze
62
+
63
+ TOKEN_RSHIFT = [:RSHIFT, '>>'.freeze, 2].freeze
64
+ TOKEN_RRCOLLECT = [:RRCOLLECT, '|>>'.freeze, 3].freeze
65
+ TOKEN_RCOLLECT = [:RCOLLECT, '|>'.freeze, 2].freeze
66
+
67
+ TOKEN_PLUS = [:PLUS, '+'.freeze, 1].freeze
68
+ TOKEN_MINUS = [:MINUS, '-'.freeze, 1].freeze
69
+ TOKEN_DIV = [:DIV, '/'.freeze, 1].freeze
70
+ TOKEN_TIMES = [:TIMES, '*'.freeze, 1].freeze
71
+ TOKEN_MODULO = [:MODULO, '%'.freeze, 1].freeze
72
+
73
+ TOKEN_NOT = [:NOT, '!'.freeze, 1].freeze
74
+ TOKEN_DOT = [:DOT, '.'.freeze, 1].freeze
75
+ TOKEN_PIPE = [:PIPE, '|'.freeze, 1].freeze
76
+ TOKEN_AT = [:AT , '@'.freeze, 1].freeze
77
+ TOKEN_ATAT = [:ATAT , '@@'.freeze, 2].freeze
78
+ TOKEN_COLON = [:COLON, ':'.freeze, 1].freeze
79
+ TOKEN_COMMA = [:COMMA, ','.freeze, 1].freeze
80
+ TOKEN_SEMIC = [:SEMIC, ';'.freeze, 1].freeze
81
+ TOKEN_QMARK = [:QMARK, '?'.freeze, 1].freeze
82
+ TOKEN_TILDE = [:TILDE, '~'.freeze, 1].freeze # lexed but not an operator in Puppet
83
+
84
+ TOKEN_REGEXP = [:REGEXP, nil, 0].freeze
85
+
86
+ TOKEN_IN_EDGE = [:IN_EDGE, '->'.freeze, 2].freeze
87
+ TOKEN_IN_EDGE_SUB = [:IN_EDGE_SUB, '~>'.freeze, 2].freeze
88
+ TOKEN_OUT_EDGE = [:OUT_EDGE, '<-'.freeze, 2].freeze
89
+ TOKEN_OUT_EDGE_SUB = [:OUT_EDGE_SUB, '<~'.freeze, 2].freeze
90
+
91
+ # Tokens that are always unique to what has been lexed
92
+ TOKEN_STRING = [:STRING, nil, 0].freeze
93
+ TOKEN_WORD = [:WORD, nil, 0].freeze
94
+ TOKEN_DQPRE = [:DQPRE, nil, 0].freeze
95
+ TOKEN_DQMID = [:DQPRE, nil, 0].freeze
96
+ TOKEN_DQPOS = [:DQPRE, nil, 0].freeze
97
+ TOKEN_NUMBER = [:NUMBER, nil, 0].freeze
98
+ TOKEN_VARIABLE = [:VARIABLE, nil, 1].freeze
99
+ TOKEN_VARIABLE_EMPTY = [:VARIABLE, ''.freeze, 1].freeze
100
+
101
+ # HEREDOC has syntax as an argument.
102
+ TOKEN_HEREDOC = [:HEREDOC, nil, 0].freeze
103
+
104
+ # EPP_START is currently a marker token, may later get syntax
105
+ TOKEN_EPPSTART = [:EPP_START, nil, 0].freeze
106
+ TOKEN_EPPEND = [:EPP_END, '%>', 2].freeze
107
+ TOKEN_EPPEND_TRIM = [:EPP_END_TRIM, '-%>', 3].freeze
108
+
109
+ # This is used for unrecognized tokens, will always be a single character. This particular instance
110
+ # is not used, but is kept here for documentation purposes.
111
+ TOKEN_OTHER = [:OTHER, nil, 0]
112
+
113
+ # Keywords are all singleton tokens with pre calculated lengths.
114
+ # Booleans are pre-calculated (rather than evaluating the strings "false" "true" repeatedly.
115
+ #
116
+ KEYWORDS = {
117
+ 'case' => [:CASE, 'case', 4],
118
+ 'class' => [:CLASS, 'class', 5],
119
+ 'default' => [:DEFAULT, 'default', 7],
120
+ 'define' => [:DEFINE, 'define', 6],
121
+ 'if' => [:IF, 'if', 2],
122
+ 'elsif' => [:ELSIF, 'elsif', 5],
123
+ 'else' => [:ELSE, 'else', 4],
124
+ 'inherits' => [:INHERITS, 'inherits', 8],
125
+ 'node' => [:NODE, 'node', 4],
126
+ 'and' => [:AND, 'and', 3],
127
+ 'or' => [:OR, 'or', 2],
128
+ 'undef' => [:UNDEF, 'undef', 5],
129
+ 'false' => [:BOOLEAN, false, 5],
130
+ 'true' => [:BOOLEAN, true, 4],
131
+ 'in' => [:IN, 'in', 2],
132
+ 'unless' => [:UNLESS, 'unless', 6],
133
+ 'function' => [:FUNCTION, 'function', 8],
134
+ 'type' => [:TYPE, 'type', 4],
135
+ 'attr' => [:ATTR, 'attr', 4],
136
+ 'private' => [:PRIVATE, 'private', 7],
137
+ 'application' => [:APPLICATION, 'application', 11],
138
+ 'consumes' => [:CONSUMES, 'consumes', 8],
139
+ 'produces' => [:PRODUCES, 'produces', 8],
140
+ 'site' => [:SITE, 'site', 4],
141
+ }
142
+
143
+ KEYWORDS.each {|k,v| v[1].freeze; v.freeze }
144
+ KEYWORDS.freeze
145
+
146
+ # Reverse lookup of keyword name to string
147
+ KEYWORD_NAMES = {}
148
+ KEYWORDS.each {|k, v| KEYWORD_NAMES[v[0]] = k }
149
+ KEYWORD_NAMES.freeze
150
+
151
+ PATTERN_WS = %r{[[:blank:]\r]+}
152
+ PATTERN_NON_WS = %r{\w+\b?}
153
+
154
+ # The single line comment includes the line ending.
155
+ PATTERN_COMMENT = %r{#.*\r?}
156
+ PATTERN_MLCOMMENT = %r{/\*(.*?)\*/}m
157
+
158
+ PATTERN_REGEX = %r{/[^/]*/}
159
+ PATTERN_REGEX_END = %r{/}
160
+ PATTERN_REGEX_A = %r{\A/} # for replacement to ""
161
+ PATTERN_REGEX_Z = %r{/\Z} # for replacement to ""
162
+ PATTERN_REGEX_ESC = %r{\\/} # for replacement to "/"
163
+
164
+ # The 3x patterns:
165
+ # PATTERN_CLASSREF = %r{((::){0,1}[A-Z][-\w]*)+}
166
+ # PATTERN_NAME = %r{((::)?[a-z0-9][-\w]*)(::[a-z0-9][-\w]*)*}
167
+
168
+ # The NAME and CLASSREF in 4x are strict. Each segment must start with
169
+ # a letter a-z and may not contain dashes (\w includes letters, digits and _).
170
+ #
171
+ PATTERN_CLASSREF = %r{((::){0,1}[A-Z][\w]*)+}
172
+ PATTERN_NAME = %r{^((::)?[a-z][\w]*)(::[a-z][\w]*)*$}
173
+
174
+ PATTERN_BARE_WORD = %r{((?:::){0,1}(?:[a-z_](?:[\w-]*[\w])?))+}
175
+
176
+ PATTERN_DOLLAR_VAR = %r{\$(::)?(\w+::)*\w+}
177
+ PATTERN_NUMBER = %r{\b(?:0[xX][0-9A-Fa-f]+|0?\d+(?:\.\d+)?(?:[eE]-?\d+)?)\b}
178
+
179
+ # PERFORMANCE NOTE:
180
+ # Comparison against a frozen string is faster (than unfrozen).
181
+ #
182
+ STRING_BSLASH_SLASH = '\/'.freeze
183
+
184
+ attr_reader :locator
185
+
186
+ def initialize()
187
+ @selector = {
188
+ '.' => lambda { emit(TOKEN_DOT, @scanner.pos) },
189
+ ',' => lambda { emit(TOKEN_COMMA, @scanner.pos) },
190
+ '[' => lambda do
191
+ before = @scanner.pos
192
+ if (before == 0 || @scanner.string[locator.char_offset(before)-1,1] =~ /[[:blank:]\r\n]+/)
193
+ emit(TOKEN_LISTSTART, before)
194
+ else
195
+ emit(TOKEN_LBRACK, before)
196
+ end
197
+ end,
198
+ ']' => lambda { emit(TOKEN_RBRACK, @scanner.pos) },
199
+ '(' => lambda do
200
+ before = @scanner.pos
201
+ # If first on a line, or only whitespace between start of line and '('
202
+ # then the token is special to avoid being taken as start of a call.
203
+ line_start = @lexing_context[:line_lexical_start]
204
+ if before == line_start || @scanner.string.byteslice(line_start, before - line_start) =~ /\A[[:blank:]\r]+\Z/
205
+ emit(TOKEN_WSLPAREN, before)
206
+ else
207
+ emit(TOKEN_LPAREN, before)
208
+ end
209
+ end,
210
+ ')' => lambda { emit(TOKEN_RPAREN, @scanner.pos) },
211
+ ';' => lambda { emit(TOKEN_SEMIC, @scanner.pos) },
212
+ '?' => lambda { emit(TOKEN_QMARK, @scanner.pos) },
213
+ '*' => lambda { emit(TOKEN_TIMES, @scanner.pos) },
214
+ '%' => lambda do
215
+ scn = @scanner
216
+ before = scn.pos
217
+ la = scn.peek(2)
218
+ if la[1] == '>' && @lexing_context[:epp_mode]
219
+ scn.pos += 2
220
+ if @lexing_context[:epp_mode] == :expr
221
+ enqueue_completed(TOKEN_EPPEND, before)
222
+ end
223
+ @lexing_context[:epp_mode] = :text
224
+ interpolate_epp
225
+ else
226
+ emit(TOKEN_MODULO, before)
227
+ end
228
+ end,
229
+ '{' => lambda do
230
+ # The lexer needs to help the parser since the technology used cannot deal with
231
+ # lookahead of same token with different precedence. This is solved by making left brace
232
+ # after ? into a separate token.
233
+ #
234
+ @lexing_context[:brace_count] += 1
235
+ emit(if @lexing_context[:after] == :QMARK
236
+ TOKEN_SELBRACE
237
+ else
238
+ TOKEN_LBRACE
239
+ end, @scanner.pos)
240
+ end,
241
+ '}' => lambda do
242
+ @lexing_context[:brace_count] -= 1
243
+ emit(TOKEN_RBRACE, @scanner.pos)
244
+ end,
245
+
246
+
247
+ # TOKENS @, @@, @(
248
+ '@' => lambda do
249
+ scn = @scanner
250
+ la = scn.peek(2)
251
+ if la[1] == '@'
252
+ emit(TOKEN_ATAT, scn.pos) # TODO; Check if this is good for the grammar
253
+ elsif la[1] == '('
254
+ heredoc
255
+ else
256
+ emit(TOKEN_AT, scn.pos)
257
+ end
258
+ end,
259
+
260
+ # TOKENS |, |>, |>>
261
+ '|' => lambda do
262
+ scn = @scanner
263
+ la = scn.peek(3)
264
+ emit(la[1] == '>' ? (la[2] == '>' ? TOKEN_RRCOLLECT : TOKEN_RCOLLECT) : TOKEN_PIPE, scn.pos)
265
+ end,
266
+
267
+ # TOKENS =, =>, ==, =~
268
+ '=' => lambda do
269
+ scn = @scanner
270
+ la = scn.peek(2)
271
+ emit(case la[1]
272
+ when '='
273
+ TOKEN_ISEQUAL
274
+ when '>'
275
+ TOKEN_FARROW
276
+ when '~'
277
+ TOKEN_MATCH
278
+ else
279
+ TOKEN_EQUALS
280
+ end, scn.pos)
281
+ end,
282
+
283
+ # TOKENS '+', '+=', and '+>'
284
+ '+' => lambda do
285
+ scn = @scanner
286
+ la = scn.peek(2)
287
+ emit(case la[1]
288
+ when '='
289
+ TOKEN_APPENDS
290
+ when '>'
291
+ TOKEN_PARROW
292
+ else
293
+ TOKEN_PLUS
294
+ end, scn.pos)
295
+ end,
296
+
297
+ # TOKENS '-', '->', and epp '-%>' (end of interpolation with trim)
298
+ '-' => lambda do
299
+ scn = @scanner
300
+ la = scn.peek(3)
301
+ before = scn.pos
302
+ if @lexing_context[:epp_mode] && la[1] == '%' && la[2] == '>'
303
+ scn.pos += 3
304
+ if @lexing_context[:epp_mode] == :expr
305
+ enqueue_completed(TOKEN_EPPEND_TRIM, before)
306
+ end
307
+ interpolate_epp(:with_trim)
308
+ else
309
+ emit(case la[1]
310
+ when '>'
311
+ TOKEN_IN_EDGE
312
+ when '='
313
+ TOKEN_DELETES
314
+ else
315
+ TOKEN_MINUS
316
+ end, before)
317
+ end
318
+ end,
319
+
320
+ # TOKENS !, !=, !~
321
+ '!' => lambda do
322
+ scn = @scanner
323
+ la = scn.peek(2)
324
+ emit(case la[1]
325
+ when '='
326
+ TOKEN_NOTEQUAL
327
+ when '~'
328
+ TOKEN_NOMATCH
329
+ else
330
+ TOKEN_NOT
331
+ end, scn.pos)
332
+ end,
333
+
334
+ # TOKENS ~>, ~
335
+ '~' => lambda do
336
+ scn = @scanner
337
+ la = scn.peek(2)
338
+ emit(la[1] == '>' ? TOKEN_IN_EDGE_SUB : TOKEN_TILDE, scn.pos)
339
+ end,
340
+
341
+ '#' => lambda { @scanner.skip(PATTERN_COMMENT); nil },
342
+
343
+ # TOKENS '/', '/*' and '/ regexp /'
344
+ '/' => lambda do
345
+ scn = @scanner
346
+ la = scn.peek(2)
347
+ if la[1] == '*'
348
+ lex_error(Issues::UNCLOSED_MLCOMMENT) if scn.skip(PATTERN_MLCOMMENT).nil?
349
+ nil
350
+ else
351
+ before = scn.pos
352
+ # regexp position is a regexp, else a div
353
+ if regexp_acceptable? && value = scn.scan(PATTERN_REGEX)
354
+ # Ensure an escaped / was not matched
355
+ while escaped_end(value)
356
+ more = scn.scan_until(PATTERN_REGEX_END)
357
+ return emit(TOKEN_DIV, before) unless more
358
+ value << more
359
+ end
360
+ regex = value.sub(PATTERN_REGEX_A, '').sub(PATTERN_REGEX_Z, '').gsub(PATTERN_REGEX_ESC, '/')
361
+ emit_completed([:REGEX, Regexp.new(regex), scn.pos-before], before)
362
+ else
363
+ emit(TOKEN_DIV, before)
364
+ end
365
+ end
366
+ end,
367
+
368
+ # TOKENS <, <=, <|, <<|, <<, <-, <~
369
+ '<' => lambda do
370
+ scn = @scanner
371
+ la = scn.peek(3)
372
+ emit(case la[1]
373
+ when '<'
374
+ if la[2] == '|'
375
+ TOKEN_LLCOLLECT
376
+ else
377
+ TOKEN_LSHIFT
378
+ end
379
+ when '='
380
+ TOKEN_LESSEQUAL
381
+ when '|'
382
+ TOKEN_LCOLLECT
383
+ when '-'
384
+ TOKEN_OUT_EDGE
385
+ when '~'
386
+ TOKEN_OUT_EDGE_SUB
387
+ else
388
+ TOKEN_LESSTHAN
389
+ end, scn.pos)
390
+ end,
391
+
392
+ # TOKENS >, >=, >>
393
+ '>' => lambda do
394
+ scn = @scanner
395
+ la = scn.peek(2)
396
+ emit(case la[1]
397
+ when '>'
398
+ TOKEN_RSHIFT
399
+ when '='
400
+ TOKEN_GREATEREQUAL
401
+ else
402
+ TOKEN_GREATERTHAN
403
+ end, scn.pos)
404
+ end,
405
+
406
+ # TOKENS :, ::CLASSREF, ::NAME
407
+ ':' => lambda do
408
+ scn = @scanner
409
+ la = scn.peek(3)
410
+ before = scn.pos
411
+ if la[1] == ':'
412
+ # PERFORMANCE NOTE: This could potentially be speeded up by using a case/when listing all
413
+ # upper case letters. Alternatively, the 'A', and 'Z' comparisons may be faster if they are
414
+ # frozen.
415
+ #
416
+ la2 = la[2]
417
+ if la2 >= 'A' && la2 <= 'Z'
418
+ # CLASSREF or error
419
+ value = scn.scan(PATTERN_CLASSREF)
420
+ if value && scn.peek(2) != '::'
421
+ after = scn.pos
422
+ emit_completed([:CLASSREF, value.freeze, after-before], before)
423
+ else
424
+ # move to faulty position ('::<uc-letter>' was ok)
425
+ scn.pos = scn.pos + 3
426
+ lex_error(Issues::ILLEGAL_FULLY_QUALIFIED_CLASS_REFERENCE)
427
+ end
428
+ else
429
+ value = scn.scan(PATTERN_BARE_WORD)
430
+ if value
431
+ if value =~ PATTERN_NAME
432
+ emit_completed([:NAME, value.freeze, scn.pos - before], before)
433
+ else
434
+ emit_completed([:WORD, value.freeze, scn.pos - before], before)
435
+ end
436
+ else
437
+ # move to faulty position ('::' was ok)
438
+ scn.pos = scn.pos + 2
439
+ lex_error(Issues::ILLEGAL_FULLY_QUALIFIED_NAME)
440
+ end
441
+ end
442
+ else
443
+ emit(TOKEN_COLON, before)
444
+ end
445
+ end,
446
+
447
+ '$' => lambda do
448
+ scn = @scanner
449
+ before = scn.pos
450
+ if value = scn.scan(PATTERN_DOLLAR_VAR)
451
+ emit_completed([:VARIABLE, value[1..-1].freeze, scn.pos - before], before)
452
+ else
453
+ # consume the $ and let higher layer complain about the error instead of getting a syntax error
454
+ emit(TOKEN_VARIABLE_EMPTY, before)
455
+ end
456
+ end,
457
+
458
+ '"' => lambda do
459
+ # Recursive string interpolation, 'interpolate' either returns a STRING token, or
460
+ # a DQPRE with the rest of the string's tokens placed in the @token_queue
461
+ interpolate_dq
462
+ end,
463
+
464
+ "'" => lambda do
465
+ scn = @scanner
466
+ before = scn.pos
467
+ emit_completed([:STRING, slurp_sqstring.freeze, scn.pos - before], before)
468
+ end,
469
+
470
+ "\n" => lambda do
471
+ # If heredoc_cont is in effect there are heredoc text lines to skip over
472
+ # otherwise just skip the newline.
473
+ #
474
+ ctx = @lexing_context
475
+ if ctx[:newline_jump]
476
+ @scanner.pos = ctx[:newline_jump]
477
+ ctx[:newline_jump] = nil
478
+ else
479
+ @scanner.pos += 1
480
+ end
481
+ ctx[:line_lexical_start] = @scanner.pos
482
+ nil
483
+ end,
484
+ '' => lambda { nil } # when the peek(1) returns empty
485
+ }
486
+
487
+ [ ' ', "\t", "\r" ].each { |c| @selector[c] = lambda { @scanner.skip(PATTERN_WS); nil } }
488
+
489
+ [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'].each do |c|
490
+ @selector[c] = lambda do
491
+ scn = @scanner
492
+ before = scn.pos
493
+ value = scn.scan(PATTERN_NUMBER)
494
+ if value
495
+ length = scn.pos - before
496
+ assert_numeric(value, before)
497
+ emit_completed([:NUMBER, value.freeze, length], before)
498
+ else
499
+ invalid_number = scn.scan_until(PATTERN_NON_WS)
500
+ if before > 1
501
+ after = scn.pos
502
+ scn.pos = before - 1
503
+ if scn.peek(1) == '.'
504
+ # preceded by a dot. Is this a bad decimal number then?
505
+ scn.pos = before - 2
506
+ while scn.peek(1) =~ /^\d$/
507
+ invalid_number = nil
508
+ before = scn.pos
509
+ break if before == 0
510
+ scn.pos = scn.pos - 1
511
+ end
512
+ end
513
+ scn.pos = before
514
+ invalid_number = scn.peek(after - before) unless invalid_number
515
+ end
516
+ assert_numeric(invalid_number, before)
517
+ scn.pos = before + 1
518
+ lex_error(Issues::ILLEGAL_NUMBER, {:value => invalid_number})
519
+ end
520
+ end
521
+ end
522
+ ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
523
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '_'].each do |c|
524
+ @selector[c] = lambda do
525
+ scn = @scanner
526
+ before = scn.pos
527
+ value = scn.scan(PATTERN_BARE_WORD)
528
+ if value && value =~ PATTERN_NAME
529
+ emit_completed(KEYWORDS[value] || @taskm_keywords[value] || [:NAME, value.freeze, scn.pos - before], before)
530
+ elsif value
531
+ emit_completed([:WORD, value.freeze, scn.pos - before], before)
532
+ else
533
+ # move to faulty position ([a-z_] was ok)
534
+ scn.pos = scn.pos + 1
535
+ fully_qualified = scn.match?(/::/)
536
+ if fully_qualified
537
+ lex_error(Issues::ILLEGAL_FULLY_QUALIFIED_NAME)
538
+ else
539
+ lex_error(Issues::ILLEGAL_NAME_OR_BARE_WORD)
540
+ end
541
+ end
542
+ end
543
+ end
544
+
545
+ ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
546
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'].each do |c|
547
+ @selector[c] = lambda do
548
+ scn = @scanner
549
+ before = scn.pos
550
+ value = @scanner.scan(PATTERN_CLASSREF)
551
+ if value && @scanner.peek(2) != '::'
552
+ emit_completed([:CLASSREF, value.freeze, scn.pos - before], before)
553
+ else
554
+ # move to faulty position ([A-Z] was ok)
555
+ scn.pos = scn.pos + 1
556
+ lex_error(Issues::ILLEGAL_CLASS_REFERENCE)
557
+ end
558
+ end
559
+ end
560
+
561
+ @selector.default = lambda do
562
+ # In case of unicode spaces of various kinds that are captured by a regexp, but not by the
563
+ # simpler case expression above (not worth handling those special cases with better performance).
564
+ scn = @scanner
565
+ if scn.skip(PATTERN_WS)
566
+ nil
567
+ else
568
+ # "unrecognized char"
569
+ emit([:OTHER, scn.peek(0), 1], scn.pos)
570
+ end
571
+ end
572
+ @selector.each { |k,v| k.freeze }
573
+ @selector.freeze
574
+ end
575
+
576
+ # Determine if last char of value is escaped by a backslash
577
+ def escaped_end(value)
578
+ escaped = false
579
+ if value.end_with?(STRING_BSLASH_SLASH)
580
+ value[1...-1].each_codepoint do |cp|
581
+ if cp == 0x5c # backslash
582
+ escaped = !escaped
583
+ else
584
+ escaped = false
585
+ end
586
+ end
587
+ end
588
+ escaped
589
+ end
590
+
591
+ # Clears the lexer state (it is not required to call this as it will be garbage collected
592
+ # and the next lex call (lex_string, lex_file) will reset the internal state.
593
+ #
594
+ def clear()
595
+ # not really needed, but if someone wants to ensure garbage is collected as early as possible
596
+ @scanner = nil
597
+ @locator = nil
598
+ @lexing_context = nil
599
+ end
600
+
601
+ # Convenience method, and for compatibility with older lexer. Use the lex_string instead which allows
602
+ # passing the path to use without first having to call file= (which reads the file if it exists).
603
+ # (Bad form to use overloading of assignment operator for something that is not really an assignment. Also,
604
+ # overloading of = does not allow passing more than one argument).
605
+ #
606
+ def string=(string)
607
+ lex_string(string, nil)
608
+ end
609
+
610
+ def lex_string(string, path=nil)
611
+ initvars
612
+ assert_not_bom(string)
613
+ @scanner = StringScanner.new(string)
614
+ @locator = Locator.locator(string, path)
615
+ end
616
+
617
+ # Lexes an unquoted string.
618
+ # @param string [String] the string to lex
619
+ # @param locator [Locator] the locator to use (a default is used if nil is given)
620
+ # @param escapes [Array<String>] array of character strings representing the escape sequences to transform
621
+ # @param interpolate [Boolean] whether interpolation of expressions should be made or not.
622
+ #
623
+ def lex_unquoted_string(string, locator, escapes, interpolate)
624
+ initvars
625
+ assert_not_bom(string)
626
+ @scanner = StringScanner.new(string)
627
+ @locator = locator || Locator.locator(string, '')
628
+ @lexing_context[:escapes] = escapes || UQ_ESCAPES
629
+ @lexing_context[:uq_slurp_pattern] = interpolate ? (escapes.include?('$') ? SLURP_UQ_PATTERN : SLURP_UQNE_PATTERN) : SLURP_ALL_PATTERN
630
+ end
631
+
632
+ # Convenience method, and for compatibility with older lexer. Use the lex_file instead.
633
+ # (Bad form to use overloading of assignment operator for something that is not really an assignment).
634
+ #
635
+ def file=(file)
636
+ lex_file(file)
637
+ end
638
+
639
+ # TODO: This method should not be used, callers should get the locator since it is most likely required to
640
+ # compute line, position etc given offsets.
641
+ #
642
+ def file
643
+ @locator ? @locator.file : nil
644
+ end
645
+
646
+ # Initializes lexing of the content of the given file. An empty string is used if the file does not exist.
647
+ #
648
+ def lex_file(file)
649
+ initvars
650
+ contents = Puppet::FileSystem.exist?(file) ? Puppet::FileSystem.read(file, :encoding => 'utf-8') : ''
651
+ assert_not_bom(contents)
652
+ @scanner = StringScanner.new(contents.freeze)
653
+ @locator = Locator.locator(contents, file)
654
+ end
655
+
656
+ def initvars
657
+ @token_queue = []
658
+ # NOTE: additional keys are used; :escapes, :uq_slurp_pattern, :newline_jump, :epp_*
659
+ @lexing_context = {
660
+ :brace_count => 0,
661
+ :after => nil,
662
+ :line_lexical_start => 0
663
+ }
664
+ # Use of --tasks introduces the new keyword 'plan'
665
+ @taskm_keywords = Puppet[:tasks] ? { 'plan' => [:PLAN, 'plan', 4] }.freeze : EMPTY_HASH
666
+ end
667
+
668
+ # Scans all of the content and returns it in an array
669
+ # Note that the terminating [false, false] token is included in the result.
670
+ #
671
+ def fullscan
672
+ result = []
673
+ scan {|token| result.push(token) }
674
+ result
675
+ end
676
+
677
+ # A block must be passed to scan. It will be called with two arguments, a symbol for the token,
678
+ # and an instance of LexerSupport::TokenValue
679
+ # PERFORMANCE NOTE: The TokenValue is designed to reduce the amount of garbage / temporary data
680
+ # and to only convert the lexer's internal tokens on demand. It is slightly more costly to create an
681
+ # instance of a class defined in Ruby than an Array or Hash, but the gain is much bigger since transformation
682
+ # logic is avoided for many of its members (most are never used (e.g. line/pos information which is only of
683
+ # value in general for error messages, and for some expressions (which the lexer does not know about).
684
+ #
685
+ def scan
686
+ # PERFORMANCE note: it is faster to access local variables than instance variables.
687
+ # This makes a small but notable difference since instance member access is avoided for
688
+ # every token in the lexed content.
689
+ #
690
+ scn = @scanner
691
+ lex_error_without_pos(Issues::NO_INPUT_TO_LEXER) unless scn
692
+
693
+ ctx = @lexing_context
694
+ queue = @token_queue
695
+ selector = @selector
696
+
697
+ scn.skip(PATTERN_WS)
698
+
699
+ # This is the lexer's main loop
700
+ until queue.empty? && scn.eos? do
701
+ if token = queue.shift || selector[scn.peek(1)].call
702
+ ctx[:after] = token[0]
703
+ yield token
704
+ end
705
+ end
706
+
707
+ # Signals end of input
708
+ yield [false, false]
709
+ end
710
+
711
+ # This lexes one token at the current position of the scanner.
712
+ # PERFORMANCE NOTE: Any change to this logic should be performance measured.
713
+ #
714
+ def lex_token
715
+ @selector[@scanner.peek(1)].call
716
+ end
717
+
718
+ # Emits (produces) a token [:tokensymbol, TokenValue] and moves the scanner's position past the token
719
+ #
720
+ def emit(token, byte_offset)
721
+ @scanner.pos = byte_offset + token[2]
722
+ [token[0], TokenValue.new(token, byte_offset, @locator)]
723
+ end
724
+
725
+ # Emits the completed token on the form [:tokensymbol, TokenValue. This method does not alter
726
+ # the scanner's position.
727
+ #
728
+ def emit_completed(token, byte_offset)
729
+ [token[0], TokenValue.new(token, byte_offset, @locator)]
730
+ end
731
+
732
+ # Enqueues a completed token at the given offset
733
+ def enqueue_completed(token, byte_offset)
734
+ @token_queue << emit_completed(token, byte_offset)
735
+ end
736
+
737
+ # Allows subprocessors for heredoc etc to enqueue tokens that are tokenized by a different lexer instance
738
+ #
739
+ def enqueue(emitted_token)
740
+ @token_queue << emitted_token
741
+ end
742
+
743
+ # Answers after which tokens it is acceptable to lex a regular expression.
744
+ # PERFORMANCE NOTE:
745
+ # It may be beneficial to turn this into a hash with default value of true for missing entries.
746
+ # A case expression with literal values will however create a hash internally. Since a reference is
747
+ # always needed to the hash, this access is almost as costly as a method call.
748
+ #
749
+ def regexp_acceptable?
750
+ case @lexing_context[:after]
751
+
752
+ # Ends of (potential) R-value generating expressions
753
+ when :RPAREN, :RBRACK, :RRCOLLECT, :RCOLLECT
754
+ false
755
+
756
+ # End of (potential) R-value - but must be allowed because of case expressions
757
+ # Called out here to not be mistaken for a bug.
758
+ when :RBRACE
759
+ true
760
+
761
+ # Operands (that can be followed by DIV (even if illegal in grammar)
762
+ when :NAME, :CLASSREF, :NUMBER, :STRING, :BOOLEAN, :DQPRE, :DQMID, :DQPOST, :HEREDOC, :REGEX, :VARIABLE, :WORD
763
+ false
764
+
765
+ else
766
+ true
767
+ end
768
+ end
769
+
770
+ end
771
+ end
772
+ end