rbcli 0.3.3 → 0.4.0

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 (506) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +9 -0
  3. data/LICENSE.txt +5 -670
  4. data/README.md +64 -160
  5. data/VERSION +1 -0
  6. data/exe/rbcli +181 -242
  7. data/lib/rbcli/components/commands/command.rb +120 -0
  8. data/lib/rbcli/components/commands/command.rb.erb +55 -0
  9. data/lib/rbcli/components/commands/command_old.rb +105 -0
  10. data/lib/rbcli/components/commands/script.rb.erb +43 -0
  11. data/{lib-sh → lib/rbcli/components/commands/scriptwrapper}/lib-rbcli.sh +29 -34
  12. data/lib/rbcli/components/commands/scriptwrapper/scriptwrapper.rb +64 -0
  13. data/lib/rbcli/components/config/backend.rb +102 -0
  14. data/lib/rbcli/components/config/backends/env.rb +67 -0
  15. data/lib/rbcli/components/config/backends/helpers/deep_assign.rb +47 -0
  16. data/lib/rbcli/components/config/backends/ini.rb +53 -0
  17. data/lib/rbcli/components/config/backends/json.rb +32 -0
  18. data/lib/rbcli/components/config/backends/null.rb +32 -0
  19. data/lib/rbcli/components/config/backends/toml.rb +38 -0
  20. data/lib/rbcli/components/config/backends/yaml.rb +31 -0
  21. data/lib/rbcli/components/config/component.rb +33 -0
  22. data/lib/rbcli/components/config/config.rb +165 -0
  23. data/lib/rbcli/components/config/config_of_death.rb +12 -0
  24. data/lib/rbcli/components/config/template.rb.erb +36 -0
  25. data/lib/rbcli/components/core/configurate.rb +63 -0
  26. data/lib/rbcli/components/core/engine.rb +30 -0
  27. data/lib/rbcli/components/core/warehouse.rb +18 -0
  28. data/lib/rbcli/components/envvars/component.rb +20 -0
  29. data/lib/rbcli/components/envvars/template.rb.erb +24 -0
  30. data/lib/rbcli/components/hooks/component.rb +36 -0
  31. data/lib/rbcli/components/hooks/template.rb.erb +20 -0
  32. data/lib/rbcli/components/logger/component.rb +32 -0
  33. data/lib/rbcli/components/logger/logger.rb +155 -0
  34. data/lib/rbcli/components/logger/lolcat/lol.rb +71 -0
  35. data/lib/rbcli/components/logger/template.rb.erb +40 -0
  36. data/lib/rbcli/components/parser/component.rb +33 -0
  37. data/lib/rbcli/{util → components/parser/optimist}/optimist.rb +134 -48
  38. data/lib/rbcli/components/parser/parser.rb +178 -0
  39. data/lib/rbcli/components/parser/template.rb.erb +35 -0
  40. data/lib/rbcli/components/updatechecker/common/common.rb +52 -0
  41. data/lib/rbcli/components/updatechecker/component.rb +42 -0
  42. data/lib/rbcli/components/updatechecker/gem_checker.rb +40 -0
  43. data/lib/rbcli/components/updatechecker/github_checker.rb +46 -0
  44. data/lib/rbcli/components/updatechecker/template.rb.erb +14 -0
  45. data/lib/rbcli/util/deprecation_warning.rb +41 -55
  46. data/lib/rbcli/util/errors.rb +12 -0
  47. data/lib/rbcli/util/exit.rb +12 -0
  48. data/lib/rbcli/util/hash_deep_symbolize.rb +26 -41
  49. data/lib/rbcli/util/string_compression.rb +10 -0
  50. data/lib/rbcli/version.rb +5 -20
  51. data/lib/rbcli-tool/helpers.rb +58 -0
  52. data/lib/rbcli-tool/skeletons/gem.rb.erb +17 -0
  53. data/lib/rbcli-tool/skeletons/portable.rb.erb +48 -0
  54. data/lib/rbcli.rb +19 -50
  55. data/sig/rbcli.rbs +9 -0
  56. metadata +125 -496
  57. data/.gitignore +0 -60
  58. data/.rakeTasks +0 -7
  59. data/.rbenv-gemsets +0 -1
  60. data/.travis.yml +0 -5
  61. data/CHANGELOG.md +0 -193
  62. data/CODE_OF_CONDUCT.md +0 -74
  63. data/Gemfile +0 -6
  64. data/Gemfile.lock +0 -92
  65. data/Rakefile +0 -10
  66. data/bin/console +0 -33
  67. data/bin/setup +0 -28
  68. data/docs/404.html +0 -59
  69. data/docs/advanced/automatic_updates/index.html +0 -1174
  70. data/docs/advanced/command_types/index.html +0 -1262
  71. data/docs/advanced/distributed_state_locking/index.html +0 -1176
  72. data/docs/advanced/hooks/index.html +0 -1192
  73. data/docs/advanced/index.html +0 -1140
  74. data/docs/advanced/index.xml +0 -75
  75. data/docs/advanced/interactive_commands/index.html +0 -1177
  76. data/docs/advanced/logging/index.html +0 -1184
  77. data/docs/advanced/remote_execution/index.html +0 -1190
  78. data/docs/advanced/state_storage/index.html +0 -1281
  79. data/docs/advanced/user_config_files/index.html +0 -1209
  80. data/docs/categories/index.html +0 -1146
  81. data/docs/categories/index.xml +0 -11
  82. data/docs/css/atom-one-dark-reasonable.css +0 -77
  83. data/docs/css/auto-complete.css +0 -47
  84. data/docs/css/featherlight.min.css +0 -8
  85. data/docs/css/fontawesome-all.min.css +0 -1
  86. data/docs/css/hugo-theme.css +0 -254
  87. data/docs/css/hybrid.css +0 -102
  88. data/docs/css/nucleus.css +0 -615
  89. data/docs/css/perfect-scrollbar.min.css +0 -2
  90. data/docs/css/tags.css +0 -49
  91. data/docs/css/theme-blue.css +0 -111
  92. data/docs/css/theme-green.css +0 -111
  93. data/docs/css/theme-red.css +0 -111
  94. data/docs/css/theme.css +0 -1136
  95. data/docs/development/changelog/index.html +0 -1420
  96. data/docs/development/code_of_conduct/index.html +0 -1222
  97. data/docs/development/contributing/index.html +0 -1201
  98. data/docs/development/index.html +0 -1140
  99. data/docs/development/index.xml +0 -40
  100. data/docs/development/license/index.html +0 -1165
  101. data/docs/fonts/Inconsolata.eot +0 -0
  102. data/docs/fonts/Inconsolata.svg +0 -1
  103. data/docs/fonts/Inconsolata.ttf +0 -0
  104. data/docs/fonts/Inconsolata.woff +0 -0
  105. data/docs/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  106. data/docs/fonts/Novecentosanswide-Normal-webfont.svg +0 -1
  107. data/docs/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  108. data/docs/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  109. data/docs/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  110. data/docs/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  111. data/docs/fonts/Novecentosanswide-UltraLight-webfont.svg +0 -1
  112. data/docs/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  113. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  114. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  115. data/docs/fonts/Work_Sans_200.eot +0 -0
  116. data/docs/fonts/Work_Sans_200.svg +0 -1
  117. data/docs/fonts/Work_Sans_200.ttf +0 -0
  118. data/docs/fonts/Work_Sans_200.woff +0 -0
  119. data/docs/fonts/Work_Sans_200.woff2 +0 -0
  120. data/docs/fonts/Work_Sans_300.eot +0 -0
  121. data/docs/fonts/Work_Sans_300.svg +0 -1
  122. data/docs/fonts/Work_Sans_300.ttf +0 -0
  123. data/docs/fonts/Work_Sans_300.woff +0 -0
  124. data/docs/fonts/Work_Sans_300.woff2 +0 -0
  125. data/docs/fonts/Work_Sans_500.eot +0 -0
  126. data/docs/fonts/Work_Sans_500.svg +0 -1
  127. data/docs/fonts/Work_Sans_500.ttf +0 -0
  128. data/docs/fonts/Work_Sans_500.woff +0 -0
  129. data/docs/fonts/Work_Sans_500.woff2 +0 -0
  130. data/docs/images/clippy.svg +0 -1
  131. data/docs/images/favicon.png +0 -0
  132. data/docs/images/gopher-404.jpg +0 -0
  133. data/docs/imported/changelog/index.html +0 -1449
  134. data/docs/imported/index.html +0 -1191
  135. data/docs/imported/index.xml +0 -23
  136. data/docs/index.html +0 -1138
  137. data/docs/index.json +0 -183
  138. data/docs/index.xml +0 -138
  139. data/docs/js/auto-complete.js +0 -3
  140. data/docs/js/clipboard.min.js +0 -7
  141. data/docs/js/featherlight.min.js +0 -9
  142. data/docs/js/highlight.pack.js +0 -6
  143. data/docs/js/html5shiv-printshiv.min.js +0 -4
  144. data/docs/js/hugo-learn.js +0 -94
  145. data/docs/js/jquery-3.3.1.min.js +0 -2
  146. data/docs/js/jquery.sticky.js +0 -288
  147. data/docs/js/learn.js +0 -459
  148. data/docs/js/lunr.min.js +0 -6
  149. data/docs/js/modernizr.custom-3.6.0.js +0 -3
  150. data/docs/js/perfect-scrollbar.jquery.min.js +0 -2
  151. data/docs/js/perfect-scrollbar.min.js +0 -2
  152. data/docs/js/search.js +0 -93
  153. data/docs/mermaid/mermaid.css +0 -277
  154. data/docs/mermaid/mermaid.dark.css +0 -278
  155. data/docs/mermaid/mermaid.forest.css +0 -356
  156. data/docs/mermaid/mermaid.js +0 -8
  157. data/docs/quick_reference/index.html +0 -1246
  158. data/docs/quick_reference/index.xml +0 -12
  159. data/docs/sitemap.xml +0 -81
  160. data/docs/tags/index.html +0 -1146
  161. data/docs/tags/index.xml +0 -11
  162. data/docs/tutorial/10-getting_started/index.html +0 -1174
  163. data/docs/tutorial/20-project_layout/index.html +0 -1299
  164. data/docs/tutorial/30-your_first_command/index.html +0 -1263
  165. data/docs/tutorial/40-options_parameters_and_arguments/index.html +0 -1384
  166. data/docs/tutorial/50-publishing/index.html +0 -1187
  167. data/docs/tutorial/index.html +0 -1140
  168. data/docs/tutorial/index.xml +0 -47
  169. data/docs/webfonts/fa-brands-400.eot +0 -0
  170. data/docs/webfonts/fa-brands-400.svg +0 -1
  171. data/docs/webfonts/fa-brands-400.ttf +0 -0
  172. data/docs/webfonts/fa-brands-400.woff +0 -0
  173. data/docs/webfonts/fa-brands-400.woff2 +0 -0
  174. data/docs/webfonts/fa-regular-400.eot +0 -0
  175. data/docs/webfonts/fa-regular-400.svg +0 -1
  176. data/docs/webfonts/fa-regular-400.ttf +0 -0
  177. data/docs/webfonts/fa-regular-400.woff +0 -0
  178. data/docs/webfonts/fa-regular-400.woff2 +0 -0
  179. data/docs/webfonts/fa-solid-900.eot +0 -0
  180. data/docs/webfonts/fa-solid-900.svg +0 -1
  181. data/docs/webfonts/fa-solid-900.ttf +0 -0
  182. data/docs/webfonts/fa-solid-900.woff +0 -0
  183. data/docs/webfonts/fa-solid-900.woff2 +0 -0
  184. data/docs/whoami/index.html +0 -1155
  185. data/docs/whoami/index.xml +0 -12
  186. data/docs-src/archetypes/default.md +0 -6
  187. data/docs-src/config.toml +0 -37
  188. data/docs-src/content/_index.md +0 -40
  189. data/docs-src/content/advanced/_index.md +0 -11
  190. data/docs-src/content/advanced/automatic_updates.md +0 -46
  191. data/docs-src/content/advanced/command_types.md +0 -148
  192. data/docs-src/content/advanced/distributed_state_locking.md +0 -37
  193. data/docs-src/content/advanced/hooks.md +0 -69
  194. data/docs-src/content/advanced/interactive_commands.md +0 -41
  195. data/docs-src/content/advanced/logging.md +0 -39
  196. data/docs-src/content/advanced/remote_execution.md +0 -60
  197. data/docs-src/content/advanced/state_storage.md +0 -120
  198. data/docs-src/content/advanced/user_config_files.md +0 -51
  199. data/docs-src/content/development/_index.md +0 -11
  200. data/docs-src/content/development/changelog.md +0 -199
  201. data/docs-src/content/development/code_of_conduct.md +0 -81
  202. data/docs-src/content/development/contributing.md +0 -88
  203. data/docs-src/content/development/license.md +0 -17
  204. data/docs-src/content/quick_reference/_index.md +0 -180
  205. data/docs-src/content/tutorial/10-getting_started.md +0 -47
  206. data/docs-src/content/tutorial/20-project_layout.md +0 -123
  207. data/docs-src/content/tutorial/30-your_first_command.md +0 -132
  208. data/docs-src/content/tutorial/40-options_parameters_and_arguments.md +0 -282
  209. data/docs-src/content/tutorial/50-publishing.md +0 -53
  210. data/docs-src/content/tutorial/_index.md +0 -11
  211. data/docs-src/content/whoami/_index.md +0 -34
  212. data/docs-src/layouts/partials/logo.html +0 -3
  213. data/docs-src/makesite.sh +0 -40
  214. data/docs-src/mkdocs-archived.tar.gz +0 -0
  215. data/docs-src/runsite.sh +0 -8
  216. data/docs-src/themes/hugo-theme-learn/.editorconfig +0 -16
  217. data/docs-src/themes/hugo-theme-learn/.gitignore +0 -3
  218. data/docs-src/themes/hugo-theme-learn/.grenrc.yml +0 -25
  219. data/docs-src/themes/hugo-theme-learn/CHANGELOG.md +0 -226
  220. data/docs-src/themes/hugo-theme-learn/LICENSE.md +0 -22
  221. data/docs-src/themes/hugo-theme-learn/README.md +0 -97
  222. data/docs-src/themes/hugo-theme-learn/archetypes/chapter.md +0 -13
  223. data/docs-src/themes/hugo-theme-learn/archetypes/default.md +0 -7
  224. data/docs-src/themes/hugo-theme-learn/exampleSite/LICENSE.md +0 -20
  225. data/docs-src/themes/hugo-theme-learn/exampleSite/config.toml +0 -102
  226. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.en.md +0 -41
  227. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.fr.md +0 -43
  228. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md +0 -12
  229. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md +0 -12
  230. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.zh.md +0 -12
  231. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md +0 -60
  232. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md +0 -56
  233. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.en.md +0 -102
  234. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.fr.md +0 -100
  235. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png +0 -0
  236. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md +0 -11
  237. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.fr.md +0 -11
  238. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif +0 -0
  239. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.en.md +0 -194
  240. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.fr.md +0 -194
  241. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png +0 -0
  242. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png +0 -0
  243. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png +0 -0
  244. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.en.md +0 -12
  245. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.fr.md +0 -12
  246. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.en.md +0 -57
  247. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.fr.md +0 -57
  248. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.en.md +0 -78
  249. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.fr.md +0 -78
  250. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif +0 -0
  251. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/icons.en.md +0 -41
  252. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.en.md +0 -692
  253. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.fr.md +0 -666
  254. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.en.md +0 -109
  255. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.fr.md +0 -109
  256. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.en.md +0 -166
  257. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.fr.md +0 -146
  258. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png +0 -0
  259. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png +0 -0
  260. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png +0 -0
  261. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/syntaxhighlight.en.md +0 -89
  262. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.en.md +0 -39
  263. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.fr.md +0 -40
  264. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.en.md +0 -28
  265. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.fr.md +0 -28
  266. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.en.md +0 -16
  267. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.fr.md +0 -16
  268. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 +0 -0
  269. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  270. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf +0 -0
  271. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png +0 -0
  272. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  273. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.md +0 -85
  274. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 +0 -0
  275. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  276. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf +0 -0
  277. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png +0 -0
  278. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  279. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.md +0 -85
  280. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.en.md +0 -16
  281. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.fr.md +0 -16
  282. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.en.md +0 -45
  283. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.fr.md +0 -45
  284. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.en.md +0 -6
  285. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md +0 -6
  286. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md +0 -6
  287. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md +0 -6
  288. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md +0 -6
  289. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md +0 -6
  290. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md +0 -6
  291. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md +0 -6
  292. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md +0 -6
  293. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md +0 -6
  294. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.en.md +0 -11
  295. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md +0 -11
  296. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.en.md +0 -6
  297. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md +0 -6
  298. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.en.md +0 -6
  299. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md +0 -6
  300. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.en.md +0 -7
  301. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md +0 -7
  302. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.en.md +0 -6
  303. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.fr.md +0 -6
  304. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.en.md +0 -45
  305. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.fr.md +0 -45
  306. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.en.md +0 -283
  307. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.fr.md +0 -283
  308. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.en.md +0 -62
  309. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.fr.md +0 -62
  310. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.en.md +0 -23
  311. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.fr.md +0 -23
  312. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.en.md +0 -13
  313. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.fr.md +0 -14
  314. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/custom-footer.html +0 -10
  315. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/logo.html +0 -39
  316. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/menu-footer.html +0 -14
  317. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/shortcodes/ghcontributors.html +0 -31
  318. data/docs-src/themes/hugo-theme-learn/exampleSite/static/css/theme-mine.css +0 -104
  319. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.eot +0 -0
  320. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.svg +0 -1
  321. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.ttf +0 -0
  322. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff +0 -0
  323. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff2 +0 -0
  324. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/inteliver_docs.png +0 -0
  325. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tat.png +0 -0
  326. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tshark_dev.png +0 -0
  327. data/docs-src/themes/hugo-theme-learn/i18n/ar.toml +0 -26
  328. data/docs-src/themes/hugo-theme-learn/i18n/de.toml +0 -26
  329. data/docs-src/themes/hugo-theme-learn/i18n/en.toml +0 -26
  330. data/docs-src/themes/hugo-theme-learn/i18n/es.toml +0 -26
  331. data/docs-src/themes/hugo-theme-learn/i18n/fr.toml +0 -26
  332. data/docs-src/themes/hugo-theme-learn/i18n/hi.toml +0 -26
  333. data/docs-src/themes/hugo-theme-learn/i18n/id.toml +0 -26
  334. data/docs-src/themes/hugo-theme-learn/i18n/ja.toml +0 -26
  335. data/docs-src/themes/hugo-theme-learn/i18n/nl.toml +0 -26
  336. data/docs-src/themes/hugo-theme-learn/i18n/pt.toml +0 -26
  337. data/docs-src/themes/hugo-theme-learn/i18n/ru.toml +0 -26
  338. data/docs-src/themes/hugo-theme-learn/i18n/tr.toml +0 -26
  339. data/docs-src/themes/hugo-theme-learn/i18n/zh-cn.toml +0 -26
  340. data/docs-src/themes/hugo-theme-learn/images/screenshot.png +0 -0
  341. data/docs-src/themes/hugo-theme-learn/images/tn.png +0 -0
  342. data/docs-src/themes/hugo-theme-learn/layouts/404.html +0 -56
  343. data/docs-src/themes/hugo-theme-learn/layouts/_default/list.html +0 -22
  344. data/docs-src/themes/hugo-theme-learn/layouts/_default/single.html +0 -12
  345. data/docs-src/themes/hugo-theme-learn/layouts/index.html +0 -31
  346. data/docs-src/themes/hugo-theme-learn/layouts/index.json +0 -12
  347. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-comments.html +0 -3
  348. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-footer.html +0 -5
  349. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-header.html +0 -5
  350. data/docs-src/themes/hugo-theme-learn/layouts/partials/favicon.html +0 -1
  351. data/docs-src/themes/hugo-theme-learn/layouts/partials/footer.html +0 -77
  352. data/docs-src/themes/hugo-theme-learn/layouts/partials/header.html +0 -111
  353. data/docs-src/themes/hugo-theme-learn/layouts/partials/logo.html +0 -19
  354. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu-footer.html +0 -1
  355. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu.html +0 -151
  356. data/docs-src/themes/hugo-theme-learn/layouts/partials/meta.html +0 -2
  357. data/docs-src/themes/hugo-theme-learn/layouts/partials/search.html +0 -16
  358. data/docs-src/themes/hugo-theme-learn/layouts/partials/tags.html +0 -7
  359. data/docs-src/themes/hugo-theme-learn/layouts/partials/toc.html +0 -5
  360. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/attachments.html +0 -36
  361. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/button.html +0 -14
  362. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/children.html +0 -101
  363. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/expand.html +0 -17
  364. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/mermaid.html +0 -2
  365. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/notice.html +0 -2
  366. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/ref.html +0 -14
  367. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/relref.html +0 -14
  368. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/siteparam.html +0 -7
  369. data/docs-src/themes/hugo-theme-learn/netlify.toml +0 -23
  370. data/docs-src/themes/hugo-theme-learn/static/css/atom-one-dark-reasonable.css +0 -77
  371. data/docs-src/themes/hugo-theme-learn/static/css/auto-complete.css +0 -47
  372. data/docs-src/themes/hugo-theme-learn/static/css/featherlight.min.css +0 -8
  373. data/docs-src/themes/hugo-theme-learn/static/css/fontawesome-all.min.css +0 -1
  374. data/docs-src/themes/hugo-theme-learn/static/css/hugo-theme.css +0 -254
  375. data/docs-src/themes/hugo-theme-learn/static/css/hybrid.css +0 -102
  376. data/docs-src/themes/hugo-theme-learn/static/css/nucleus.css +0 -615
  377. data/docs-src/themes/hugo-theme-learn/static/css/perfect-scrollbar.min.css +0 -2
  378. data/docs-src/themes/hugo-theme-learn/static/css/tags.css +0 -49
  379. data/docs-src/themes/hugo-theme-learn/static/css/theme-blue.css +0 -111
  380. data/docs-src/themes/hugo-theme-learn/static/css/theme-green.css +0 -111
  381. data/docs-src/themes/hugo-theme-learn/static/css/theme-red.css +0 -111
  382. data/docs-src/themes/hugo-theme-learn/static/css/theme.css +0 -1136
  383. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.eot +0 -0
  384. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.svg +0 -1
  385. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.ttf +0 -0
  386. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.woff +0 -0
  387. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  388. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.svg +0 -1
  389. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  390. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  391. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  392. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  393. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.svg +0 -1
  394. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  395. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  396. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  397. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.eot +0 -0
  398. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.svg +0 -1
  399. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.ttf +0 -0
  400. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff +0 -0
  401. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff2 +0 -0
  402. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.eot +0 -0
  403. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.svg +0 -1
  404. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.ttf +0 -0
  405. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff +0 -0
  406. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff2 +0 -0
  407. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.eot +0 -0
  408. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.svg +0 -1
  409. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.ttf +0 -0
  410. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff +0 -0
  411. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff2 +0 -0
  412. data/docs-src/themes/hugo-theme-learn/static/images/clippy.svg +0 -1
  413. data/docs-src/themes/hugo-theme-learn/static/images/favicon.png +0 -0
  414. data/docs-src/themes/hugo-theme-learn/static/images/gopher-404.jpg +0 -0
  415. data/docs-src/themes/hugo-theme-learn/static/js/auto-complete.js +0 -3
  416. data/docs-src/themes/hugo-theme-learn/static/js/clipboard.min.js +0 -7
  417. data/docs-src/themes/hugo-theme-learn/static/js/featherlight.min.js +0 -9
  418. data/docs-src/themes/hugo-theme-learn/static/js/highlight.pack.js +0 -6
  419. data/docs-src/themes/hugo-theme-learn/static/js/hugo-learn.js +0 -94
  420. data/docs-src/themes/hugo-theme-learn/static/js/jquery-3.3.1.min.js +0 -2
  421. data/docs-src/themes/hugo-theme-learn/static/js/jquery.sticky.js +0 -288
  422. data/docs-src/themes/hugo-theme-learn/static/js/learn.js +0 -459
  423. data/docs-src/themes/hugo-theme-learn/static/js/lunr.min.js +0 -6
  424. data/docs-src/themes/hugo-theme-learn/static/js/modernizr.custom-3.6.0.js +0 -3
  425. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.jquery.min.js +0 -2
  426. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.min.js +0 -2
  427. data/docs-src/themes/hugo-theme-learn/static/js/search.js +0 -93
  428. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.css +0 -277
  429. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.dark.css +0 -278
  430. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.forest.css +0 -356
  431. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.js +0 -8
  432. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.eot +0 -0
  433. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.svg +0 -1
  434. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.ttf +0 -0
  435. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff +0 -0
  436. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff2 +0 -0
  437. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.eot +0 -0
  438. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.svg +0 -1
  439. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.ttf +0 -0
  440. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff +0 -0
  441. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff2 +0 -0
  442. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.eot +0 -0
  443. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.svg +0 -1
  444. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.ttf +0 -0
  445. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff +0 -0
  446. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff2 +0 -0
  447. data/docs-src/themes/hugo-theme-learn/theme.toml +0 -21
  448. data/docs-src/themes/hugo-theme-learn/wercker.yml +0 -16
  449. data/lib/rbcli/configuration/configurate.rb +0 -85
  450. data/lib/rbcli/configuration/configurate_blocks/hooks.rb +0 -52
  451. data/lib/rbcli/configuration/configurate_blocks/me.rb +0 -122
  452. data/lib/rbcli/configuration/configurate_blocks/storage.rb +0 -50
  453. data/lib/rbcli/engine/command.rb +0 -251
  454. data/lib/rbcli/engine/load_project.rb +0 -45
  455. data/lib/rbcli/engine/parser.rb +0 -116
  456. data/lib/rbcli/features/autoupdate/common/autoupdate.rb +0 -50
  457. data/lib/rbcli/features/autoupdate/gem_updater.rb +0 -62
  458. data/lib/rbcli/features/autoupdate/github_updater.rb +0 -76
  459. data/lib/rbcli/features/logging.rb +0 -98
  460. data/lib/rbcli/features/remote_exec.rb +0 -187
  461. data/lib/rbcli/features/scriptwrapper.rb +0 -75
  462. data/lib/rbcli/features/userconfig.rb +0 -163
  463. data/lib/rbcli/state_storage/common/state_storage.rb +0 -138
  464. data/lib/rbcli/state_storage/localstate.rb +0 -77
  465. data/lib/rbcli/state_storage/placeholders.rb +0 -29
  466. data/lib/rbcli/state_storage/remote_state_connectors/dynamodb.rb +0 -272
  467. data/lib/rbcli/state_storage/remotestate_dynamodb.rb +0 -115
  468. data/lib/rbcli/util/msg.rb +0 -55
  469. data/lib/rbcli/util/string_colorize.rb +0 -45
  470. data/lib/rbcli-tool/generators.rb +0 -105
  471. data/lib/rbcli-tool/mdless_fix.rb +0 -406
  472. data/lib/rbcli-tool/project.rb +0 -120
  473. data/lib/rbcli-tool/util.rb +0 -70
  474. data/lib/rbcli-tool.rb +0 -37
  475. data/rbcli.gemspec +0 -73
  476. data/skeletons/micro/executable +0 -132
  477. data/skeletons/mini/executable +0 -247
  478. data/skeletons/project/.gitignore +0 -11
  479. data/skeletons/project/.rakeTasks +0 -7
  480. data/skeletons/project/.rbcli +0 -0
  481. data/skeletons/project/.rspec +0 -3
  482. data/skeletons/project/CODE_OF_CONDUCT.md +0 -74
  483. data/skeletons/project/Gemfile +0 -6
  484. data/skeletons/project/README.md +0 -46
  485. data/skeletons/project/Rakefile +0 -6
  486. data/skeletons/project/application/commands/command.erb +0 -28
  487. data/skeletons/project/application/commands/script.erb +0 -30
  488. data/skeletons/project/application/commands/scripts/script.sh +0 -60
  489. data/skeletons/project/application/options.rb +0 -34
  490. data/skeletons/project/config/autoupdate.rb +0 -35
  491. data/skeletons/project/config/general.rb +0 -17
  492. data/skeletons/project/config/logging.rb +0 -19
  493. data/skeletons/project/config/storage.rb +0 -35
  494. data/skeletons/project/config/userspace.rb +0 -33
  495. data/skeletons/project/config/version.rb +0 -3
  496. data/skeletons/project/exe/executable +0 -53
  497. data/skeletons/project/hooks/default_action.rb +0 -16
  498. data/skeletons/project/hooks/first_run.rb +0 -16
  499. data/skeletons/project/hooks/post_execution.rb +0 -14
  500. data/skeletons/project/hooks/pre_execution.rb +0 -14
  501. data/skeletons/project/lib/lib.erb +0 -9
  502. data/skeletons/project/spec/spec_helper.rb +0 -14
  503. data/skeletons/project/spec/untitled_spec.rb +0 -9
  504. data/skeletons/project/untitled.gemspec +0 -40
  505. data/skeletons/project/userconf/user_defaults.yml +0 -6
  506. /data/{docs-src/.hugo_build.lock → lib/rbcli/plugins/.keep} +0 -0
