puppet-parse 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. data/.travis.yml +0 -5
  2. data/README.md +1 -3
  3. data/lib/puppet-parse/version.rb +1 -1
  4. data/lib/puppet-parse.rb +2 -2
  5. data/lib/vendor/puppet/agent/locker.rb +46 -0
  6. data/lib/vendor/puppet/agent.rb +99 -0
  7. data/lib/vendor/puppet/application/agent.rb +489 -0
  8. data/lib/vendor/puppet/application/apply.rb +266 -0
  9. data/lib/vendor/puppet/application/ca.rb +5 -0
  10. data/lib/vendor/puppet/application/catalog.rb +4 -0
  11. data/lib/vendor/puppet/application/cert.rb +240 -0
  12. data/lib/vendor/puppet/application/certificate.rb +13 -0
  13. data/lib/vendor/puppet/application/certificate_request.rb +4 -0
  14. data/lib/vendor/puppet/application/certificate_revocation_list.rb +4 -0
  15. data/lib/vendor/puppet/application/config.rb +4 -0
  16. data/lib/vendor/puppet/application/describe.rb +256 -0
  17. data/lib/vendor/puppet/application/device.rb +242 -0
  18. data/lib/vendor/puppet/application/doc.rb +275 -0
  19. data/lib/vendor/puppet/application/face_base.rb +264 -0
  20. data/lib/vendor/puppet/application/facts.rb +4 -0
  21. data/lib/vendor/puppet/application/file.rb +4 -0
  22. data/lib/vendor/puppet/application/filebucket.rb +191 -0
  23. data/lib/vendor/puppet/application/help.rb +4 -0
  24. data/lib/vendor/puppet/application/indirection_base.rb +4 -0
  25. data/lib/vendor/puppet/application/inspect.rb +191 -0
  26. data/lib/vendor/puppet/application/instrumentation_data.rb +4 -0
  27. data/lib/vendor/puppet/application/instrumentation_listener.rb +4 -0
  28. data/lib/vendor/puppet/application/instrumentation_probe.rb +4 -0
  29. data/lib/vendor/puppet/application/key.rb +4 -0
  30. data/lib/vendor/puppet/application/kick.rb +351 -0
  31. data/lib/vendor/puppet/application/man.rb +4 -0
  32. data/lib/vendor/puppet/application/master.rb +263 -0
  33. data/lib/vendor/puppet/application/module.rb +11 -0
  34. data/lib/vendor/puppet/application/node.rb +4 -0
  35. data/lib/vendor/puppet/application/parser.rb +5 -0
  36. data/lib/vendor/puppet/application/plugin.rb +3 -0
  37. data/lib/vendor/puppet/application/queue.rb +161 -0
  38. data/lib/vendor/puppet/application/report.rb +4 -0
  39. data/lib/vendor/puppet/application/resource.rb +237 -0
  40. data/lib/vendor/puppet/application/resource_type.rb +4 -0
  41. data/lib/vendor/puppet/application/secret_agent.rb +6 -0
  42. data/lib/vendor/puppet/application/status.rb +4 -0
  43. data/lib/vendor/puppet/application.rb +421 -0
  44. data/lib/vendor/puppet/configurer/downloader.rb +86 -0
  45. data/lib/vendor/puppet/configurer/fact_handler.rb +56 -0
  46. data/lib/vendor/puppet/configurer/plugin_handler.rb +37 -0
  47. data/lib/vendor/puppet/configurer.rb +249 -0
  48. data/lib/vendor/puppet/daemon.rb +200 -0
  49. data/lib/vendor/puppet/defaults.rb +970 -0
  50. data/lib/vendor/puppet/dsl/resource_api.rb +120 -0
  51. data/lib/vendor/puppet/dsl/resource_type_api.rb +34 -0
  52. data/lib/vendor/puppet/dsl.rb +7 -0
  53. data/lib/vendor/puppet/error.rb +43 -0
  54. data/lib/vendor/puppet/external/base64.rb +19 -0
  55. data/lib/vendor/puppet/external/dot.rb +326 -0
  56. data/lib/vendor/puppet/external/lock.rb +63 -0
  57. data/lib/vendor/puppet/external/nagios/base.rb +472 -0
  58. data/lib/vendor/puppet/external/nagios/grammar.ry +185 -0
  59. data/lib/vendor/puppet/external/nagios/makefile +9 -0
  60. data/lib/vendor/puppet/external/nagios/parser.rb +775 -0
  61. data/lib/vendor/puppet/external/nagios.rb +48 -0
  62. data/lib/vendor/puppet/external/pson/common.rb +370 -0
  63. data/lib/vendor/puppet/external/pson/pure/generator.rb +401 -0
  64. data/lib/vendor/puppet/external/pson/pure/parser.rb +264 -0
  65. data/lib/vendor/puppet/external/pson/pure.rb +77 -0
  66. data/lib/vendor/puppet/external/pson/version.rb +8 -0
  67. data/lib/vendor/puppet/face/ca.rb +242 -0
  68. data/lib/vendor/puppet/face/catalog/select.rb +49 -0
  69. data/lib/vendor/puppet/face/catalog.rb +131 -0
  70. data/lib/vendor/puppet/face/certificate.rb +148 -0
  71. data/lib/vendor/puppet/face/certificate_request.rb +53 -0
  72. data/lib/vendor/puppet/face/certificate_revocation_list.rb +58 -0
  73. data/lib/vendor/puppet/face/config.rb +45 -0
  74. data/lib/vendor/puppet/face/facts.rb +81 -0
  75. data/lib/vendor/puppet/face/file/download.rb +54 -0
  76. data/lib/vendor/puppet/face/file/store.rb +21 -0
  77. data/lib/vendor/puppet/face/file.rb +47 -0
  78. data/lib/vendor/puppet/face/help/action.erb +53 -0
  79. data/lib/vendor/puppet/face/help/face.erb +79 -0
  80. data/lib/vendor/puppet/face/help/global.erb +19 -0
  81. data/lib/vendor/puppet/face/help/man.erb +136 -0
  82. data/lib/vendor/puppet/face/help.rb +131 -0
  83. data/lib/vendor/puppet/face/instrumentation_data.rb +28 -0
  84. data/lib/vendor/puppet/face/instrumentation_listener.rb +96 -0
  85. data/lib/vendor/puppet/face/instrumentation_probe.rb +77 -0
  86. data/lib/vendor/puppet/face/key.rb +15 -0
  87. data/lib/vendor/puppet/face/man.rb +93 -0
  88. data/lib/vendor/puppet/face/module/build.rb +37 -0
  89. data/lib/vendor/puppet/face/module/changes.rb +38 -0
  90. data/lib/vendor/puppet/face/module/generate.rb +42 -0
  91. data/lib/vendor/puppet/face/module/install.rb +174 -0
  92. data/lib/vendor/puppet/face/module/list.rb +285 -0
  93. data/lib/vendor/puppet/face/module/search.rb +88 -0
  94. data/lib/vendor/puppet/face/module/uninstall.rb +86 -0
  95. data/lib/vendor/puppet/face/module/upgrade.rb +84 -0
  96. data/lib/vendor/puppet/face/module.rb +17 -0
  97. data/lib/vendor/puppet/face/node/clean.rb +156 -0
  98. data/lib/vendor/puppet/face/node.rb +43 -0
  99. data/lib/vendor/puppet/face/parser.rb +51 -0
  100. data/lib/vendor/puppet/face/plugin.rb +55 -0
  101. data/lib/vendor/puppet/face/report.rb +56 -0
  102. data/lib/vendor/puppet/face/resource.rb +53 -0
  103. data/lib/vendor/puppet/face/resource_type.rb +81 -0
  104. data/lib/vendor/puppet/face/secret_agent.rb +54 -0
  105. data/lib/vendor/puppet/face/status.rb +53 -0
  106. data/lib/vendor/puppet/face.rb +12 -0
  107. data/lib/vendor/puppet/feature/base.rb +67 -0
  108. data/lib/vendor/puppet/feature/eventlog.rb +6 -0
  109. data/lib/vendor/puppet/feature/pson.rb +6 -0
  110. data/lib/vendor/puppet/feature/rack.rb +24 -0
  111. data/lib/vendor/puppet/feature/rails.rb +30 -0
  112. data/lib/vendor/puppet/feature/rubygems.rb +3 -0
  113. data/lib/vendor/puppet/feature/selinux.rb +3 -0
  114. data/lib/vendor/puppet/feature/ssh.rb +4 -0
  115. data/lib/vendor/puppet/feature/stomp.rb +6 -0
  116. data/lib/vendor/puppet/feature/zlib.rb +6 -0
  117. data/lib/vendor/puppet/file_bucket/dipper.rb +107 -0
  118. data/lib/vendor/puppet/file_bucket/file.rb +55 -0
  119. data/lib/vendor/puppet/file_bucket.rb +4 -0
  120. data/lib/vendor/puppet/file_collection/lookup.rb +10 -0
  121. data/lib/vendor/puppet/file_collection.rb +19 -0
  122. data/lib/vendor/puppet/file_serving/base.rb +88 -0
  123. data/lib/vendor/puppet/file_serving/configuration/parser.rb +115 -0
  124. data/lib/vendor/puppet/file_serving/configuration.rb +122 -0
  125. data/lib/vendor/puppet/file_serving/content.rb +45 -0
  126. data/lib/vendor/puppet/file_serving/fileset.rb +173 -0
  127. data/lib/vendor/puppet/file_serving/metadata.rb +155 -0
  128. data/lib/vendor/puppet/file_serving/mount/file.rb +121 -0
  129. data/lib/vendor/puppet/file_serving/mount/modules.rb +24 -0
  130. data/lib/vendor/puppet/file_serving/mount/plugins.rb +26 -0
  131. data/lib/vendor/puppet/file_serving/mount.rb +39 -0
  132. data/lib/vendor/puppet/file_serving/terminus_helper.rb +21 -0
  133. data/lib/vendor/puppet/file_serving/terminus_selector.rb +28 -0
  134. data/lib/vendor/puppet/file_serving.rb +3 -0
  135. data/lib/vendor/puppet/forge/cache.rb +55 -0
  136. data/lib/vendor/puppet/forge/repository.rb +102 -0
  137. data/lib/vendor/puppet/forge.rb +98 -0
  138. data/lib/vendor/puppet/indirector/active_record.rb +28 -0
  139. data/lib/vendor/puppet/indirector/catalog/active_record.rb +41 -0
  140. data/lib/vendor/puppet/indirector/catalog/compiler.rb +153 -0
  141. data/lib/vendor/puppet/indirector/catalog/queue.rb +5 -0
  142. data/lib/vendor/puppet/indirector/catalog/rest.rb +6 -0
  143. data/lib/vendor/puppet/indirector/catalog/static_compiler.rb +136 -0
  144. data/lib/vendor/puppet/indirector/catalog/store_configs.rb +5 -0
  145. data/lib/vendor/puppet/indirector/catalog/yaml.rb +22 -0
  146. data/lib/vendor/puppet/indirector/certificate/ca.rb +9 -0
  147. data/lib/vendor/puppet/indirector/certificate/disabled_ca.rb +22 -0
  148. data/lib/vendor/puppet/indirector/certificate/file.rb +9 -0
  149. data/lib/vendor/puppet/indirector/certificate/rest.rb +15 -0
  150. data/lib/vendor/puppet/indirector/certificate_request/ca.rb +22 -0
  151. data/lib/vendor/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  152. data/lib/vendor/puppet/indirector/certificate_request/file.rb +8 -0
  153. data/lib/vendor/puppet/indirector/certificate_request/rest.rb +9 -0
  154. data/lib/vendor/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  155. data/lib/vendor/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  156. data/lib/vendor/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  157. data/lib/vendor/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
  158. data/lib/vendor/puppet/indirector/certificate_status/file.rb +82 -0
  159. data/lib/vendor/puppet/indirector/certificate_status/rest.rb +10 -0
  160. data/lib/vendor/puppet/indirector/certificate_status.rb +4 -0
  161. data/lib/vendor/puppet/indirector/code.rb +6 -0
  162. data/lib/vendor/puppet/indirector/couch.rb +78 -0
  163. data/lib/vendor/puppet/indirector/direct_file_server.rb +19 -0
  164. data/lib/vendor/puppet/indirector/envelope.rb +11 -0
  165. data/lib/vendor/puppet/indirector/exec.rb +48 -0
  166. data/lib/vendor/puppet/indirector/face.rb +137 -0
  167. data/lib/vendor/puppet/indirector/facts/active_record.rb +36 -0
  168. data/lib/vendor/puppet/indirector/facts/couch.rb +31 -0
  169. data/lib/vendor/puppet/indirector/facts/facter.rb +96 -0
  170. data/lib/vendor/puppet/indirector/facts/inventory_active_record.rb +100 -0
  171. data/lib/vendor/puppet/indirector/facts/inventory_service.rb +20 -0
  172. data/lib/vendor/puppet/indirector/facts/memory.rb +9 -0
  173. data/lib/vendor/puppet/indirector/facts/network_device.rb +25 -0
  174. data/lib/vendor/puppet/indirector/facts/rest.rb +8 -0
  175. data/lib/vendor/puppet/indirector/facts/store_configs.rb +5 -0
  176. data/lib/vendor/puppet/indirector/facts/yaml.rb +82 -0
  177. data/lib/vendor/puppet/indirector/file_bucket_file/file.rb +136 -0
  178. data/lib/vendor/puppet/indirector/file_bucket_file/rest.rb +8 -0
  179. data/lib/vendor/puppet/indirector/file_bucket_file/selector.rb +49 -0
  180. data/lib/vendor/puppet/indirector/file_content/file.rb +7 -0
  181. data/lib/vendor/puppet/indirector/file_content/file_server.rb +7 -0
  182. data/lib/vendor/puppet/indirector/file_content/rest.rb +7 -0
  183. data/lib/vendor/puppet/indirector/file_content/selector.rb +30 -0
  184. data/lib/vendor/puppet/indirector/file_content.rb +5 -0
  185. data/lib/vendor/puppet/indirector/file_metadata/file.rb +22 -0
  186. data/lib/vendor/puppet/indirector/file_metadata/file_server.rb +7 -0
  187. data/lib/vendor/puppet/indirector/file_metadata/rest.rb +7 -0
  188. data/lib/vendor/puppet/indirector/file_metadata/selector.rb +30 -0
  189. data/lib/vendor/puppet/indirector/file_metadata.rb +5 -0
  190. data/lib/vendor/puppet/indirector/file_server.rb +65 -0
  191. data/lib/vendor/puppet/indirector/indirection.rb +323 -0
  192. data/lib/vendor/puppet/indirector/instrumentation_data/local.rb +19 -0
  193. data/lib/vendor/puppet/indirector/instrumentation_data/rest.rb +5 -0
  194. data/lib/vendor/puppet/indirector/instrumentation_data.rb +3 -0
  195. data/lib/vendor/puppet/indirector/instrumentation_listener/local.rb +23 -0
  196. data/lib/vendor/puppet/indirector/instrumentation_listener/rest.rb +5 -0
  197. data/lib/vendor/puppet/indirector/instrumentation_listener.rb +3 -0
  198. data/lib/vendor/puppet/indirector/instrumentation_probe/local.rb +24 -0
  199. data/lib/vendor/puppet/indirector/instrumentation_probe/rest.rb +5 -0
  200. data/lib/vendor/puppet/indirector/instrumentation_probe.rb +3 -0
  201. data/lib/vendor/puppet/indirector/inventory/yaml.rb +81 -0
  202. data/lib/vendor/puppet/indirector/key/ca.rb +12 -0
  203. data/lib/vendor/puppet/indirector/key/disabled_ca.rb +22 -0
  204. data/lib/vendor/puppet/indirector/key/file.rb +42 -0
  205. data/lib/vendor/puppet/indirector/ldap.rb +78 -0
  206. data/lib/vendor/puppet/indirector/memory.rb +21 -0
  207. data/lib/vendor/puppet/indirector/node/active_record.rb +13 -0
  208. data/lib/vendor/puppet/indirector/node/exec.rb +60 -0
  209. data/lib/vendor/puppet/indirector/node/ldap.rb +256 -0
  210. data/lib/vendor/puppet/indirector/node/memory.rb +10 -0
  211. data/lib/vendor/puppet/indirector/node/plain.rb +19 -0
  212. data/lib/vendor/puppet/indirector/node/rest.rb +7 -0
  213. data/lib/vendor/puppet/indirector/node/store_configs.rb +5 -0
  214. data/lib/vendor/puppet/indirector/node/yaml.rb +7 -0
  215. data/lib/vendor/puppet/indirector/plain.rb +9 -0
  216. data/lib/vendor/puppet/indirector/queue.rb +81 -0
  217. data/lib/vendor/puppet/indirector/report/processor.rb +61 -0
  218. data/lib/vendor/puppet/indirector/report/rest.rb +7 -0
  219. data/lib/vendor/puppet/indirector/report/yaml.rb +11 -0
  220. data/lib/vendor/puppet/indirector/request.rb +204 -0
  221. data/lib/vendor/puppet/indirector/resource/active_record.rb +93 -0
  222. data/lib/vendor/puppet/indirector/resource/ral.rb +53 -0
  223. data/lib/vendor/puppet/indirector/resource/rest.rb +5 -0
  224. data/lib/vendor/puppet/indirector/resource/store_configs.rb +3 -0
  225. data/lib/vendor/puppet/indirector/resource_type/parser.rb +43 -0
  226. data/lib/vendor/puppet/indirector/resource_type/rest.rb +7 -0
  227. data/lib/vendor/puppet/indirector/resource_type.rb +5 -0
  228. data/lib/vendor/puppet/indirector/rest.rb +166 -0
  229. data/lib/vendor/puppet/indirector/run/local.rb +8 -0
  230. data/lib/vendor/puppet/indirector/run/rest.rb +6 -0
  231. data/lib/vendor/puppet/indirector/ssl_file.rb +178 -0
  232. data/lib/vendor/puppet/indirector/status/local.rb +7 -0
  233. data/lib/vendor/puppet/indirector/status/rest.rb +5 -0
  234. data/lib/vendor/puppet/indirector/status.rb +3 -0
  235. data/lib/vendor/puppet/indirector/store_configs.rb +30 -0
  236. data/lib/vendor/puppet/indirector/terminus.rb +145 -0
  237. data/lib/vendor/puppet/indirector/yaml.rb +75 -0
  238. data/lib/vendor/puppet/indirector.rb +57 -0
  239. data/lib/vendor/puppet/interface/action.rb +322 -0
  240. data/lib/vendor/puppet/interface/action_builder.rb +74 -0
  241. data/lib/vendor/puppet/interface/action_manager.rb +74 -0
  242. data/lib/vendor/puppet/interface/documentation.rb +230 -0
  243. data/lib/vendor/puppet/interface/face_collection.rb +128 -0
  244. data/lib/vendor/puppet/interface/option.rb +127 -0
  245. data/lib/vendor/puppet/interface/option_builder.rb +67 -0
  246. data/lib/vendor/puppet/interface/option_manager.rb +68 -0
  247. data/lib/vendor/puppet/interface.rb +161 -0
  248. data/lib/vendor/puppet/metatype/manager.rb +141 -0
  249. data/lib/vendor/puppet/module.rb +314 -0
  250. data/lib/vendor/puppet/module_tool/applications/application.rb +82 -0
  251. data/lib/vendor/puppet/module_tool/applications/builder.rb +91 -0
  252. data/lib/vendor/puppet/module_tool/applications/checksummer.rb +56 -0
  253. data/lib/vendor/puppet/module_tool/applications/generator.rb +141 -0
  254. data/lib/vendor/puppet/module_tool/applications/installer.rb +183 -0
  255. data/lib/vendor/puppet/module_tool/applications/searcher.rb +15 -0
  256. data/lib/vendor/puppet/module_tool/applications/uninstaller.rb +107 -0
  257. data/lib/vendor/puppet/module_tool/applications/unpacker.rb +67 -0
  258. data/lib/vendor/puppet/module_tool/applications/upgrader.rb +109 -0
  259. data/lib/vendor/puppet/module_tool/applications.rb +15 -0
  260. data/lib/vendor/puppet/module_tool/checksums.rb +52 -0
  261. data/lib/vendor/puppet/module_tool/contents_description.rb +82 -0
  262. data/lib/vendor/puppet/module_tool/dependency.rb +24 -0
  263. data/lib/vendor/puppet/module_tool/errors/base.rb +15 -0
  264. data/lib/vendor/puppet/module_tool/errors/installer.rb +90 -0
  265. data/lib/vendor/puppet/module_tool/errors/shared.rb +115 -0
  266. data/lib/vendor/puppet/module_tool/errors/uninstaller.rb +45 -0
  267. data/lib/vendor/puppet/module_tool/errors/upgrader.rb +72 -0
  268. data/lib/vendor/puppet/module_tool/errors.rb +9 -0
  269. data/lib/vendor/puppet/module_tool/metadata.rb +141 -0
  270. data/lib/vendor/puppet/module_tool/modulefile.rb +75 -0
  271. data/lib/vendor/puppet/module_tool/shared_behaviors.rb +161 -0
  272. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +11 -0
  273. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/README.erb +16 -0
  274. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
  275. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +17 -0
  276. data/lib/vendor/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +11 -0
  277. data/lib/vendor/puppet/module_tool/skeleton.rb +34 -0
  278. data/lib/vendor/puppet/module_tool.rb +99 -0
  279. data/lib/vendor/puppet/network/authconfig.rb +174 -0
  280. data/lib/vendor/puppet/network/authorization.rb +76 -0
  281. data/lib/vendor/puppet/network/authstore.rb +267 -0
  282. data/lib/vendor/puppet/network/client_request.rb +29 -0
  283. data/lib/vendor/puppet/network/format.rb +111 -0
  284. data/lib/vendor/puppet/network/format_handler.rb +181 -0
  285. data/lib/vendor/puppet/network/formats.rb +171 -0
  286. data/lib/vendor/puppet/network/handler/ca.rb +61 -0
  287. data/lib/vendor/puppet/network/handler/filebucket.rb +53 -0
  288. data/lib/vendor/puppet/network/handler/fileserver.rb +732 -0
  289. data/lib/vendor/puppet/network/handler/master.rb +87 -0
  290. data/lib/vendor/puppet/network/handler/report.rb +82 -0
  291. data/lib/vendor/puppet/network/handler/runner.rb +33 -0
  292. data/lib/vendor/puppet/network/handler/status.rb +18 -0
  293. data/lib/vendor/puppet/network/handler.rb +50 -0
  294. data/lib/vendor/puppet/network/http/api/v1.rb +83 -0
  295. data/lib/vendor/puppet/network/http/api.rb +4 -0
  296. data/lib/vendor/puppet/network/http/compression.rb +114 -0
  297. data/lib/vendor/puppet/network/http/handler.rb +247 -0
  298. data/lib/vendor/puppet/network/http/mongrel/rest.rb +99 -0
  299. data/lib/vendor/puppet/network/http/mongrel.rb +55 -0
  300. data/lib/vendor/puppet/network/http/rack/httphandler.rb +16 -0
  301. data/lib/vendor/puppet/network/http/rack/rest.rb +100 -0
  302. data/lib/vendor/puppet/network/http/rack/xmlrpc.rb +65 -0
  303. data/lib/vendor/puppet/network/http/rack.rb +65 -0
  304. data/lib/vendor/puppet/network/http/webrick/rest.rb +81 -0
  305. data/lib/vendor/puppet/network/http/webrick.rb +141 -0
  306. data/lib/vendor/puppet/network/http.rb +15 -0
  307. data/lib/vendor/puppet/network/http_pool.rb +57 -0
  308. data/lib/vendor/puppet/network/http_server/mongrel.rb +129 -0
  309. data/lib/vendor/puppet/network/http_server.rb +3 -0
  310. data/lib/vendor/puppet/network/rest_authconfig.rb +102 -0
  311. data/lib/vendor/puppet/network/rest_authorization.rb +23 -0
  312. data/lib/vendor/puppet/network/rest_controller.rb +2 -0
  313. data/lib/vendor/puppet/network/rights.rb +275 -0
  314. data/lib/vendor/puppet/network/server.rb +164 -0
  315. data/lib/vendor/puppet/network/xmlrpc/processor.rb +86 -0
  316. data/lib/vendor/puppet/network/xmlrpc/server.rb +19 -0
  317. data/lib/vendor/puppet/network/xmlrpc/webrick_servlet.rb +114 -0
  318. data/lib/vendor/puppet/network.rb +3 -0
  319. data/lib/vendor/puppet/node/environment.rb +216 -0
  320. data/lib/vendor/puppet/node/facts.rb +99 -0
  321. data/lib/vendor/puppet/node/inventory.rb +7 -0
  322. data/lib/vendor/puppet/node.rb +120 -0
  323. data/lib/vendor/puppet/parameter/path.rb +34 -0
  324. data/lib/vendor/puppet/parameter/value.rb +69 -0
  325. data/lib/vendor/puppet/parameter/value_collection.rb +143 -0
  326. data/lib/vendor/puppet/parameter.rb +316 -0
  327. data/lib/vendor/puppet/parser/ast/arithmetic_operator.rb +39 -0
  328. data/lib/vendor/puppet/parser/ast/astarray.rb +50 -0
  329. data/lib/vendor/puppet/parser/ast/asthash.rb +37 -0
  330. data/lib/vendor/puppet/parser/ast/boolean_operator.rb +46 -0
  331. data/lib/vendor/puppet/parser/ast/branch.rb +37 -0
  332. data/lib/vendor/puppet/parser/ast/caseopt.rb +52 -0
  333. data/lib/vendor/puppet/parser/ast/casestatement.rb +44 -0
  334. data/lib/vendor/puppet/parser/ast/collection.rb +49 -0
  335. data/lib/vendor/puppet/parser/ast/collexpr.rb +57 -0
  336. data/lib/vendor/puppet/parser/ast/comparison_operator.rb +38 -0
  337. data/lib/vendor/puppet/parser/ast/definition.rb +17 -0
  338. data/lib/vendor/puppet/parser/ast/else.rb +22 -0
  339. data/lib/vendor/puppet/parser/ast/function.rb +50 -0
  340. data/lib/vendor/puppet/parser/ast/hostclass.rb +29 -0
  341. data/lib/vendor/puppet/parser/ast/ifstatement.rb +34 -0
  342. data/lib/vendor/puppet/parser/ast/in_operator.rb +24 -0
  343. data/lib/vendor/puppet/parser/ast/leaf.rb +221 -0
  344. data/lib/vendor/puppet/parser/ast/match_operator.rb +28 -0
  345. data/lib/vendor/puppet/parser/ast/minus.rb +23 -0
  346. data/lib/vendor/puppet/parser/ast/node.rb +20 -0
  347. data/lib/vendor/puppet/parser/ast/nop.rb +11 -0
  348. data/lib/vendor/puppet/parser/ast/not.rb +19 -0
  349. data/lib/vendor/puppet/parser/ast/relationship.rb +47 -0
  350. data/lib/vendor/puppet/parser/ast/resource.rb +74 -0
  351. data/lib/vendor/puppet/parser/ast/resource_defaults.rb +24 -0
  352. data/lib/vendor/puppet/parser/ast/resource_instance.rb +9 -0
  353. data/lib/vendor/puppet/parser/ast/resource_override.rb +67 -0
  354. data/lib/vendor/puppet/parser/ast/resource_reference.rb +28 -0
  355. data/lib/vendor/puppet/parser/ast/resourceparam.rb +29 -0
  356. data/lib/vendor/puppet/parser/ast/selector.rb +44 -0
  357. data/lib/vendor/puppet/parser/ast/tag.rb +24 -0
  358. data/lib/vendor/puppet/parser/ast/top_level_construct.rb +4 -0
  359. data/lib/vendor/puppet/parser/ast/vardef.rb +33 -0
  360. data/lib/vendor/puppet/parser/ast.rb +139 -0
  361. data/lib/vendor/puppet/parser/collector.rb +176 -0
  362. data/lib/vendor/puppet/parser/compiler.rb +476 -0
  363. data/lib/vendor/puppet/parser/files.rb +88 -0
  364. data/lib/vendor/puppet/parser/functions/create_resources.rb +75 -0
  365. data/lib/vendor/puppet/parser/functions/defined.rb +49 -0
  366. data/lib/vendor/puppet/parser/functions/extlookup.rb +152 -0
  367. data/lib/vendor/puppet/parser/functions/fail.rb +4 -0
  368. data/lib/vendor/puppet/parser/functions/file.rb +23 -0
  369. data/lib/vendor/puppet/parser/functions/fqdn_rand.rb +13 -0
  370. data/lib/vendor/puppet/parser/functions/generate.rb +37 -0
  371. data/lib/vendor/puppet/parser/functions/include.rb +24 -0
  372. data/lib/vendor/puppet/parser/functions/inline_template.rb +21 -0
  373. data/lib/vendor/puppet/parser/functions/md5.rb +5 -0
  374. data/lib/vendor/puppet/parser/functions/realize.rb +14 -0
  375. data/lib/vendor/puppet/parser/functions/regsubst.rb +119 -0
  376. data/lib/vendor/puppet/parser/functions/require.rb +57 -0
  377. data/lib/vendor/puppet/parser/functions/search.rb +7 -0
  378. data/lib/vendor/puppet/parser/functions/sha1.rb +5 -0
  379. data/lib/vendor/puppet/parser/functions/shellquote.rb +61 -0
  380. data/lib/vendor/puppet/parser/functions/split.rb +29 -0
  381. data/lib/vendor/puppet/parser/functions/sprintf.rb +39 -0
  382. data/lib/vendor/puppet/parser/functions/tag.rb +6 -0
  383. data/lib/vendor/puppet/parser/functions/tagged.rb +18 -0
  384. data/lib/vendor/puppet/parser/functions/template.rb +23 -0
  385. data/lib/vendor/puppet/parser/functions/versioncmp.rb +37 -0
  386. data/lib/vendor/puppet/parser/functions.rb +165 -0
  387. data/lib/vendor/puppet/parser/grammar.ra +771 -0
  388. data/lib/vendor/puppet/parser/lexer.rb +617 -0
  389. data/lib/vendor/puppet/parser/makefile +8 -0
  390. data/lib/vendor/puppet/parser/parser.rb +2421 -0
  391. data/lib/vendor/puppet/parser/parser_support.rb +211 -0
  392. data/lib/vendor/puppet/parser/relationship.rb +62 -0
  393. data/lib/vendor/puppet/parser/resource/param.rb +25 -0
  394. data/lib/vendor/puppet/parser/resource.rb +341 -0
  395. data/lib/vendor/puppet/parser/scope.rb +497 -0
  396. data/lib/vendor/puppet/parser/templatewrapper.rb +115 -0
  397. data/lib/vendor/puppet/parser/type_loader.rb +172 -0
  398. data/lib/vendor/puppet/parser/yaml_trimmer.rb +9 -0
  399. data/lib/vendor/puppet/parser.rb +4 -0
  400. data/lib/vendor/puppet/property/ensure.rb +92 -0
  401. data/lib/vendor/puppet/property/keyvalue.rb +86 -0
  402. data/lib/vendor/puppet/property/list.rb +75 -0
  403. data/lib/vendor/puppet/property/ordered_list.rb +22 -0
  404. data/lib/vendor/puppet/property.rb +373 -0
  405. data/lib/vendor/puppet/provider/aixobject.rb +393 -0
  406. data/lib/vendor/puppet/provider/augeas/augeas.rb +418 -0
  407. data/lib/vendor/puppet/provider/cisco.rb +9 -0
  408. data/lib/vendor/puppet/provider/computer/computer.rb +20 -0
  409. data/lib/vendor/puppet/provider/confine/exists.rb +19 -0
  410. data/lib/vendor/puppet/provider/confine/false.rb +19 -0
  411. data/lib/vendor/puppet/provider/confine/feature.rb +17 -0
  412. data/lib/vendor/puppet/provider/confine/true.rb +20 -0
  413. data/lib/vendor/puppet/provider/confine/variable.rb +59 -0
  414. data/lib/vendor/puppet/provider/confine.rb +80 -0
  415. data/lib/vendor/puppet/provider/confine_collection.rb +50 -0
  416. data/lib/vendor/puppet/provider/confiner.rb +16 -0
  417. data/lib/vendor/puppet/provider/cron/crontab.rb +200 -0
  418. data/lib/vendor/puppet/provider/exec/posix.rb +39 -0
  419. data/lib/vendor/puppet/provider/exec/shell.rb +25 -0
  420. data/lib/vendor/puppet/provider/exec/windows.rb +56 -0
  421. data/lib/vendor/puppet/provider/exec.rb +84 -0
  422. data/lib/vendor/puppet/provider/file/posix.rb +135 -0
  423. data/lib/vendor/puppet/provider/file/windows.rb +88 -0
  424. data/lib/vendor/puppet/provider/group/aix.rb +141 -0
  425. data/lib/vendor/puppet/provider/group/directoryservice.rb +12 -0
  426. data/lib/vendor/puppet/provider/group/groupadd.rb +29 -0
  427. data/lib/vendor/puppet/provider/group/ldap.rb +45 -0
  428. data/lib/vendor/puppet/provider/group/pw.rb +48 -0
  429. data/lib/vendor/puppet/provider/group/windows_adsi.rb +54 -0
  430. data/lib/vendor/puppet/provider/host/parsed.rb +44 -0
  431. data/lib/vendor/puppet/provider/interface/base.rb +0 -0
  432. data/lib/vendor/puppet/provider/interface/cisco.rb +27 -0
  433. data/lib/vendor/puppet/provider/ldap.rb +137 -0
  434. data/lib/vendor/puppet/provider/macauthorization/macauthorization.rb +313 -0
  435. data/lib/vendor/puppet/provider/mailalias/aliases.rb +44 -0
  436. data/lib/vendor/puppet/provider/maillist/mailman.rb +108 -0
  437. data/lib/vendor/puppet/provider/mcx/mcxcontent.rb +166 -0
  438. data/lib/vendor/puppet/provider/mount/parsed.rb +124 -0
  439. data/lib/vendor/puppet/provider/mount.rb +46 -0
  440. data/lib/vendor/puppet/provider/naginator.rb +63 -0
  441. data/lib/vendor/puppet/provider/nameservice/directoryservice.rb +652 -0
  442. data/lib/vendor/puppet/provider/nameservice/objectadd.rb +33 -0
  443. data/lib/vendor/puppet/provider/nameservice/pw.rb +21 -0
  444. data/lib/vendor/puppet/provider/nameservice.rb +276 -0
  445. data/lib/vendor/puppet/provider/network_device.rb +68 -0
  446. data/lib/vendor/puppet/provider/package/aix.rb +128 -0
  447. data/lib/vendor/puppet/provider/package/appdmg.rb +109 -0
  448. data/lib/vendor/puppet/provider/package/apple.rb +47 -0
  449. data/lib/vendor/puppet/provider/package/apt.rb +111 -0
  450. data/lib/vendor/puppet/provider/package/aptitude.rb +29 -0
  451. data/lib/vendor/puppet/provider/package/aptrpm.rb +83 -0
  452. data/lib/vendor/puppet/provider/package/blastwave.rb +111 -0
  453. data/lib/vendor/puppet/provider/package/dpkg.rb +155 -0
  454. data/lib/vendor/puppet/provider/package/fink.rb +81 -0
  455. data/lib/vendor/puppet/provider/package/freebsd.rb +49 -0
  456. data/lib/vendor/puppet/provider/package/gem.rb +127 -0
  457. data/lib/vendor/puppet/provider/package/hpux.rb +44 -0
  458. data/lib/vendor/puppet/provider/package/macports.rb +105 -0
  459. data/lib/vendor/puppet/provider/package/msi.rb +141 -0
  460. data/lib/vendor/puppet/provider/package/nim.rb +35 -0
  461. data/lib/vendor/puppet/provider/package/openbsd.rb +112 -0
  462. data/lib/vendor/puppet/provider/package/pacman.rb +94 -0
  463. data/lib/vendor/puppet/provider/package/pip.rb +111 -0
  464. data/lib/vendor/puppet/provider/package/pkg.rb +112 -0
  465. data/lib/vendor/puppet/provider/package/pkgdmg.rb +123 -0
  466. data/lib/vendor/puppet/provider/package/pkgutil.rb +174 -0
  467. data/lib/vendor/puppet/provider/package/portage.rb +124 -0
  468. data/lib/vendor/puppet/provider/package/ports.rb +94 -0
  469. data/lib/vendor/puppet/provider/package/portupgrade.rb +241 -0
  470. data/lib/vendor/puppet/provider/package/rpm.rb +132 -0
  471. data/lib/vendor/puppet/provider/package/rug.rb +52 -0
  472. data/lib/vendor/puppet/provider/package/sun.rb +154 -0
  473. data/lib/vendor/puppet/provider/package/sunfreeware.rb +9 -0
  474. data/lib/vendor/puppet/provider/package/up2date.rb +41 -0
  475. data/lib/vendor/puppet/provider/package/urpmi.rb +59 -0
  476. data/lib/vendor/puppet/provider/package/yum.rb +106 -0
  477. data/lib/vendor/puppet/provider/package/yumhelper.py +129 -0
  478. data/lib/vendor/puppet/provider/package/zypper.rb +84 -0
  479. data/lib/vendor/puppet/provider/package.rb +28 -0
  480. data/lib/vendor/puppet/provider/parsedfile.rb +374 -0
  481. data/lib/vendor/puppet/provider/port/parsed.rb +173 -0
  482. data/lib/vendor/puppet/provider/scheduled_task/win32_taskscheduler.rb +565 -0
  483. data/lib/vendor/puppet/provider/selboolean/getsetsebool.rb +47 -0
  484. data/lib/vendor/puppet/provider/selmodule/semodule.rb +134 -0
  485. data/lib/vendor/puppet/provider/service/base.rb +105 -0
  486. data/lib/vendor/puppet/provider/service/bsd.rb +49 -0
  487. data/lib/vendor/puppet/provider/service/daemontools.rb +194 -0
  488. data/lib/vendor/puppet/provider/service/debian.rb +68 -0
  489. data/lib/vendor/puppet/provider/service/freebsd.rb +139 -0
  490. data/lib/vendor/puppet/provider/service/gentoo.rb +54 -0
  491. data/lib/vendor/puppet/provider/service/init.rb +140 -0
  492. data/lib/vendor/puppet/provider/service/launchd.rb +303 -0
  493. data/lib/vendor/puppet/provider/service/openrc.rb +69 -0
  494. data/lib/vendor/puppet/provider/service/redhat.rb +76 -0
  495. data/lib/vendor/puppet/provider/service/runit.rb +103 -0
  496. data/lib/vendor/puppet/provider/service/service.rb +43 -0
  497. data/lib/vendor/puppet/provider/service/smf.rb +104 -0
  498. data/lib/vendor/puppet/provider/service/src.rb +86 -0
  499. data/lib/vendor/puppet/provider/service/systemd.rb +64 -0
  500. data/lib/vendor/puppet/provider/service/upstart.rb +347 -0
  501. data/lib/vendor/puppet/provider/service/windows.rb +106 -0
  502. data/lib/vendor/puppet/provider/ssh_authorized_key/parsed.rb +88 -0
  503. data/lib/vendor/puppet/provider/sshkey/parsed.rb +37 -0
  504. data/lib/vendor/puppet/provider/user/aix.rb +357 -0
  505. data/lib/vendor/puppet/provider/user/directoryservice.rb +86 -0
  506. data/lib/vendor/puppet/provider/user/hpux.rb +31 -0
  507. data/lib/vendor/puppet/provider/user/ldap.rb +129 -0
  508. data/lib/vendor/puppet/provider/user/pw.rb +101 -0
  509. data/lib/vendor/puppet/provider/user/user_role_add.rb +207 -0
  510. data/lib/vendor/puppet/provider/user/useradd.rb +127 -0
  511. data/lib/vendor/puppet/provider/user/windows_adsi.rb +99 -0
  512. data/lib/vendor/puppet/provider/vlan/cisco.rb +28 -0
  513. data/lib/vendor/puppet/provider/zfs/solaris.rb +45 -0
  514. data/lib/vendor/puppet/provider/zone/solaris.rb +260 -0
  515. data/lib/vendor/puppet/provider/zpool/solaris.rb +116 -0
  516. data/lib/vendor/puppet/provider.rb +290 -0
  517. data/lib/vendor/puppet/rails/benchmark.rb +63 -0
  518. data/lib/vendor/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
  519. data/lib/vendor/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
  520. data/lib/vendor/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  521. data/lib/vendor/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
  522. data/lib/vendor/puppet/rails/database/schema.rb +131 -0
  523. data/lib/vendor/puppet/rails/fact_name.rb +6 -0
  524. data/lib/vendor/puppet/rails/fact_value.rb +8 -0
  525. data/lib/vendor/puppet/rails/host.rb +258 -0
  526. data/lib/vendor/puppet/rails/inventory_fact.rb +5 -0
  527. data/lib/vendor/puppet/rails/inventory_node.rb +43 -0
  528. data/lib/vendor/puppet/rails/param_name.rb +25 -0
  529. data/lib/vendor/puppet/rails/param_value.rb +74 -0
  530. data/lib/vendor/puppet/rails/puppet_tag.rb +10 -0
  531. data/lib/vendor/puppet/rails/resource.rb +231 -0
  532. data/lib/vendor/puppet/rails/resource_tag.rb +26 -0
  533. data/lib/vendor/puppet/rails/source_file.rb +8 -0
  534. data/lib/vendor/puppet/rails.rb +132 -0
  535. data/lib/vendor/puppet/rb_tree_map.rb +388 -0
  536. data/lib/vendor/puppet/reference/configuration.rb +69 -0
  537. data/lib/vendor/puppet/reference/function.rb +17 -0
  538. data/lib/vendor/puppet/reference/indirection.rb +32 -0
  539. data/lib/vendor/puppet/reference/metaparameter.rb +43 -0
  540. data/lib/vendor/puppet/reference/network.rb +39 -0
  541. data/lib/vendor/puppet/reference/providers.rb +119 -0
  542. data/lib/vendor/puppet/reference/report.rb +23 -0
  543. data/lib/vendor/puppet/reference/type.rb +116 -0
  544. data/lib/vendor/puppet/relationship.rb +95 -0
  545. data/lib/vendor/puppet/reports/http.rb +25 -0
  546. data/lib/vendor/puppet/reports/log.rb +14 -0
  547. data/lib/vendor/puppet/reports/rrdgraph.rb +128 -0
  548. data/lib/vendor/puppet/reports/store.rb +74 -0
  549. data/lib/vendor/puppet/reports/tagmail.rb +179 -0
  550. data/lib/vendor/puppet/reports.rb +49 -0
  551. data/lib/vendor/puppet/resource/catalog.rb +661 -0
  552. data/lib/vendor/puppet/resource/status.rb +79 -0
  553. data/lib/vendor/puppet/resource/type.rb +344 -0
  554. data/lib/vendor/puppet/resource/type_collection.rb +215 -0
  555. data/lib/vendor/puppet/resource/type_collection_helper.rb +7 -0
  556. data/lib/vendor/puppet/resource.rb +467 -0
  557. data/lib/vendor/puppet/run.rb +77 -0
  558. data/lib/vendor/puppet/simple_graph.rb +550 -0
  559. data/lib/vendor/puppet/ssl/base.rb +86 -0
  560. data/lib/vendor/puppet/ssl/certificate.rb +40 -0
  561. data/lib/vendor/puppet/ssl/certificate_authority/interface.rb +182 -0
  562. data/lib/vendor/puppet/ssl/certificate_authority.rb +374 -0
  563. data/lib/vendor/puppet/ssl/certificate_factory.rb +166 -0
  564. data/lib/vendor/puppet/ssl/certificate_request.rb +149 -0
  565. data/lib/vendor/puppet/ssl/certificate_revocation_list.rb +84 -0
  566. data/lib/vendor/puppet/ssl/host.rb +365 -0
  567. data/lib/vendor/puppet/ssl/inventory.rb +54 -0
  568. data/lib/vendor/puppet/ssl/key.rb +56 -0
  569. data/lib/vendor/puppet/ssl.rb +8 -0
  570. data/lib/vendor/puppet/status.rb +28 -0
  571. data/lib/vendor/puppet/test/test_helper.rb +141 -0
  572. data/lib/vendor/puppet/transaction/event.rb +66 -0
  573. data/lib/vendor/puppet/transaction/event_manager.rb +115 -0
  574. data/lib/vendor/puppet/transaction/report.rb +200 -0
  575. data/lib/vendor/puppet/transaction/resource_harness.rb +178 -0
  576. data/lib/vendor/puppet/transaction.rb +493 -0
  577. data/lib/vendor/puppet/transportable.rb +248 -0
  578. data/lib/vendor/puppet/type/augeas.rb +218 -0
  579. data/lib/vendor/puppet/type/component.rb +85 -0
  580. data/lib/vendor/puppet/type/computer.rb +66 -0
  581. data/lib/vendor/puppet/type/cron.rb +421 -0
  582. data/lib/vendor/puppet/type/exec.rb +520 -0
  583. data/lib/vendor/puppet/type/file/checksum.rb +33 -0
  584. data/lib/vendor/puppet/type/file/content.rb +230 -0
  585. data/lib/vendor/puppet/type/file/ctime.rb +18 -0
  586. data/lib/vendor/puppet/type/file/ensure.rb +172 -0
  587. data/lib/vendor/puppet/type/file/group.rb +41 -0
  588. data/lib/vendor/puppet/type/file/mode.rb +148 -0
  589. data/lib/vendor/puppet/type/file/mtime.rb +17 -0
  590. data/lib/vendor/puppet/type/file/owner.rb +44 -0
  591. data/lib/vendor/puppet/type/file/selcontext.rb +123 -0
  592. data/lib/vendor/puppet/type/file/source.rb +195 -0
  593. data/lib/vendor/puppet/type/file/target.rb +87 -0
  594. data/lib/vendor/puppet/type/file/type.rb +19 -0
  595. data/lib/vendor/puppet/type/file.rb +829 -0
  596. data/lib/vendor/puppet/type/filebucket.rb +114 -0
  597. data/lib/vendor/puppet/type/group.rb +149 -0
  598. data/lib/vendor/puppet/type/host.rb +87 -0
  599. data/lib/vendor/puppet/type/interface.rb +112 -0
  600. data/lib/vendor/puppet/type/k5login.rb +88 -0
  601. data/lib/vendor/puppet/type/macauthorization.rb +167 -0
  602. data/lib/vendor/puppet/type/mailalias.rb +48 -0
  603. data/lib/vendor/puppet/type/maillist.rb +62 -0
  604. data/lib/vendor/puppet/type/mcx.rb +99 -0
  605. data/lib/vendor/puppet/type/mount.rb +241 -0
  606. data/lib/vendor/puppet/type/nagios_command.rb +3 -0
  607. data/lib/vendor/puppet/type/nagios_contact.rb +3 -0
  608. data/lib/vendor/puppet/type/nagios_contactgroup.rb +3 -0
  609. data/lib/vendor/puppet/type/nagios_host.rb +3 -0
  610. data/lib/vendor/puppet/type/nagios_hostdependency.rb +3 -0
  611. data/lib/vendor/puppet/type/nagios_hostescalation.rb +3 -0
  612. data/lib/vendor/puppet/type/nagios_hostextinfo.rb +3 -0
  613. data/lib/vendor/puppet/type/nagios_hostgroup.rb +3 -0
  614. data/lib/vendor/puppet/type/nagios_service.rb +3 -0
  615. data/lib/vendor/puppet/type/nagios_servicedependency.rb +3 -0
  616. data/lib/vendor/puppet/type/nagios_serviceescalation.rb +3 -0
  617. data/lib/vendor/puppet/type/nagios_serviceextinfo.rb +3 -0
  618. data/lib/vendor/puppet/type/nagios_servicegroup.rb +3 -0
  619. data/lib/vendor/puppet/type/nagios_timeperiod.rb +3 -0
  620. data/lib/vendor/puppet/type/notify.rb +44 -0
  621. data/lib/vendor/puppet/type/package.rb +357 -0
  622. data/lib/vendor/puppet/type/port.rb +119 -0
  623. data/lib/vendor/puppet/type/resources.rb +131 -0
  624. data/lib/vendor/puppet/type/router.rb +17 -0
  625. data/lib/vendor/puppet/type/schedule.rb +360 -0
  626. data/lib/vendor/puppet/type/scheduled_task.rb +166 -0
  627. data/lib/vendor/puppet/type/selboolean.rb +26 -0
  628. data/lib/vendor/puppet/type/selmodule.rb +59 -0
  629. data/lib/vendor/puppet/type/service.rb +221 -0
  630. data/lib/vendor/puppet/type/ssh_authorized_key.rb +112 -0
  631. data/lib/vendor/puppet/type/sshkey.rb +72 -0
  632. data/lib/vendor/puppet/type/stage.rb +19 -0
  633. data/lib/vendor/puppet/type/tidy.rb +333 -0
  634. data/lib/vendor/puppet/type/user.rb +524 -0
  635. data/lib/vendor/puppet/type/vlan.rb +26 -0
  636. data/lib/vendor/puppet/type/whit.rb +34 -0
  637. data/lib/vendor/puppet/type/yumrepo.rb +361 -0
  638. data/lib/vendor/puppet/type/zfs.rb +146 -0
  639. data/lib/vendor/puppet/type/zone.rb +492 -0
  640. data/lib/vendor/puppet/type/zpool.rb +91 -0
  641. data/lib/vendor/puppet/type.rb +1979 -0
  642. data/lib/vendor/puppet/util/adsi.rb +296 -0
  643. data/lib/vendor/puppet/util/autoload/file_cache.rb +92 -0
  644. data/lib/vendor/puppet/util/autoload.rb +158 -0
  645. data/lib/vendor/puppet/util/backups.rb +87 -0
  646. data/lib/vendor/puppet/util/cacher.rb +80 -0
  647. data/lib/vendor/puppet/util/checksums.rb +143 -0
  648. data/lib/vendor/puppet/util/classgen.rb +209 -0
  649. data/lib/vendor/puppet/util/colors.rb +128 -0
  650. data/lib/vendor/puppet/util/command_line.rb +185 -0
  651. data/lib/vendor/puppet/util/constant_inflector.rb +15 -0
  652. data/lib/vendor/puppet/util/diff.rb +77 -0
  653. data/lib/vendor/puppet/util/docs.rb +123 -0
  654. data/lib/vendor/puppet/util/errors.rb +63 -0
  655. data/lib/vendor/puppet/util/execution.rb +20 -0
  656. data/lib/vendor/puppet/util/execution_stub.rb +26 -0
  657. data/lib/vendor/puppet/util/feature.rb +83 -0
  658. data/lib/vendor/puppet/util/file_locking.rb +47 -0
  659. data/lib/vendor/puppet/util/fileparsing.rb +373 -0
  660. data/lib/vendor/puppet/util/filetype.rb +296 -0
  661. data/lib/vendor/puppet/util/graph.rb +27 -0
  662. data/lib/vendor/puppet/util/inifile.rb +203 -0
  663. data/lib/vendor/puppet/util/inline_docs.rb +26 -0
  664. data/lib/vendor/puppet/util/instance_loader.rb +81 -0
  665. data/lib/vendor/puppet/util/instrumentation/data.rb +34 -0
  666. data/lib/vendor/puppet/util/instrumentation/indirection_probe.rb +29 -0
  667. data/lib/vendor/puppet/util/instrumentation/instrumentable.rb +143 -0
  668. data/lib/vendor/puppet/util/instrumentation/listener.rb +60 -0
  669. data/lib/vendor/puppet/util/instrumentation/listeners/log.rb +29 -0
  670. data/lib/vendor/puppet/util/instrumentation/listeners/performance.rb +30 -0
  671. data/lib/vendor/puppet/util/instrumentation.rb +171 -0
  672. data/lib/vendor/puppet/util/ldap/connection.rb +74 -0
  673. data/lib/vendor/puppet/util/ldap/generator.rb +42 -0
  674. data/lib/vendor/puppet/util/ldap/manager.rb +279 -0
  675. data/lib/vendor/puppet/util/ldap.rb +2 -0
  676. data/lib/vendor/puppet/util/loadedfile.rb +61 -0
  677. data/lib/vendor/puppet/util/log/destination.rb +49 -0
  678. data/lib/vendor/puppet/util/log/destinations.rb +268 -0
  679. data/lib/vendor/puppet/util/log.rb +275 -0
  680. data/lib/vendor/puppet/util/log_paths.rb +22 -0
  681. data/lib/vendor/puppet/util/logging.rb +51 -0
  682. data/lib/vendor/puppet/util/metaid.rb +21 -0
  683. data/lib/vendor/puppet/util/methodhelper.rb +32 -0
  684. data/lib/vendor/puppet/util/metric.rb +186 -0
  685. data/lib/vendor/puppet/util/monkey_patches.rb +243 -0
  686. data/lib/vendor/puppet/util/nagios_maker.rb +60 -0
  687. data/lib/vendor/puppet/util/network_device/base.rb +27 -0
  688. data/lib/vendor/puppet/util/network_device/cisco/device.rb +257 -0
  689. data/lib/vendor/puppet/util/network_device/cisco/facts.rb +72 -0
  690. data/lib/vendor/puppet/util/network_device/cisco/interface.rb +82 -0
  691. data/lib/vendor/puppet/util/network_device/cisco.rb +4 -0
  692. data/lib/vendor/puppet/util/network_device/config.rb +92 -0
  693. data/lib/vendor/puppet/util/network_device/ipcalc.rb +68 -0
  694. data/lib/vendor/puppet/util/network_device/transport/base.rb +26 -0
  695. data/lib/vendor/puppet/util/network_device/transport/ssh.rb +121 -0
  696. data/lib/vendor/puppet/util/network_device/transport/telnet.rb +42 -0
  697. data/lib/vendor/puppet/util/network_device/transport.rb +3 -0
  698. data/lib/vendor/puppet/util/network_device.rb +17 -0
  699. data/lib/vendor/puppet/util/package.rb +31 -0
  700. data/lib/vendor/puppet/util/pidlock.rb +117 -0
  701. data/lib/vendor/puppet/util/platform.rb +22 -0
  702. data/lib/vendor/puppet/util/plugins.rb +82 -0
  703. data/lib/vendor/puppet/util/posix.rb +137 -0
  704. data/lib/vendor/puppet/util/provider_features.rb +168 -0
  705. data/lib/vendor/puppet/util/pson.rb +13 -0
  706. data/lib/vendor/puppet/util/queue/stomp.rb +60 -0
  707. data/lib/vendor/puppet/util/queue.rb +96 -0
  708. data/lib/vendor/puppet/util/rails/cache_accumulator.rb +65 -0
  709. data/lib/vendor/puppet/util/rails/collection_merger.rb +17 -0
  710. data/lib/vendor/puppet/util/rails/reference_serializer.rb +32 -0
  711. data/lib/vendor/puppet/util/rdoc.rb +87 -0
  712. data/lib/vendor/puppet/util/reference.rb +124 -0
  713. data/lib/vendor/puppet/util/resource_template.rb +61 -0
  714. data/lib/vendor/puppet/util/retryaction.rb +48 -0
  715. data/lib/vendor/puppet/util/run_mode.rb +82 -0
  716. data/lib/vendor/puppet/util/selinux.rb +211 -0
  717. data/lib/vendor/puppet/util/settings/boolean_setting.rb +30 -0
  718. data/lib/vendor/puppet/util/settings/file_setting.rb +135 -0
  719. data/lib/vendor/puppet/util/settings/setting.rb +94 -0
  720. data/lib/vendor/puppet/util/settings.rb +926 -0
  721. data/lib/vendor/puppet/util/storage.rb +96 -0
  722. data/lib/vendor/puppet/util/subclass_loader.rb +82 -0
  723. data/lib/vendor/puppet/util/suidmanager.rb +173 -0
  724. data/lib/vendor/puppet/util/symbolic_file_mode.rb +140 -0
  725. data/lib/vendor/puppet/util/tagging.rb +78 -0
  726. data/lib/vendor/puppet/util/terminal.rb +16 -0
  727. data/lib/vendor/puppet/util/user_attr.rb +21 -0
  728. data/lib/vendor/puppet/util/warnings.rb +29 -0
  729. data/lib/vendor/puppet/util/windows/error.rb +16 -0
  730. data/lib/vendor/puppet/util/windows/file.rb +27 -0
  731. data/lib/vendor/puppet/util/windows/process.rb +33 -0
  732. data/lib/vendor/puppet/util/windows/security.rb +622 -0
  733. data/lib/vendor/puppet/util/windows/sid.rb +96 -0
  734. data/lib/vendor/puppet/util/windows/user.rb +106 -0
  735. data/lib/vendor/puppet/util/windows.rb +8 -0
  736. data/lib/vendor/puppet/util/zaml.rb +407 -0
  737. data/lib/vendor/puppet/util.rb +646 -0
  738. data/lib/vendor/puppet/version.rb +18 -0
  739. data/lib/vendor/puppet.rb +125 -0
  740. data/lib/vendor/semver.rb +124 -0
  741. data/puppet-parse.gemspec +2 -8
  742. metadata +812 -94