data/exe/rbcli CHANGED
@@ -1,261 +1,200 @@
1
1
  #!/usr/bin/env ruby
2
2
  ##################################################################################
3
- # RBCli -- A framework for developing command line applications in Ruby #
4
- # Copyright (C) 2018 Andrew Khoury #
5
- # #
6
- # This program is free software: you can redistribute it and/or modify #
7
- # it under the terms of the GNU General Public License as published by #
8
- # the Free Software Foundation, either version 3 of the License, or #
9
- # (at your option) any later version. #
10
- # #
11
- # This program is distributed in the hope that it will be useful, #
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14
- # GNU General Public License for more details. #
15
- # #
16
- # You should have received a copy of the GNU General Public License #
17
- # along with this program. If not, see <https://www.gnu.org/licenses/>. #
18
- # #
19
- # For questions regarding licensing, please contact andrew@blacknex.us #
3
+ # Rbcli -- A framework for developing command line applications in Ruby #
4
+ # Copyright (C) 2024 Andrew Khoury <akhoury@live.com> #
20
5
  ##################################################################################
21
-
22
- require "#{File.dirname(__FILE__)}/../lib/rbcli.rb"
23
-
24
- Rbcli::Configurate.me do
25
- scriptname __FILE__.split('/')[-1]
26
- version Rbcli::VERSION
27
- description 'RBCli initialization tool'
28
- autoupdate gem: 'rbcli', force_update: false, message: "Please run `gem update rbcli` to upgrade to the latest version."
6
+ BASEDIR = File.expand_path(File.join(File.dirname(__FILE__), ".."))
7
+ require File.join(BASEDIR, 'lib', 'rbcli.rb')
8
+ require File.join(RBCLI_TOOLDIR, 'helpers.rb')
9
+
10
+ Rbcli::Configurate.cli do
11
+ appname 'Rbcli'
12
+ author 'Andrew Khoury'
13
+ email 'akhoury@live.com'
14
+ version Rbcli::VERSION
15
+ copyright_year 2024
16
+ license 'MIT'
17
+ helptext "Helptext!"
18
+ opt :version, "Print version and exit", :short => :none
29
19
  end
30
20
 
31
- require "#{File.dirname(__FILE__)}/../lib/rbcli-tool.rb"
32
-
33
- class Docs < Rbcli::Command
34
- description 'Show Documentation (Beta)'
35
-
36
- action do
37
- readme = "#{File.dirname(__FILE__)}/../README.md"
38
- begin
39
- CLIMarkdown::Converter.new([readme])
40
- rescue Errno::EPIPE
41
- # Empty
42
- end
43
- end
21
+ Rbcli::Configurate.logger do
22
+ logger target: :stdout,
23
+ level: ENV['RBCLI_DEVELOPMENT'] == 'true' ? :debug : :info,
24
+ format: ENV['RBCLI_DEVELOPMENT'] == 'true' ? :simple : :display
44
25
  end
45
26
 
46
- class License < Rbcli::Command
47
- description 'Shows Copyright and License Info'
48
- usage nil
49
-
50
- parameter :full, 'Display Full License Text', default: false
51
-
52
- action do |params|
53
- puts File.read("#{File.dirname(__FILE__)}/../LICENSE.txt") if params[:full]
54
- puts <<-EOF
55
- RBCli Copyright (C) 2018 Andrew Khoury
56
- This program comes with ABSOLUTELY NO WARRANTY.
57
- This is free software, and you are welcome to redistribute it
58
- under certain conditions.
59
- If you wish to release this library as part of commercial software,
60
- please contact andrew@blacknex.us.
61
- EOF
62
- puts "Type `rbcli license --full' to show the license text." unless params[:full]
63
- end
27
+ Rbcli::Configurate.updatechecker do
28
+ gem 'rbcli', force_update: false, message: "Please run `gem update rbcli` to upgrade to the latest version."
64
29
  end