@@ -0,0 +1,322 @@
1
+ require 'puppet/interface'
2
+ require 'puppet/interface/documentation'
3
+ require 'prettyprint'
4
+
5
+ class Puppet::Interface::Action
6
+ extend Puppet::Interface::DocGen
7
+ include Puppet::Interface::FullDocs
8
+
9
+ def initialize(face, name, attrs = {})
10
+ raise "#{name.inspect} is an invalid action name" unless name.to_s =~ /^[a-z]\w*$/
11
+ @face = face
12
+ @name = name.to_sym
13
+
14
+ # The few bits of documentation we actually demand. The default license
15
+ # is a favour to our end users; if you happen to get that in a core face
16
+ # report it as a bug, please. --daniel 2011-04-26
17
+ @authors = []
18
+ @license = 'All Rights Reserved'
19
+
20
+ attrs.each do |k, v| send("#{k}=", v) end
21
+
22
+ # @options collects the added options in the order they're declared.
23
+ # @options_hash collects the options keyed by alias for quick lookups.
24
+ @options = []
25
+ @options_hash = {}
26
+ @when_rendering = {}
27
+ end
28
+
29
+ # This is not nice, but it is the easiest way to make us behave like the
30
+ # Ruby Method object rather than UnboundMethod. Duplication is vaguely
31
+ # annoying, but at least we are a shallow clone. --daniel 2011-04-12
32
+ def __dup_and_rebind_to(to)
33
+ bound_version = self.dup
34
+ bound_version.instance_variable_set(:@face, to)
35
+ return bound_version
36
+ end
37
+
38
+ def to_s() "#{@face}##{@name}" end
39
+
40
+ attr_reader :name
41
+ attr_reader :face
42
+ attr_accessor :default
43
+ def default?
44
+ !!@default
45
+ end
46
+
47
+ ########################################################################
48
+ # Documentation...
49
+ attr_doc :returns
50
+ attr_doc :arguments
51
+ def synopsis
52
+ build_synopsis(@face.name, default? ? nil : name, arguments)
53
+ end
54
+
55
+ ########################################################################
56
+ # Support for rendering formats and all.
57
+ def when_rendering(type)
58
+ unless type.is_a? Symbol
59
+ raise ArgumentError, "The rendering format must be a symbol, not #{type.class.name}"
60
+ end
61
+ # Do we have a rendering hook for this name?
62
+ return @when_rendering[type].bind(@face) if @when_rendering.has_key? type
63
+
64
+ # How about by another name?
65
+ alt = type.to_s.sub(/^to_/, '').to_sym
66
+ return @when_rendering[alt].bind(@face) if @when_rendering.has_key? alt
67
+
68
+ # Guess not, nothing to run.
69
+ return nil
70
+ end
71
+ def set_rendering_method_for(type, proc)
72
+ unless proc.is_a? Proc
73
+ msg = "The second argument to set_rendering_method_for must be a Proc"
74
+ msg += ", not #{proc.class.name}" unless proc.nil?
75
+ raise ArgumentError, msg
76
+ end
77
+
78
+ if proc.arity != 1 and proc.arity != (@positional_arg_count + 1)
79
+ msg = "the when_rendering method for the #{@face.name} face #{name} action "
80
+ msg += "takes either just one argument, the result of when_invoked, "
81
+ msg += "or the result plus the #{@positional_arg_count} arguments passed "
82
+ msg += "to the when_invoked block, not "
83
+ if proc.arity < 0 then
84
+ msg += "a variable number"
85
+ else
86
+ msg += proc.arity.to_s
87
+ end
88
+ raise ArgumentError, msg
89
+ end
90
+ unless type.is_a? Symbol
91
+ raise ArgumentError, "The rendering format must be a symbol, not #{type.class.name}"
92
+ end
93
+ if @when_rendering.has_key? type then
94
+ raise ArgumentError, "You can't define a rendering method for #{type} twice"
95
+ end
96
+ # Now, the ugly bit. We add the method to our interface object, and
97
+ # retrieve it, to rotate through the dance of getting a suitable method
98
+ # object out of the whole process. --daniel 2011-04-18
99
+ @when_rendering[type] =
100
+ @face.__send__( :__add_method, __render_method_name_for(type), proc)
101
+ end
102
+
103
+ def __render_method_name_for(type)
104
+ :"#{name}_when_rendering_#{type}"
105
+ end
106
+ private :__render_method_name_for
107
+
108
+
109
+ attr_accessor :render_as
110
+ def render_as=(value)
111
+ @render_as = value.to_sym
112
+ end
113
+
114
+
115
+ ########################################################################
116
+ # Initially, this was defined to allow the @action.invoke pattern, which is
117
+ # a very natural way to invoke behaviour given our introspection
118
+ # capabilities. Heck, our initial plan was to have the faces delegate to
119
+ # the action object for invocation and all.
120
+ #
121
+ # It turns out that we have a binding problem to solve: @face was bound to
122
+ # the parent class, not the subclass instance, and we don't pass the
123
+ # appropriate context or change the binding enough to make this work.
124
+ #
125
+ # We could hack around it, by either mandating that you pass the context in
126
+ # to invoke, or try to get the binding right, but that has probably got
127
+ # subtleties that we don't instantly think of – especially around threads.
128
+ #
129
+ # So, we are pulling this method for now, and will return it to life when we
130
+ # have the time to resolve the problem. For now, you should replace...
131
+ #
132
+ # @action = @face.get_action(name)
133
+ # @action.invoke(arg1, arg2, arg3)
134
+ #
135
+ # ...with...
136
+ #
137
+ # @action = @face.get_action(name)
138
+ # @face.send(@action.name, arg1, arg2, arg3)
139
+ #
140
+ # I understand that is somewhat cumbersome, but it functions as desired.
141
+ # --daniel 2011-03-31
142
+ #
143
+ # PS: This code is left present, but commented, to support this chunk of
144
+ # documentation, for the benefit of the reader.
145
+ #
146
+ # def invoke(*args, &block)
147
+ # @face.send(name, *args, &block)
148
+ # end
149
+
150
+
151
+ # We need to build an instance method as a wrapper, using normal code, to be
152
+ # able to expose argument defaulting between the caller and definer in the
153
+ # Ruby API. An extra method is, sadly, required for Ruby 1.8 to work since
154
+ # it doesn't expose bind on a block.
155
+ #
156
+ # Hopefully we can improve this when we finally shuffle off the last of Ruby
157
+ # 1.8 support, but that looks to be a few "enterprise" release eras away, so
158
+ # we are pretty stuck with this for now.
159
+ #
160
+ # Patches to make this work more nicely with Ruby 1.9 using runtime version
161
+ # checking and all are welcome, provided that they don't change anything
162
+ # outside this little ol' bit of code and all.
163
+ #
164
+ # Incidentally, we though about vendoring evil-ruby and actually adjusting
165
+ # the internal C structure implementation details under the hood to make
166
+ # this stuff work, because it would have been cleaner. Which gives you an
167
+ # idea how motivated we were to make this cleaner. Sorry.
168
+ # --daniel 2011-03-31
169
+ attr_reader :positional_arg_count
170
+ attr_accessor :when_invoked
171
+ def when_invoked=(block)
172
+
173
+ internal_name = "#{@name} implementation, required on Ruby 1.8".to_sym
174
+
175
+ arity = @positional_arg_count = block.arity
176
+ if arity == 0 then
177
+ # This will never fire on 1.8.7, which treats no arguments as "*args",
178
+ # but will on 1.9.2, which treats it as "no arguments". Which bites,
179
+ # because this just begs for us to wind up in the horrible situation
180
+ # where a 1.8 vs 1.9 error bites our end users. --daniel 2011-04-19
181
+ raise ArgumentError, "when_invoked requires at least one argument (options) for action #{@name}"
182
+ elsif arity > 0 then
183
+ range = Range.new(1, arity - 1)
184
+ decl = range.map { |x| "arg#{x}" } << "options = {}"
185
+ optn = ""
186
+ args = "[" + (range.map { |x| "arg#{x}" } << "options").join(", ") + "]"
187
+ else
188
+ range = Range.new(1, arity.abs - 1)
189
+ decl = range.map { |x| "arg#{x}" } << "*rest"
190
+ optn = "rest << {} unless rest.last.is_a?(Hash)"
191
+ if arity == -1 then
192
+ args = "rest"
193
+ else
194
+ args = "[" + range.map { |x| "arg#{x}" }.join(", ") + "] + rest"
195
+ end
196
+ end
197
+
198
+ file = __FILE__ + "+eval[wrapper]"
199
+ line = __LINE__ + 2 # <== points to the same line as 'def' in the wrapper.
200
+ wrapper = <<WRAPPER
201
+ def #{@name}(#{decl.join(", ")})
202
+ #{optn}
203
+ args = #{args}
204
+ action = get_action(#{name.inspect})
205
+ args << action.validate_and_clean(args.pop)
206
+ __invoke_decorations(:before, action, args, args.last)
207
+ rval = self.__send__(#{internal_name.inspect}, *args)
208
+ __invoke_decorations(:after, action, args, args.last)
209
+ return rval
210
+ end
211
+ WRAPPER
212
+
213
+ if @face.is_a?(Class)
214
+ @face.class_eval do eval wrapper, nil, file, line end
215
+ @face.send(:define_method, internal_name, &block)
216
+ @when_invoked = @face.instance_method(name)
217
+ else
218
+ @face.instance_eval do eval wrapper, nil, file, line end
219
+ @face.meta_def(internal_name, &block)
220
+ @when_invoked = @face.method(name).unbind
221
+ end
222
+ end
223
+
224
+ def add_option(option)
225
+ option.aliases.each do |name|
226
+ if conflict = get_option(name) then
227
+ raise ArgumentError, "Option #{option} conflicts with existing option #{conflict}"
228
+ elsif conflict = @face.get_option(name) then
229
+ raise ArgumentError, "Option #{option} conflicts with existing option #{conflict} on #{@face}"
230
+ end
231
+ end
232
+
233
+ @options << option.name
234
+
235
+ option.aliases.each do |name|
236
+ @options_hash[name] = option
237
+ end
238
+
239
+ option
240
+ end
241
+
242
+ def option?(name)
243
+ @options_hash.include? name.to_sym
244
+ end
245
+
246
+ def options
247
+ @face.options + @options
248
+ end
249
+
250
+ def get_option(name, with_inherited_options = true)
251
+ option = @options_hash[name.to_sym]
252
+ if option.nil? and with_inherited_options
253
+ option = @face.get_option(name)
254
+ end
255
+ option
256
+ end
257
+
258
+ def validate_and_clean(original)
259
+ # The final set of arguments; effectively a hand-rolled shallow copy of
260
+ # the original, which protects the caller from the surprises they might
261
+ # get if they passed us a hash and we mutated it...
262
+ result = {}
263
+
264
+ # Check for multiple aliases for the same option, and canonicalize the
265
+ # name of the argument while we are about it.
266
+ overlap = Hash.new do |h, k| h[k] = [] end
267
+ unknown = []
268
+ original.keys.each do |name|
269
+ if option = get_option(name) then
270
+ canonical = option.name
271
+ if result.has_key? canonical
272
+ overlap[canonical] << name
273
+ else
274
+ result[canonical] = original[name]
275
+ end
276
+ elsif Puppet.settings.include? name
277
+ result[name] = original[name]
278
+ else
279
+ unknown << name
280
+ end
281
+ end
282
+
283
+ unless overlap.empty?
284
+ msg = overlap.map {|k, v| "(#{k}, #{v.sort.join(', ')})" }.join(", ")
285
+ raise ArgumentError, "Multiple aliases for the same option passed: #{msg}"
286
+ end
287
+
288
+ unless unknown.empty?
289
+ msg = unknown.sort.join(", ")
290
+ raise ArgumentError, "Unknown options passed: #{msg}"
291
+ end
292
+
293
+ # Inject default arguments and check for missing mandating options.
294
+ missing = []
295
+ options.map {|x| get_option(x) }.each do |option|
296
+ name = option.name
297
+ next if result.has_key? name
298
+
299
+ if option.has_default?
300
+ result[name] = option.default
301
+ elsif option.required?
302
+ missing << name
303
+ end
304
+ end
305
+
306
+ unless missing.empty?
307
+ msg = missing.sort.join(', ')
308
+ raise ArgumentError, "The following options are required: #{msg}"
309
+ end
310
+
311
+ # All done.
312
+ return result
313
+ end
314
+
315
+ ########################################################################
316
+ # Support code for action decoration; see puppet/interface.rb for the gory
317
+ # details of why this is hidden away behind private. --daniel 2011-04-15
318
+ private
319
+ def __add_method(name, proc)
320
+ @face.__send__ :__add_method, name, proc
321
+ end
322
+ end
@@ -0,0 +1,74 @@
1
+ require 'puppet/interface'
2
+ require 'puppet/interface/action'
3
+
4
+ class Puppet::Interface::ActionBuilder
5
+ attr_reader :action
6
+
7
+ def self.build(face, name, &block)
8
+ raise "Action #{name.inspect} must specify a block" unless block
9
+ new(face, name, &block).action
10
+ end
11
+
12
+ # Ideally the method we're defining here would be added to the action, and a
13
+ # method on the face would defer to it, but we can't get scope correct, so
14
+ # we stick with this. --daniel 2011-03-24
15
+ def when_invoked(&block)
16
+ @action.when_invoked = block
17
+ end
18
+
19
+ def when_rendering(type = nil, &block)
20
+ if type.nil? then # the default error message sucks --daniel 2011-04-18
21
+ raise ArgumentError, 'You must give a rendering format to when_rendering'
22
+ end
23
+ if block.nil? then
24
+ raise ArgumentError, 'You must give a block to when_rendering'
25
+ end
26
+ @action.set_rendering_method_for(type, block)
27
+ end
28
+
29
+ def option(*declaration, &block)
30
+ option = Puppet::Interface::OptionBuilder.build(@action, *declaration, &block)
31
+ @action.add_option(option)
32
+ end
33
+
34
+ def default(value = true)
35
+ @action.default = !!value
36
+ end
37
+
38
+ def render_as(value = nil)
39
+ value.nil? and raise ArgumentError, "You must give a rendering format to render_as"
40
+
41
+ formats = Puppet::Network::FormatHandler.formats
42
+ unless formats.include? value
43
+ raise ArgumentError, "#{value.inspect} is not a valid rendering format: #{formats.sort.join(", ")}"
44
+ end
45
+
46
+ @action.render_as = value
47
+ end
48
+
49
+ # Metaprogram the simple DSL from the target class.
50
+ Puppet::Interface::Action.instance_methods.grep(/=$/).each do |setter|
51
+ next if setter =~ /^=/
52
+ property = setter.to_s.chomp('=')
53
+
54
+ unless method_defined? property
55
+ # Using eval because the argument handling semantics are less awful than
56
+ # when we use the define_method/block version. The later warns on older
57
+ # Ruby versions if you pass the wrong number of arguments, but carries
58
+ # on, which is totally not what we want. --daniel 2011-04-18
59
+ eval <<-METHOD
60
+ def #{property}(value)
61
+ @action.#{property} = value
62
+ end
63
+ METHOD
64
+ end
65
+ end
66
+
67
+ private
68
+ def initialize(face, name, &block)
69
+ @face = face
70
+ @action = Puppet::Interface::Action.new(face, name)
71
+ instance_eval(&block)
72
+ @action.when_invoked or raise ArgumentError, "actions need to know what to do when_invoked; please add the block"
73
+ end
74
+ end
@@ -0,0 +1,74 @@
1
+ require 'puppet/interface/action'
2
+ require 'puppet/interface/action_builder'
3
+
4
+ module Puppet::Interface::ActionManager
5
+ # Declare that this app can take a specific action, and provide
6
+ # the code to do so.
7
+ def action(name, &block)
8
+ @actions ||= {}
9
+ raise "Action #{name} already defined for #{self}" if action?(name)
10
+
11
+ action = Puppet::Interface::ActionBuilder.build(self, name, &block)
12
+
13
+ if action.default and current = get_default_action
14
+ raise "Actions #{current.name} and #{name} cannot both be default"
15
+ end
16
+
17
+ @actions[action.name] = action
18
+ end
19
+
20
+ # This is the short-form of an action definition; it doesn't use the
21
+ # builder, just creates the action directly from the block.
22
+ def script(name, &block)
23
+ @actions ||= {}
24
+ raise "Action #{name} already defined for #{self}" if action?(name)
25
+ @actions[name] = Puppet::Interface::Action.new(self, name, :when_invoked => block)
26
+ end
27
+
28
+ def actions
29
+ @actions ||= {}
30
+ result = @actions.keys
31
+
32
+ if self.is_a?(Class) and superclass.respond_to?(:actions)
33
+ result += superclass.actions
34
+ elsif self.class.respond_to?(:actions)
35
+ result += self.class.actions
36
+ end
37
+ # We need to uniq the result, because we duplicate actions when they are
38
+ # fetched to ensure that they have the correct bindings; they shadow the
39
+ # parent, and uniq implements that. --daniel 2011-06-01
40
+ result.uniq.sort
41
+ end
42
+
43
+ def get_action(name)
44
+ @actions ||= {}
45
+ result = @actions[name.to_sym]
46
+ if result.nil?
47
+ if self.is_a?(Class) and superclass.respond_to?(:get_action)
48
+ found = superclass.get_action(name)
49
+ elsif self.class.respond_to?(:get_action)
50
+ found = self.class.get_action(name)
51
+ end
52
+
53
+ if found then
54
+ # This is not the nicest way to make action equivalent to the Ruby
55
+ # Method object, rather than UnboundMethod, but it will do for now,
56
+ # and we only have to make this change in *one* place. --daniel 2011-04-12
57
+ result = @actions[name.to_sym] = found.__dup_and_rebind_to(self)
58
+ end
59
+ end
60
+ return result
61
+ end
62
+
63
+ def get_default_action
64
+ default = actions.map {|x| get_action(x) }.select {|x| x.default }
65
+ if default.length > 1
66
+ raise "The actions #{default.map(&:name).join(", ")} cannot all be default"
67
+ end
68
+ default.first
69
+ end
70
+
71
+ def action?(name)
72
+ actions.include?(name.to_sym)
73
+ end
74
+ end
@@ -0,0 +1,230 @@
1
+ # This isn't usable outside Puppet::Interface; don't load it alone.
2
+ class Puppet::Interface
3
+ module DocGen
4
+ def self.strip_whitespace(text)
5
+ text.gsub!(/[ \t\f]+$/, '')
6
+
7
+ # We need to identify an indent: the minimum number of whitespace
8
+ # characters at the start of any line in the text.
9
+ #
10
+ # Using split rather than each_line is because the later only takes a
11
+ # block on Ruby 1.8.5 / Centos, and we support that. --daniel 2011-05-03
12
+ indent = text.split(/\n/).map {|x| x.index(/[^\s]/) }.compact.min
13
+
14
+ if indent > 0 then
15
+ text.gsub!(/^[ \t\f]{0,#{indent}}/, '')
16
+ end
17
+
18
+ return text
19
+ end
20
+
21
+ # The documentation attributes all have some common behaviours; previously
22
+ # we open-coded them across the set of six things, but that seemed
23
+ # wasteful - especially given that they were literally the same, and had
24
+ # the same bug hidden in them.
25
+ #
26
+ # This feels a bit like overkill, but at least the common code is common
27
+ # now. --daniel 2011-04-29
28
+ def attr_doc(name, &validate)
29
+ # Now, which form of the setter do we want, validated or not?
30
+ get_arg = "value.to_s"
31
+ if validate
32
+ define_method(:"_validate_#{name}", validate)
33
+ get_arg = "_validate_#{name}(#{get_arg})"
34
+ end
35
+
36
+ # We use module_eval, which I don't like much, because we can't have an
37
+ # argument to a block with a default value in Ruby 1.8, and I don't like
38
+ # the side-effects (eg: no argument count validation) of using blocks
39
+ # without as metheds. When we are 1.9 only (hah!) you can totally
40
+ # replace this with some up-and-up define_method. --daniel 2011-04-29
41
+ module_eval(<<-EOT, __FILE__, __LINE__ + 1)
42
+ def #{name}(value = nil)
43
+ self.#{name} = value unless value.nil?
44
+ @#{name}
45
+ end
46
+
47
+ def #{name}=(value)
48
+ @#{name} = Puppet::Interface::DocGen.strip_whitespace(#{get_arg})
49
+ end
50
+ EOT
51
+ end
52
+ end
53
+
54
+ module TinyDocs
55
+ extend Puppet::Interface::DocGen
56
+
57
+ attr_doc :summary do |value|
58
+ value =~ /\n/ and
59
+ raise ArgumentError, "Face summary should be a single line; put the long text in 'description' instead."
60
+ value
61
+ end
62
+
63
+ attr_doc :description
64
+
65
+ def build_synopsis(face, action = nil, arguments = nil)
66
+ output = PrettyPrint.format do |s|
67
+ s.text("puppet #{face}")
68
+ s.text(" #{action}") unless action.nil?
69
+ s.text(" ")
70
+
71
+ options.each do |option|
72
+ option = get_option(option)
73
+ wrap = option.required? ? %w{ < > } : %w{ [ ] }
74
+
75
+ s.group(0, *wrap) do
76
+ option.optparse.each do |item|
77
+ unless s.current_group.first?
78
+ s.breakable
79
+ s.text '|'
80
+ s.breakable
81
+ end
82
+ s.text item
83
+ end
84
+ end
85
+
86
+ s.breakable
87
+ end
88
+
89
+ if arguments then
90
+ s.text arguments.to_s
91
+ end
92
+ end
93
+ end
94
+
95
+ end
96
+
97
+ module FullDocs
98
+ extend Puppet::Interface::DocGen
99
+ include TinyDocs
100
+
101
+ attr_doc :examples
102
+ attr_doc :notes
103
+ attr_doc :license
104
+
105
+ attr_doc :short_description
106
+ def short_description(value = nil)
107
+ self.short_description = value unless value.nil?
108
+ if @short_description.nil? then
109
+ return nil if @description.nil?
110
+ lines = @description.split("\n")
111
+ first_paragraph_break = lines.index('') || 5
112
+ grab = [5, first_paragraph_break].min
113
+ @short_description = lines[0, grab].join("\n")
114
+ @short_description += ' [...]' if (grab < lines.length and first_paragraph_break >= 5)
115
+ end
116
+ @short_description
117
+ end
118
+
119
+ def author(value = nil)
120
+ unless value.nil? then
121
+ unless value.is_a? String
122
+ raise ArgumentError, 'author must be a string; use multiple statements for multiple authors'
123
+ end
124
+
125
+ if value =~ /\n/ then
126
+ raise ArgumentError, 'author should be a single line; use multiple statements for multiple authors'
127
+ end
128
+ @authors.push(Puppet::Interface::DocGen.strip_whitespace(value))
129
+ end
130
+ @authors.empty? ? nil : @authors.join("\n")
131
+ end
132
+ def authors
133
+ @authors
134
+ end
135
+ def author=(value)
136
+ if Array(value).any? {|x| x =~ /\n/ } then
137
+ raise ArgumentError, 'author should be a single line; use multiple statements'
138
+ end
139
+ @authors = Array(value).map{|x| Puppet::Interface::DocGen.strip_whitespace(x) }
140
+ end
141
+ alias :authors= :author=
142
+
143
+ def copyright(owner = nil, years = nil)
144
+ if years.nil? and not owner.nil? then
145
+ raise ArgumentError, 'copyright takes the owners names, then the years covered'
146
+ end
147
+ self.copyright_owner = owner unless owner.nil?
148
+ self.copyright_years = years unless years.nil?
149
+
150
+ if self.copyright_years or self.copyright_owner then
151
+ "Copyright #{self.copyright_years} by #{self.copyright_owner}"
152
+ else
153
+ "Unknown copyright owner and years."
154
+ end
155
+ end
156
+
157
+ attr_accessor :copyright_owner
158
+ def copyright_owner=(value)
159
+ case value
160
+ when String then @copyright_owner = value
161
+ when Array then @copyright_owner = value.join(", ")
162
+ else
163
+ raise ArgumentError, "copyright owner must be a string or an array of strings"
164
+ end
165
+ @copyright_owner
166
+ end
167
+
168
+ attr_accessor :copyright_years
169
+ def copyright_years=(value)
170
+ years = munge_copyright_year value
171
+ years = (years.is_a?(Array) ? years : [years]).
172
+ sort_by do |x| x.is_a?(Range) ? x.first : x end
173
+
174
+ @copyright_years = years.map do |year|
175
+ if year.is_a? Range then
176
+ "#{year.first}-#{year.last}"
177
+ else
178
+ year
179
+ end
180
+ end.join(", ")
181
+ end
182
+
183
+ def munge_copyright_year(input)
184
+ case input
185
+ when Range then input
186
+ when Integer then
187
+ if input < 1970 then
188
+ fault = "before 1970"
189
+ elsif input > (future = Time.now.year + 2) then
190
+ fault = "after #{future}"
191
+ end
192
+ if fault then
193
+ raise ArgumentError, "copyright with a year #{fault} is very strange; did you accidentally add or subtract two years?"
194
+ end
195
+
196
+ input
197
+
198
+ when String then
199
+ input.strip.split(/,/).map do |part|
200
+ part = part.strip
201
+ if part =~ /^\d+$/ then
202
+ part.to_i
203
+ elsif found = part.split(/-/) then
204
+ unless found.length == 2 and found.all? {|x| x.strip =~ /^\d+$/ }
205
+ raise ArgumentError, "#{part.inspect} is not a good copyright year or range"
206
+ end
207
+ Range.new(found[0].to_i, found[1].to_i)
208
+ else
209
+ raise ArgumentError, "#{part.inspect} is not a good copyright year or range"
210
+ end
211
+ end
212
+
213
+ when Array then
214
+ result = []
215
+ input.each do |item|
216
+ item = munge_copyright_year item
217
+ if item.is_a? Array
218
+ result.concat item
219
+ else
220
+ result << item
221
+ end
222
+ end
223
+ result
224
+
225
+ else
226
+ raise ArgumentError, "#{input.inspect} is not a good copyright year, set, or range"
227
+ end
228
+ end
229
+ end
230
+ end