65
30
 
66
- class Init < Rbcli::Command
67
- description 'Initialize a skeleton RBCli project.'
68
- usage <<-EOF
69
- This will generate a new project structure under the current directory. Use -t to specify the type:
70
-
71
-
72
- Standard: A complete RBCli project structure. Recommended for most applications, it provides
73
- a framework for organizing code and creating a gem to be installed/distributed.
74
-
75
- Mini: A single-file RBCli project. All features are supported, but project structure is left to the developer.
76
- Recommended for smaller applications, or for integrating RBCli into an existing application.
77
-
78
- Micro: A single-file, minimal RBCli project. Similar to a mini project, but only the minimal required code is
79
- generated. Recommended for rapid prototyping of scripts, for advanced users only.
80
- EOF
81
-
82
- parameter :name, 'Name of project to generate', type: :string, default: File.basename(Dir.pwd), required: true, prompt: 'Enter a name'
83
- parameter :type, 'Specify project type', type: :string, permitted: %w(standard mini micro), default: 'standard'
84
- parameter :description, 'A description of the project', type: :string, default: 'TODO: Description goes here'
85
-
86
- action do |params, args, global_opts, config|
87
- dest = Dir.pwd
88
-
89
- # Prepare template vars
90
- template_vars = {
91
- cmdname: params[:name],
92
- modulename: params[:name].split('-').each(&:capitalize!).join,
93
- description: params[:description],
94
- rbcli_version: Rbcli::VERSION
95
- }
96
-
97
- proj = RBCliTool::Project.new(dest, template_vars)
98
-
99
- # if proj.exist?
100
- # RBCliTool.continue_confirmation "The project or file #{params[:name]} already exists; contents will be overwritten."
101
- # FileUtils.rm_rf dest
102
- # end
103
-
104
- case params[:type]
105
- when 'micro' # Micro: Single File, simplified
106
- success = proj.create_micro
107
- when 'mini' # Mini: Single File
108
- success = proj.create_mini
109
- else # Standard; full project structure
110
- success = proj.create
111
- end # END case params[:type]
112
-
113
- if success
114
- puts "\nInitialization Complete!\n"
115
- else
116
- puts "\nAn RBCli Project already exists in the current or specified directory tree. Please delete the project or run this command from a different directory.\n"
117
- end
118
- end
31
+ Rbcli::Configurate.envvars do
32
+ prefix 'RBCLI'
33
+ envvar 'RBCLI_DEVELOPMENT', false
119
34
  end
120
35
 
121
- class Command < Rbcli::Command
122
- description 'Generate an Rbcli Command under the current project'
123
- usage <<-EOF
124
- This will generate a new command under the current RBCli project.
125
-
126
- Please run this command from within the project's directory structure.
127
- EOF
128
-
129
- parameter :name, 'Name of command to generate', type: :string, required: true
130
- parameter :description, 'A short description of the command', type: :string, default: 'TODO: Description goes here'
131
- parameter :usagetext, 'Usage help text for the command', type: :string, default: 'TODO: Usage text goes here'
132
-
133
- action do |params, args, global_opts, config|
134
- # First we check that we are working within a project folder
135
- project_root = RBCliTool::Project.find_root(Dir.pwd)
136
- RBCliTool.exit_with_error("Can't find the project root in the current path. Please `cd` to your project's directory before running this command, and ensure that the `.rbcli` file is present in its root path.") unless project_root
137
-
138
- # Prepare template vars
139
- template_vars = {
140
- name: params[:name],
141
- description: params[:description],
142
- usage_text: params[:usagetext],
143
- rbcli_version: Rbcli::VERSION
144
- }
145
-
146
- generator = RBCliTool::Generator.new(:command, project_root, template_vars)
147
- generator.run
148
- end
36
+ Rbcli.command "portable" do
37
+ description 'Creates a portable Rbcli executable'
38
+ usage "(--(d)ocs|--use-(b)undler|--(f)orce) <application_name>"
39
+ helptext <<~HELPTEXT
40
+ This will initialize a portable Rbcli project in the current directory.
41
+
42
+ A single executable file will be created with all of the Rbcli configuration
43
+ in it. This setup is ideal for creating an executable that can be easily transferred to
44
+ different systems, or for dropping into a pre-existing project.
45
+
46
+ If you'd prefer a complete project structure, run `rbcli gem --help` for more information.
47
+ HELPTEXT
48
+
49
+ parameter :annotate, "Add annotations and examples for a more guided build"
50
+ parameter :use_bundler, "Use bundler inline for dependencies", short: :b
51
+ parameter :force, "Overwrite files without prompting"
52
+
53
+ action do |opts, params, args, config, env|
54
+ if args.first.nil?
55
+ Rbcli.log.error "You must specify a name for the project", 'TOOL'
56
+ Rbcli.log.error "Usage: #{self.usage}", 'TOOL'
57
+ Rbcli::exit 1
58
+ end
59
+ vars = {
60
+ appname: args.first,
61
+ use_bundler: params[:use_bundler],
62
+ development: env[:development],
63
+ showdocs: params[:annotate]
64
+ }
65
+ Rbcli.log.debug "Creating portable executable", 'TOOL'
66
+ Rbcli::ToolHelpers.cp_file File.join(RBCLI_TOOLDIR, 'skeletons', 'portable.rb.erb'),
67
+ File.join(Dir.getwd, "#{vars[:appname].downcase}"),
68
+ template_vars: vars, set_executable: true, force: params[:force]
69
+ Rbcli.log.info "Done.", 'TOOL'
70
+ end
149
71
  end
150
72
 
151
- class Script < Rbcli::Command
152
- description 'Generate an Rbcli Command with Bash Script under the current project'
153
- usage <<-EOF
154
- This will generate a new command under the current RBCli project, and a skeleton bash script to code it.
155
-
156
- Use this option if you prefer to use bash (or another shell) to script your command.
157
-
158
- Please run this command from within the project's directory structure.
159
- EOF
160
-
161
- parameter :name, 'Name of command to generate', type: :string, required: true
162
- parameter :description, 'A short description of the command', type: :string, default: 'TODO: Description goes here'
163
- parameter :usagetext, 'Usage help text for the command', type: :string, default: 'TODO: Usage text goes here'
164
-
165
- action do |params, args, global_opts, config|
166
- # First we check that we are working within a project folder
167
- project_root = RBCliTool::Project.find_root(Dir.pwd)
168
- RBCliTool.exit_with_error("Can't find the project root in the current path. Please `cd` to your project's directory before running this command, and ensure that the `.rbcli` file is present in its root path.") unless project_root
169
-
170
- # Prepare template vars
171
- template_vars = {
172
- name: params[:name],
173
- description: params[:description],
174
- usage_text: params[:usagetext],
175
- no_script: false,
176
- rbcli_version: Rbcli::VERSION
177
- }
178
-
179
- generator = RBCliTool::Generator.new(:extern, project_root, template_vars)
180
- generator.run
181
- end
73
+ Rbcli.command "gem" do
74
+ description 'Creates an full Rbcli-based gem project'
75
+ usage "(--(f)orce) <application_name>"
76
+ helptext <<~HELPTEXT
77
+ This will initialize an complete Rbcli project in the current directory.
78
+
79
+ First a basic Gem structure is created with bundler, and then the
80
+ Rbcli-specific modifications are layered on top. This is ideal
81
+ for larger applications, or if you already have CI/CD pipelines
82
+ that work with Gems and want to reuse your code
83
+
84
+ If you'd prefer a single-file executable script, run `rbcli portable --help` for more information.
85
+ HELPTEXT
86
+
87
+ parameter :force, "Overwrite files without prompting"
88
+
89
+ action do |opts, params, args, config, env|
90
+ if args.first.nil?
91
+ Rbcli.log.error "You must specify a name for the project", 'TOOL'
92
+ Rbcli.log.error "Usage: #{self.usage}", 'TOOL'
93
+ Rbcli::exit 1
94
+ end
95
+ vars = {
96
+ appname: args.first,
97
+ use_bundler: params[:use_bundler],
98
+ development: env[:development],
99
+ showdocs: params[:docs]
100
+ }
101
+ project_dir = File.join(Dir.getwd, vars[:appname])
102
+ config_dir = File.join(project_dir, 'lib', 'config')
103
+ command_dir = File.join(project_dir, 'lib', 'commands')
104
+ scripts_dir = File.join(command_dir, 'scripts')
105
+ if File.exist?(project_dir) && params[:force]
106
+ FileUtils.rm_rf(project_dir)
107
+ elsif File.exist?(project_dir) && !params[:force]
108
+ Rbcli.log.info "The project #{vars[:appname]} already exists. Overwrite? (y/n): ", 'TOOL'
109
+ answer = gets.chomp
110
+ answer = { 'y' => true, 'n' => false }[(answer[0] || '').downcase]
111
+ if answer
112
+ Rbcli.log.debug "Deleting #{File.basename(project_dir)}", 'TOOL'
113
+ FileUtils.rm_rf(project_dir)
114
+ else
115
+ return
116
+ end
117
+ end
118
+
119
+ # Full options available:
120
+ # `bundle gem --exe --coc --mit --test=rspec/minitest/test-unit --ci=github/gitlab/circle --linter=rubocop/standard <name>`
121
+ Rbcli.log.info "Running bundler gem", 'TOOL'
122
+ `bundle gem --exe --coc #{vars[:appname]}`
123
+ Rbcli.log.debug "Creating Rbcli project identifier", 'TOOL'
124
+ FileUtils.touch(File.join(project_dir), '.rbcli')
125
+ Rbcli.log.debug "Creating additional directories", 'TOOL'
126
+ [config_dir, command_dir, scripts_dir].each { |dir| FileUtils.mkdir_p(dir) }
127
+ FileUtils.touch(File.join(scripts_dir, '.keep'))
128
+ Rbcli.log.debug "Creating executable", 'TOOL'
129
+ Rbcli::ToolHelpers.cp_file File.join(RBCLI_TOOLDIR, 'skeletons', 'gem.rb.erb'),
130
+ File.join(project_dir, 'exe', "#{vars[:appname].downcase}"),
131
+ template_vars: vars, set_executable: true, force: true
132
+ Rbcli.log.debug "Creating configs", 'TOOL'
133
+ %w(parser logger config envvars hooks updatechecker).each { |component|
134
+ Rbcli::ToolHelpers.cp_file File.join(RBCLI_LIBDIR, 'components', component, 'template.rb.erb'),
135
+ File.join(config_dir, "#{component}.rb"),
136
+ template_vars: vars, set_executable: false, force: params[:force] }
137
+ Rbcli.log.debug "Creating commands", 'TOOL'
138
+ %w(command script).each { |cmdtype|
139
+ Rbcli::ToolHelpers.cp_file File.join(RBCLI_LIBDIR, 'components', 'commands', "#{cmdtype}.rb.erb"),
140
+ File.join(command_dir, "#{cmdtype}.rb"),
141
+ template_vars: vars, set_executable: false, force: params[:force] }
142
+ Rbcli.log.info "Done."
143
+ end
182
144
  end
183
145
 
184
- class Extern < Rbcli::Command
185
- description 'Generate an Rbcli Command that can wrap an external application'
186
- usage <<-EOF
187
- This will generate a new command under the current RBCli project
188
-
189
- Use this option if you need to integrate with a third party application.
190
-
191
- Please run this command from within the project's directory structure.
192
- EOF
193
-
194
- parameter :name, 'Name of command to generate', type: :string, required: true
195
- parameter :description, 'A short description of the command', type: :string, default: 'TODO: Description goes here'
196
- parameter :usagetext, 'Usage help text for the command', type: :string, default: 'TODO: Usage text goes here'
197
-
198
- action do |params, args, global_opts, config|
199
- # First we check that we are working within a project folder
200
- project_root = RBCliTool::Project.find_root(Dir.pwd)
201
- RBCliTool.exit_with_error("Can't find the project root in the current path. Please `cd` to your project's directory before running this command, and ensure that the `.rbcli` file is present in its root path.") unless project_root
202
-
203
- # Prepare template vars
204
- template_vars = {
205
- name: params[:name],
206
- description: params[:description],
207
- usage_text: params[:usagetext],
208
- no_script: true,
209
- rbcli_version: Rbcli::VERSION
210
- }
211
-
212
- generator = RBCliTool::Generator.new(:extern, project_root, template_vars)
213
- generator.run
214
- end
146
+ Rbcli.command "command" do
147
+ description 'Generate a new command declaration in the current project'
148
+ usage "(--(s)cript|--(f)orce) <application_name>"
149
+ parameter :script, 'Generate a shell-script based command', default: false
150
+ parameter :force, 'Overwrite files without prompting', default: false
151
+ action do |opts, params, args, config, env|
152
+ if args.first.nil?
153
+ Rbcli.log.error "You must specify a name for the command", 'TOOL'
154
+ Rbcli.log.error "Usage: #{self.usage}", 'TOOL'
155
+ Rbcli::exit 1
156
+ end
157
+
158
+ unless (project_dir = find_root(Dir.pwd))
159
+ Rbcli.log.error "Not an Rbcli project directory. This command can only be run on projects created using `rbcli gem <project_name>`."
160
+ Rbcli.log.error "If you believe you are receiving this message in error, make sure the `.rbcli` file exists in the current directory."
161
+ return
162
+ end
163
+
164
+ command_dir = File.join(project_dir, 'lib', 'commands')
165
+ scripts_dir = File.join(command_dir, 'scripts')
166
+ FileUtils.mkdir_p(command_dir)
167
+ FileUtils.mkdir_p(scripts_dir) if params[:script]
168
+ Rbcli.log.debug "Creating commands", 'TOOL'
169
+
170
+ vars = {
171
+ command_name: args.first,
172
+ showdocs: true
173
+ }
174
+
175
+ cmdtype = params[:script] ? 'script' : 'command'
176
+ Rbcli::ToolHelpers.cp_file File.join(RBCLI_LIBDIR, 'components', 'commands', "#{cmdtype}.rb.erb"),
177
+ File.join(command_dir, "#{args.first}.rb"),
178
+ template_vars: vars, set_executable: false, force: params[:force]
179
+ end
180
+
181
+ def find_root path
182
+ # We look for the .rbcli file in the current tree and return the root path
183
+ searchpath = path
184
+ until searchpath.empty?
185
+ return searchpath if File.directory? searchpath and File.exist? "#{searchpath}/.rbcli"
186
+ spath = searchpath.split('/')
187
+ searchpath = (spath.length == 2) ? '/' : spath[0..-2].join('/')
188
+ end
189
+ false
190
+ end
215
191
  end
216
192
 
217
- class Hook < Rbcli::Command
218
- description 'Generate an Rbcli Hook under the current project'
219
- usage <<-EOF
220
- This will generate one or more execution hooks for the current project.
221
-
222
- Default: The default hook runs whenever the user does not specify a command. If the hook is not present, the default
223
- behavior is to show the help text (same as -h).
224
-
225
- Pre: The pre-execution hook, which runs code prior to the execution of any command. This allows for actions such
226
- as authentiation into remote systems.
227
-
228
- Post: The post-execution hook, which runs code after the execution of any command.
229
-
230
- First-run: The first-run hook will run only on the first time the user runs the application. This is useful for
231
- initial setup or for welcome messages to be shown. Note that if you enable the first-run hook, you must
232
- also enable local_state (see config/storage.rb).
233
-
234
- Please run this command from within the project's directory structure.
235
- EOF
236
-
237
- parameter :default, 'Generate the default (no-command-entered) hook', type: :boolean, default: false
238
- parameter :pre, 'Generate the pre-execution hook', type: :boolean, default: false
239
- parameter :post, 'Generate the post-execution hook', type: :boolean, default: false
240
- parameter :firstrun, 'Generate the first-run hook', type: :boolean, default: false
241
-
242
- action do |params, args, global_opts, config|
243
- # First we check that we are working within a project folder
244
- project_root = RBCliTool::Project.find_root(Dir.pwd)
245
- RBCliTool.exit_with_error("Can't find the project root in the current path. Please `cd` to your project's directory before running this command, and ensure that the `.rbcli` file is present in its root path.") unless project_root
246
-
247
- generated_something = false
248
-
249
- [:default, :pre, :post, :firstrun].each do |pname|
250
- next unless params[pname]
251
- generator = RBCliTool::Generator.new(:hook, project_root, pname)
252
- generator.run
253
- generated_something = true
254
- end
255
-
256
- RBCliTool.exit_with_error("No hooks specified. Please run `rbcli hooks -h` for details on how to generate hooks.") unless generated_something
257
- end
193
+ Rbcli.command "license" do
194
+ description 'Display license info'
195
+ action do |opts, params, args, config, env|
196
+ Rbcli.log.info "eJxdUk9v2jAUv/Mpnnpqpaibqp12M4kpVkMcOaaMY0gM8RRiZJshvv3ec+na\nTkKK/Px+f81KaChtZ6Zgfs5muTtdvT0M0fRw3z3A7gps6r25wMvgzv4KT9+f\nfsxmtfFHG4J1E9gAg/EGFw++nRCXwd4bA24P3dD6g8kgOminK5yMDwhwu9ja\nyU4HaKFDOdqMA9IEt4+X1htc7qENwXW2JR+9685HM8U2kt7ejibAfRwM3DU3\nxN1DEulNO4KdgO7er+BiIzqP4E2I3nbEkeFSN5578vB+PdqjvSkQPHUQiPQc\nMAH5zODoerunr0mxTufdaMOQQW+JeneOOAw0TG1mlOOb8xDMOBKDRd8p64e7\ntEMqJyo03ipKupfBHb8mwYr2Zz+hpEmY3mFlSfG36SJNaH3vxtFdKFrnpt5S\nooAPq/Gq3bk/JmVJ8WByEa2+WaAHOH286u0qDC1635lbYaiL9baf4niSDxEf\n3mL3J+eT3v8xH1F/yaGRC71hioNooFbyVRS8gDvW4Pkug43QS7nWgBuKVXoL\ncgGs2sKLqIoM+K9a8aYBqUCs6lJwnIkqL9eFqJ5hjrhK4h9ZrIRGUi2BBG9U\ngjdEtuIqX+KRzUUp9DaDhdAVcS6QlEHNlBb5umQK6rWqZcNRvkDaSlQLhSp8\nxSv9iKo4A/6KB2iWrCyTFFuje5X85bLeKvG81LCUZcFxOOfojM1L/iaFofKS\niVUGBVuxZ55QEllUWru52yx5GqEew1+uhawoRi4rrfCYYUql/0E3ouEZMCUa\nKmShJNJTnYiQiQRxFX9joarhy4vgCp3XDf/wUnBWIldD4M/Lj38BVjZX4w==".decompress, 'TOOL' ### LICENSE.txt
197
+ end
258
198
  end
259
199
 
260
-
261
- Rbcli.parse
200
+ Rbcli.go!
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+ ##################################################################################
3
+ # Rbcli -- A framework for developing command line applications in Ruby #
4
+ # Copyright (C) 2024 Andrew Khoury <akhoury@live.com> #
5
+ ##################################################################################
6
+ class Rbcli::Command
7
+ def initialize name
8
+ raise Rbcli::CommandError.new "Command name can only contain the characters [A-Za-z0-9_]+" unless /[A-Za-z0-9_]+/.match?(name)
9
+ @name = name.to_s.downcase
10
+ @default = false
11
+ @description = nil
12
+ @helptext = nil
13
+ @usage = nil
14
+ @action = nil
15
+ @script = nil
16
+ @params = []
17
+ end
18
+
19
+ attr_reader :name, :params
20
+
21
+ def description text = nil
22
+ return @description if text.nil?
23
+ @description = text
24
+ end
25
+
26
+ def helptext text = nil
27
+ return @helptext if text.nil?
28
+ @helptext = text
29
+ end
30
+
31
+ def usage text = nil
32
+ return @usage if text.nil?
33
+ @usage = text
34
+ end
35
+
36
+ def default
37
+ @default = true
38
+ end
39
+
40
+ def default?
41
+ @default
42
+ end
43
+
44
+ def parameter * args
45
+ args[2][:required] = false if !args[2].nil? && !args[2].empty? && args[2][:prompt].is_a?(String)
46
+ @params.push(args)
47
+ end
48
+
49
+ def action & block
50
+ @action = block
51
+ @script = nil
52
+ end
53
+
54
+ def inline_script inline: nil, vars: nil
55
+ require_relative 'scriptwrapper/scriptwrapper'
56
+ @action = nil
57
+ @script = Rbcli::ScriptWrapper.new inline: inline, path: nil, vars: vars
58
+ end
59
+
60
+ def external_script path: nil, vars: nil
61
+ unless File.exist?(path) && File.readable?(path) && File.executable?(path)
62
+ Rbcli.log.fatal "Command #{@name} expects a script to be located at: #{path}. Please make sure it exists and is both readable and executable by the current user."
63
+ Rbcli::exit 1
64
+ end
65
+ require_relative 'scriptwrapper/scriptwrapper'
66
+ @action = nil
67
+ @script = Rbcli::ScriptWrapper.new inline: nil, path: path, vars: vars
68
+ end
69
+
70
+ def has_function?
71
+ !(@action.nil? && @script.nil?)
72
+ end
73
+
74
+ def run! opts: nil, params: nil, args: nil, config: nil, env: nil
75
+ unless self.has_function?
76
+ raise Rbcli::CommandError.new "Command #{@name} does not have a function. An action, inline script, or external script must be defined."
77
+ end
78
+ # Rbcli.log.debug "Running command '#{@name}'", "CORE"
79
+ @action.call(opts, params, args, config, env) unless @action.nil?
80
+ @script.execute(opts, params, args, config, env) unless @script.nil?
81
+ end
82
+ end
83
+
84
+ module Rbcli
85
+ Rbcli::Warehouse.set(:commands, {})
86
+
87
+ def self.command name, & block
88
+ name = name.to_s.downcase
89
+ raise Rbcli::CommandError.new "The command #{name} cannot be defined twice." if Rbcli::Warehouse.get(:commands).key? name
90
+ command = Rbcli::Command.new(name)
91
+ command.instance_eval(&block)
92
+ unless command.has_function?
93
+ raise Rbcli::CommandError.new "Command #{command.name} does not have a function. An action, inline script, or external script must be defined."
94
+ end
95
+ if command.default? && Rbcli::Warehouse.get(:commands).any? { |cmd| cmd.default? }
96
+ raise Rbcli::CommandError.new "Only one command may be assigned as default"
97
+ end
98
+ Rbcli::Warehouse.get(:commands)[name] = command
99
+
100
+ ## The first time a command is declared the engine gets primed to run commands
101
+ Rbcli::Engine.register_operation(Proc.new {
102
+ if Rbcli::Warehouse.get(:commands).empty?
103
+ raise Rbcli::CommandError.new "No commands defined. At least one command must be declared to use Rbcli."
104
+ end
105
+ cmd_to_run = Rbcli::Warehouse.get(:command, :parsedopts)
106
+ if cmd_to_run.nil?
107
+ Rbcli.log.debug "No command specified and no default set. Skipping execution.", "CORE"
108
+ break
109
+ end
110
+ Rbcli.log.debug "Running command '#{cmd_to_run.name}'", "CORE"
111
+ cmd_to_run.run!(
112
+ opts: Rbcli::Warehouse.get(:opts, :parsedopts),
113
+ params: Rbcli::Warehouse.get(:params, :parsedopts),
114
+ args: Rbcli::Warehouse.get(:args, :parsedopts),
115
+ config: Rbcli::Warehouse.get(:config, :parsedopts) || Rbcli::ConfigOfDeath.new,
116
+ env: Rbcli::Warehouse.get(:env, :parsedopts) || Rbcli::ConfigOfDeath.new
117
+ )
118
+ }, name: :run_command, priority: 100) if Rbcli::Warehouse.get(:commands).count == 1
119
+ end
120
+ end
@@ -0,0 +1,55 @@
1
+ Rbcli.command "<%= @command_name || 'example' %>" do
2
+ <%- if @showdocs -%>
3
+ ##### Command Declaration (At least one is required) #####
4
+ # default (Optional) The default command is run when no other commands are called on the CLI
5
+ # Note that parameters are not available for default commands, as all CLI options
6
+ # are parsed against the global-level ones declared in the `Configurate.opts` block
7
+ # description (Optional) Short description that shows up in --help for the executable
8
+ # usage (Optional) Usage text that shows up in --help or when CLI format is bad
9
+ # helptext (Optional) Large help text that shows up in --help for the command
10
+ <%- end -%>
11
+ default
12
+ description 'Example command'
13
+ usage "[--param|--otherparam] name"
14
+ helptext <<~EOF
15
+ Big block of helptext
16
+ EOF
17
+ <%- if @showdocs -%>
18
+ # parameter (Optinoal) Parameters follow the same format as CLI Options, but are only available for this command
19
+ <%- end -%>
20
+ parameter :param, 'A Parameter', default: false
21
+ parameter :otherparam, 'Another Parameter', type: :string, default: "Default value"
22
+ <%- if @showdocs -%>
23
+ # action (Required, unless declaring a `script`) The action block is code that gets executed when the command is called
24
+ # Sending all output through the logger is recommended. For it to be displayed
25
+ # as regular text, set the logger to the :display format
26
+ <%- end -%>
27
+ action do |opts, params, args, config, env|
28
+ Rbcli.log.info "Welcome to your new application!"
29
+ <%- if @showdocs -%>
30
+ Rbcli.log.info "We like to send all of our output through the logger for easy formatting and deployment..."
31
+ puts "...but you don't have to"
32
+ Rbcli.log.info "Here's a quick demo of how to use the framework:\n"
33
+
34
+ Rbcli.log.info "Top-level CLI Options: " + opts.to_s
35
+ Rbcli.log.info "Parameters: " + params.to_s
36
+ Rbcli.log.info "Arguments on the CLI: " + args.to_s
37
+ Rbcli.log.info "The config: " + config.to_s
38
+ Rbcli.log.info "Environment variables: " + env.to_s
39
+ Rbcli.log.info ""
40
+
41
+ Rbcli.log.debug "Example Debug Message (change your log level to see this!)", "MYAPP"
42
+ Rbcli.log.info "Example Info Message", "MYAPP"
43
+ Rbcli.log.warn "Example Warning Message", "MYAPP"
44
+ Rbcli.log.error "Example Error Message", "MYAPP"
45
+ Rbcli.log.fatal "Example Fatal Message", "MYAPP"
46
+ Rbcli.log.unknown "Example Unknown Message", "MYAPP"
47
+ Rbcli.log.info ""
48
+
49
+ config[:davey] = 'Davey Jones'.compress
50
+ Rbcli.log.info "Compressed String: " + config[:davey]
51
+ Rbcli.log.info "Decompressed String: " + config[:davey].decompress
52
+ config.save!
53
+ <%- end -%>
54
+ end
55
+ end