rbcli 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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/components/parser/optimist/optimist.rb +1149 -0
  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 -495
  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 -181
  62. data/CODE_OF_CONDUCT.md +0 -74
  63. data/Gemfile +0 -6
  64. data/Gemfile.lock +0 -78
  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 -113
  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 -10
  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 -1389
  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 -50
  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 -208
  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 -11
  159. data/docs/sitemap.xml +0 -82
  160. data/docs/tags/index.html +0 -1146
  161. data/docs/tags/index.xml +0 -10
  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 -67
  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 -11
  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 -179
  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 -114
  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/util/trollop.rb +0 -1050
  471. data/lib/rbcli-tool/generators.rb +0 -105
  472. data/lib/rbcli-tool/mdless_fix.rb +0 -406
  473. data/lib/rbcli-tool/project.rb +0 -120
  474. data/lib/rbcli-tool/util.rb +0 -70
  475. data/lib/rbcli-tool.rb +0 -37
  476. data/rbcli.gemspec +0 -69
  477. data/skeletons/micro/executable +0 -127
  478. data/skeletons/mini/executable +0 -242
  479. data/skeletons/project/.gitignore +0 -11
  480. data/skeletons/project/.rakeTasks +0 -7
  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/{skeletons/project/.rbcli → lib/rbcli/plugins/.keep} +0 -0
@@ -1,105 +0,0 @@
1
- ##################################################################################
2
- # RBCli -- A framework for developing command line applications in Ruby #
3
- # Copyright (C) 2018 Andrew Khoury #
4
- # #
5
- # This program is free software: you can redistribute it and/or modify #
6
- # it under the terms of the GNU General Public License as published by #
7
- # the Free Software Foundation, either version 3 of the License, or #
8
- # (at your option) any later version. #
9
- # #
10
- # This program is distributed in the hope that it will be useful, #
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
13
- # GNU General Public License for more details. #
14
- # #
15
- # You should have received a copy of the GNU General Public License #
16
- # along with this program. If not, see <https://www.gnu.org/licenses/>. #
17
- # #
18
- # For questions regarding licensing, please contact andrew@blacknex.us #
19
- ##################################################################################
20
-
21
- module RBCliTool
22
- class Generator
23
- def self.inherited(subklass)
24
- @@types ||= {}
25
- @@types[subklass.name.downcase.split('::')[1]] = subklass
26
- end
27
-
28
- def initialize type = nil, root_path = nil, template_vars = {}
29
- @generator = @@types[type.to_s.downcase].new root_path, template_vars
30
- end
31
-
32
- def run *args
33
- @generator.run *args
34
- end
35
- end
36
-
37
- class Command < Generator
38
- def initialize root_path, template_vars
39
- @srcpath = "#{File.dirname(__FILE__)}/../../skeletons/project/application/commands/command.erb"
40
- @dest = "#{root_path}/application/commands/#{template_vars[:name]}.rb"
41
- @template_vars = template_vars
42
- end
43
-
44
- def run
45
- if File.exist? @dest
46
- RBCliTool.continue_confirmation "The command #{@template_vars[:name]} already exists; contents will be overwritten."
47
- FileUtils.rm_rf @dest
48
- end
49
- RBCliTool.cp_file @srcpath, @dest, @template_vars
50
- end
51
- end
52
-
53
- class Extern < Generator
54
- def initialize root_path, template_vars
55
- @filepaths = [
56
- {
57
- src: "#{File.dirname(__FILE__)}/../../skeletons/project/application/commands/script.erb",
58
- dest: "#{root_path}/application/commands/#{template_vars[:name]}.rb"
59
- }, {
60
- src: "#{File.dirname(__FILE__)}/../../skeletons/project/application/commands/scripts/script.sh",
61
- dest: "#{root_path}/application/commands/scripts/#{template_vars[:name]}.sh",
62
- perms: 0755
63
- }
64
- ]
65
- @template_vars = template_vars
66
- #@template_vars[:libsh_path] = Pathname.new("#{File.dirname(__FILE__)}/../../lib-sh/lib-rbcli.sh").cleanpath.to_s # We clean this path because it will be visible to the user
67
- end
68
-
69
- def run
70
- confirmed = false
71
- @filepaths.each do |file|
72
- next if file[:dest].end_with? '.sh' and @template_vars[:no_script]
73
- if File.exist? file[:dest]
74
- RBCliTool.continue_confirmation "The script command #{@template_vars[:name]} already exists; contents will be overwritten." unless confirmed
75
- confirmed = true
76
- FileUtils.rm_rf file[:dest]
77
- end
78
- RBCliTool.cp_file file[:src], file[:dest], @template_vars
79
- File.chmod file[:perms], file[:dest] if file.key? :perms
80
- end
81
- end
82
- end
83
-
84
- class Hook < Generator
85
- def initialize root_path, hook_type
86
- @typename = {
87
- default: 'default_action',
88
- pre: 'pre_execution',
89
- post: 'post_execution',
90
- firstrun: 'first_run'
91
- }[hook_type]
92
- @src = "#{File.dirname(__FILE__)}/../../skeletons/project/hooks/#{@typename}.rb"
93
- @dest = "#{root_path}/hooks/#{@typename}.rb"
94
- end
95
-
96
- def run
97
- if File.exist? @dest
98
- RBCliTool.continue_confirmation "The #{@typename} hook already exists; contents will be overwritten."
99
- FileUtils.rm_rf @dest
100
- end
101
- RBCliTool.cp_file @src, @dest
102
- end
103
- end
104
-
105
- end
@@ -1,406 +0,0 @@
1
- ##################################################################################
2
- # RBCli -- A framework for developing command line applications in Ruby #
3
- # Copyright (C) 2018 Andrew Khoury #
4
- # #
5
- # This program is free software: you can redistribute it and/or modify #
6
- # it under the terms of the GNU General Public License as published by #
7
- # the Free Software Foundation, either version 3 of the License, or #
8
- # (at your option) any later version. #
9
- # #
10
- # This program is distributed in the hope that it will be useful, #
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
13
- # GNU General Public License for more details. #
14
- # #
15
- # You should have received a copy of the GNU General Public License #
16
- # along with this program. If not, see <https://www.gnu.org/licenses/>. #
17
- # #
18
- # For questions regarding licensing, please contact andrew@blacknex.us #
19
- ##################################################################################
20
-
21
- require 'mdless'
22
-
23
- def class_exists?(class_name)
24
- klass = Module.const_get(class_name)
25
- return klass.is_a?(Class)
26
- rescue NameError
27
- return false
28
- end
29
-
30
- if class_exists? 'Encoding'
31
- Encoding.default_external = Encoding::UTF_8 if Encoding.respond_to?('default_external')
32
- Encoding.default_internal = Encoding::UTF_8 if Encoding.respond_to?('default_internal')
33
- end
34
-
35
- module CLIMarkdown
36
- class Converter
37
- def convert_markdown(input)
38
- @headers = get_headers(input)
39
- # yaml/MMD headers
40
- in_yaml = false
41
- if input.split("\n")[0] =~ /(?i-m)^---[ \t]*?(\n|$)/
42
- @log.info("Found YAML")
43
- # YAML
44
- in_yaml = true
45
- input.sub!(/(?i-m)^---[ \t]*\n([\s\S]*?)\n[\-.]{3}[ \t]*\n/) do |yaml|
46
- m = Regexp.last_match
47
-
48
- @log.warn("Processing YAML Header")
49
- m[0].split(/\n/).map {|line|
50
- if line =~ /^[\-.]{3}\s*$/
51
- line = c([:d,:black,:on_black]) + "% " + c([:d,:black,:on_black]) + line
52
- else
53
- line.sub!(/^(.*?:)[ \t]+(\S)/, '\1 \2')
54
- line = c([:d,:black,:on_black]) + "% " + c([:d,:white]) + line
55
- end
56
- if @cols - line.uncolor.size > 0
57
- line += " "*(@cols-line.uncolor.size)
58
- end
59
- }.join("\n") + "#{xc}\n"
60
- end
61
- end
62
-
63
- if !in_yaml && input.gsub(/\n/,' ') =~ /(?i-m)^\w.+:\s+\S+ /
64
- @log.info("Found MMD Headers")
65
- input.sub!(/(?i-m)^([\S ]+:[\s\S]*?)+(?=\n\n)/) do |mmd|
66
- puts mmd
67
- mmd.split(/\n/).map {|line|
68
- line.sub!(/^(.*?:)[ \t]+(\S)/, '\1 \2')
69
- line = c([:d,:black,:on_black]) + "% " + c([:d,:white,:on_black]) + line
70
- if @cols - line.uncolor.size > 0
71
- line += " "*(@cols - line.uncolor.size)
72
- end
73
- }.join("\n") + " "*@cols + "#{xc}\n"
74
- end
75
-
76
- end
77
-
78
-
79
- # Gather reference links
80
- input.gsub!(/^\s{,3}(?<![\e*])\[\b(.+)\b\]: +(.+)/) do |m|
81
- match = Regexp.last_match
82
- @ref_links[match[1]] = match[2]
83
- ''
84
- end
85
-
86
- # Gather footnotes (non-inline)
87
- input.gsub!(/^ {,3}(?<!\*)(?:\e\[[\d;]+m)*\[(?:\e\[[\d;]+m)*\^(?:\e\[[\d;]+m)*\b(.+)\b(?:\e\[[\d;]+m)*\]: *(.*?)\n/) do |m|
88
- match = Regexp.last_match
89
- @footnotes[match[1].uncolor] = match[2].uncolor
90
- ''
91
- end
92
-
93
- if @options[:section]
94
- in_section = false
95
- top_level = 1
96
- new_content = []
97
-
98
- input.split(/\n/).each {|graf|
99
- if graf =~ /^(#+) *(.*?)( *#+)?$/
100
- level = $1.length
101
- title = $2
102
-
103
- if in_section
104
- if level >= top_level
105
- new_content.push(graf)
106
- else
107
- in_section = false
108
- break
109
- end
110
- elsif title.downcase == "#{@headers[@options[:section] - 1][1].downcase}"
111
- in_section = true
112
- top_level = level + 1
113
- new_content.push(graf)
114
- else
115
- next
116
- end
117
- elsif in_section
118
- new_content.push(graf)
119
- end
120
- }
121
-
122
- input = new_content.join("\n")
123
- end
124
-
125
- h_adjust = highest_header(input) - 1
126
- input.gsub!(/^(#+)/) do |m|
127
- match = Regexp.last_match
128
- "#" * (match[1].length - h_adjust)
129
- end
130
-
131
- input.gsub!(/(?i-m)([`~]{3,})([\s\S]*?)\n([\s\S]*?)\1/ ) do |cb|
132
- m = Regexp.last_match
133
- leader = m[2] ? m[2].upcase + ":" : 'CODE:'
134
- leader += xc
135
-
136
- if exec_available('pygmentize')
137
- lexer = m[2].nil? ? '-g' : "-l #{m[2]}"
138
- begin
139
- hilite, s = Open3.capture2(%Q{pygmentize #{lexer} 2> /dev/null}, :stdin_data=>m[3])
140
-
141
- if s.success?
142
- hilite = hilite.split(/\n/).map{|l| "#{c([:x,:black])}~ #{xc}" + l}.join("\n")
143
- end
144
- rescue => e
145
- @log.error(e)
146
- hilite = m[0]
147
- end
148
-
149
- else
150
-
151
- hilite = m[3].split(/\n/).map{|l|
152
- new_code_line = l.gsub(/\t/,' ')
153
- orig_length = new_code_line.size + 3
154
- new_code_line.gsub!(/ /,"#{c([:x,:white,:on_black])} ")
155
- "#{c([:x,:black])}~ #{c([:x,:white,:on_black])} " + new_code_line + c([:x,:white,:on_black]) + xc
156
- }.join("\n")
157
- end
158
- "#{c([:x,:magenta])}#{leader}\n#{hilite}#{xc}"
159
- end
160
-
161
- # remove empty links
162
- input.gsub!(/\[(.*?)\]\(\s*?\)/, '\1')
163
- input.gsub!(/\[(.*?)\]\[\]/, '[\1][\1]')
164
-
165
- lines = input.split(/\n/)
166
-
167
- # previous_indent = 0
168
-
169
- lines.map!.with_index do |aLine, i|
170
- line = aLine.dup
171
- clean_line = line.dup.uncolor
172
-
173
-
174
- if clean_line.uncolor =~ /(^[%~])/ # || clean_line.uncolor =~ /^( {4,}|\t+)/
175
- ## TODO: find indented code blocks and prevent highlighting
176
- ## Needs to miss block indented 1 level in lists
177
- ## Needs to catch lists in code
178
- ## Needs to avoid within fenced code blocks
179
- # if line =~ /^([ \t]+)([^*-+]+)/
180
- # indent = $1.gsub(/\t/, " ").size
181
- # if indent >= previous_indent
182
- # line = "~" + line
183
- # end
184
- # p [indent, previous_indent]
185
- # previous_indent = indent
186
- # end
187
- else
188
- # Headlines
189
- line.gsub!(/^(#+) *(.*?)(\s*#+)?\s*$/) do |match|
190
- m = Regexp.last_match
191
- pad = ""
192
- ansi = ''
193
- case m[1].length
194
- when 1
195
- ansi = c([:b, :black, :on_intense_white])
196
- pad = c([:b,:white])
197
- pad += m[2].length + 2 > @cols ? "*"*m[2].length : "*"*(@cols - (m[2].length + 2))
198
- when 2
199
- ansi = c([:b, :green, :on_black])
200
- pad = c([:b,:black])
201
- pad += m[2].length + 2 > @cols ? "-"*m[2].length : "-"*(@cols - (m[2].length + 2))
202
- when 3
203
- ansi = c([:u, :b, :yellow])
204
- when 4
205
- ansi = c([:x, :u, :yellow])
206
- else
207
- ansi = c([:b, :white])
208
- end
209
-
210
- "\n#{xc}#{ansi}#{m[2]} #{pad}#{xc}\n"
211
- end
212
-
213
- # place footnotes under paragraphs that reference them
214
- if line =~ /\[(?:\e\[[\d;]+m)*\^(?:\e\[[\d;]+m)*(\S+)(?:\e\[[\d;]+m)*\]/
215
- key = $1.uncolor
216
- if @footnotes.key? key
217
- line += "\n\n#{c([:b,:black,:on_black])}[#{c([:b,:cyan,:on_black])}^#{c([:x,:yellow,:on_black])}#{key}#{c([:b,:black,:on_black])}]: #{c([:u,:white,:on_black])}#{@footnotes[key]}#{xc}"
218
- @footnotes.delete(key)
219
- end
220
- end
221
-
222
- # color footnote references
223
- line.gsub!(/\[\^(\S+)\]/) do |m|
224
- match = Regexp.last_match
225
- last = find_color(match.pre_match, true)
226
- counter = i
227
- while last.nil? && counter > 0
228
- counter -= 1
229
- find_color(lines[counter])
230
- end
231
- "#{c([:b,:black])}[#{c([:b,:yellow])}^#{c([:x,:yellow])}#{match[1]}#{c([:b,:black])}]" + (last ? last : xc)
232
- end
233
-
234
- # blockquotes
235
- line.gsub!(/^(\s*>)+( .*?)?$/) do |m|
236
- match = Regexp.last_match
237
- last = find_color(match.pre_match, true)
238
- counter = i
239
- while last.nil? && counter > 0
240
- counter -= 1
241
- find_color(lines[counter])
242
- end
243
- "#{c([:b,:black])}#{match[1]}#{c([:x,:magenta])} #{match[2]}" + (last ? last : xc)
244
- end
245
-
246
- # make reference links inline
247
- line.gsub!(/(?<![\e*])\[(\b.*?\b)?\]\[(\b.+?\b)?\]/) do |m|
248
- match = Regexp.last_match
249
- title = match[2] || ''
250
- text = match[1] || ''
251
- if match[2] && @ref_links.key?(title.downcase)
252
- "[#{text}](#{@ref_links[title]})"
253
- elsif match[1] && @ref_links.key?(text.downcase)
254
- "[#{text}](#{@ref_links[text]})"
255
- else
256
- if input.match(/^#+\s*#{Regexp.escape(text)}/i)
257
- "[#{text}](##{text})"
258
- else
259
- match[1]
260
- end
261
- end
262
- end
263
-
264
- # color inline links
265
- line.gsub!(/(?<![\e*!])\[(\S.*?\S)\]\((\S.+?\S)\)/) do |m|
266
- match = Regexp.last_match
267
- color_link(match.pre_match, match[1], match[2])
268
- end
269
-
270
-
271
-
272
- # inline code
273
- line.gsub!(/`(.*?)`/) do |m|
274
- match = Regexp.last_match
275
- last = find_color(match.pre_match, true)
276
- "#{c([:b,:black])}`#{c([:b,:white])}#{match[1]}#{c([:b,:black])}`" + (last ? last : xc)
277
- end
278
-
279
- # horizontal rules
280
- line.gsub!(/^ {,3}([\-*] ?){3,}$/) do |m|
281
- c([:x,:black]) + '_'*@cols + xc
282
- end
283
-
284
- # bold, bold/italic
285
- line.gsub!(/(^|\s)[\*_]{2,3}([^\*_\s][^\*_]+?[^\*_\s])[\*_]{2,3}/) do |m|
286
- match = Regexp.last_match
287
- last = find_color(match.pre_match, true)
288
- counter = i
289
- while last.nil? && counter > 0
290
- counter -= 1
291
- find_color(lines[counter])
292
- end
293
- "#{match[1]}#{c([:b])}#{match[2]}" + (last ? last : xc)
294
- end
295
-
296
- # italic
297
- line.gsub!(/(^|\s)[\*_]([^\*_\s][^\*_]+?[^\*_\s])[\*_]/) do |m|
298
- match = Regexp.last_match
299
- last = find_color(match.pre_match, true)
300
- counter = i
301
- while last.nil? && counter > 0
302
- counter -= 1
303
- find_color(lines[counter])
304
- end
305
- "#{match[1]}#{c([:u])}#{match[2]}" + (last ? last : xc)
306
- end
307
-
308
- # equations
309
- line.gsub!(/((\\\\\[)(.*?)(\\\\\])|(\\\\\()(.*?)(\\\\\)))/) do |m|
310
- match = Regexp.last_match
311
- last = find_color(match.pre_match)
312
- if match[2]
313
- brackets = [match[2], match[4]]
314
- equat = match[3]
315
- else
316
- brackets = [match[5], match[7]]
317
- equat = match[6]
318
- end
319
- "#{c([:b, :black])}#{brackets[0]}#{xc}#{c([:b,:blue])}#{equat}#{c([:b, :black])}#{brackets[1]}" + (last ? last : xc)
320
- end
321
-
322
- # list items
323
- # TODO: Fix ordered list numbering, pad numbers based on total number of list items
324
- line.gsub!(/^(\s*)([*\-+]|\d+\.) /) do |m|
325
- match = Regexp.last_match
326
- last = find_color(match.pre_match)
327
- indent = match[1] || ''
328
- "#{indent}#{c([:d, :red])}#{match[2]} " + (last ? last : xc)
329
- end
330
-
331
- # definition lists
332
- line.gsub!(/^(:\s*)(.*?)/) do |m|
333
- match = Regexp.last_match
334
- "#{c([:d, :red])}#{match[1]} #{c([:b, :white])}#{match[2]}#{xc}"
335
- end
336
-
337
- # misc html
338
- line.gsub!(/<br\/?>/, "\n")
339
- line.gsub!(/(?i-m)((<\/?)(\w+[\s\S]*?)(>))/) do |tag|
340
- match = Regexp.last_match
341
- last = find_color(match.pre_match)
342
- "#{c([:d,:black])}#{match[2]}#{c([:b,:black])}#{match[3]}#{c([:d,:black])}#{match[4]}" + (last ? last : xc)
343
- end
344
- end
345
-
346
- line
347
- end
348
-
349
- input = lines.join("\n")
350
-
351
- # images
352
- input.gsub!(/^(.*?)!\[(.*)?\]\((.*?\.(?:png|gif|jpg))( +.*)?\)/) do |m|
353
- match = Regexp.last_match
354
- if match[1].uncolor =~ /^( {4,}|\t)+/
355
- match[0]
356
- else
357
- tail = match[4].nil? ? '' : " "+match[4].strip
358
- result = nil
359
- if exec_available('imgcat') && @options[:local_images]
360
- if match[3]
361
- img_path = match[3]
362
- if img_path =~ /^http/ && @options[:remote_images]
363
- begin
364
- res, s = Open3.capture2(%Q{curl -sS "#{img_path}" 2> /dev/null | imgcat})
365
-
366
- if s.success?
367
- pre = match[2].size > 0 ? " #{c([:d,:blue])}[#{match[2].strip}]\n" : ''
368
- post = tail.size > 0 ? "\n #{c([:b,:blue])}-- #{tail} --" : ''
369
- result = pre + res + post
370
- end
371
- rescue => e
372
- @log.error(e)
373
- end
374
- else
375
- if img_path =~ /^[~\/]/
376
- img_path = File.expand_path(img_path)
377
- elsif @file
378
- base = File.expand_path(File.dirname(@file))
379
- img_path = File.join(base,img_path)
380
- end
381
- if File.exist?(img_path)
382
- pre = match[2].size > 0 ? " #{c([:d,:blue])}[#{match[2].strip}]\n" : ''
383
- post = tail.size > 0 ? "\n #{c([:b,:blue])}-- #{tail} --" : ''
384
- img = %x{imgcat "#{img_path}"}
385
- result = pre + img + post
386
- end
387
- end
388
- end
389
- end
390
- if result.nil?
391
- match[1] + color_image(match.pre_match, match[2], match[3] + tail) + xc
392
- else
393
- match[1] + result + xc
394
- end
395
- end
396
- end
397
-
398
- @footnotes.each {|t, v|
399
- input += "\n\n#{c([:b,:black,:on_black])}[#{c([:b,:yellow,:on_black])}^#{c([:x,:yellow,:on_black])}#{t}#{c([:b,:black,:on_black])}]: #{c([:u,:white,:on_black])}#{v}#{xc}"
400
- }
401
-
402
- @output += input
403
-
404
- end
405
- end
406
- end
@@ -1,120 +0,0 @@
1
- ##################################################################################
2
- # RBCli -- A framework for developing command line applications in Ruby #
3
- # Copyright (C) 2018 Andrew Khoury #
4
- # #
5
- # This program is free software: you can redistribute it and/or modify #
6
- # it under the terms of the GNU General Public License as published by #
7
- # the Free Software Foundation, either version 3 of the License, or #
8
- # (at your option) any later version. #
9
- # #
10
- # This program is distributed in the hope that it will be useful, #
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
13
- # GNU General Public License for more details. #
14
- # #
15
- # You should have received a copy of the GNU General Public License #
16
- # along with this program. If not, see <https://www.gnu.org/licenses/>. #
17
- # #
18
- # For questions regarding licensing, please contact andrew@blacknex.us #
19
- ##################################################################################
20
-
21
- module RBCliTool
22
- class Project
23
-
24
- def initialize path, template_vars = {}
25
- @skelpath = "#{File.dirname(__FILE__)}/../../skeletons/project"
26
- @minipath = "#{File.dirname(__FILE__)}/../../skeletons/mini/executable"
27
- @micropath = "#{File.dirname(__FILE__)}/../../skeletons/micro/executable"
28
-
29
- @dest = path
30
- @template_vars = template_vars
31
- end
32
-
33
- def create force = false
34
- return false if project_exists? and not force
35
- src = @skelpath
36
-
37
- # Create Top Level Folder (TLF)
38
- FileUtils.mkdir_p @dest
39
-
40
- # Create project structure
41
- %W(
42
- application/commands
43
- application/commands/scripts
44
- config
45
- userconf
46
- exe
47
- hooks
48
- spec
49
- lib/#{@template_vars[:cmdname]}
50
- ).each do |folder|
51
- FileUtils.mkdir_p "#{@dest}/#{folder}"
52
- FileUtils.touch "#{@dest}/#{folder}/.keep"
53
- end
54
-
55
- # Create executable
56
- RBCliTool.cp_file "#{src}/exe/executable", "#{@dest}/exe/#{@template_vars[:cmdname]}", @template_vars
57
- FileUtils.chmod 0755, "#{@dest}/exe/#{@template_vars[:cmdname]}"
58
-
59
- # Create files for Gem package
60
- Dir.entries(src).each do |file|
61
- next if File.directory? "#{src}/#{file}"
62
- if file == "untitled.gemspec"
63
- RBCliTool.cp_file "#{src}/#{file}", "#{@dest}/#{@template_vars[:cmdname]}.gemspec", @template_vars
64
- else
65
- RBCliTool.cp_file "#{src}/#{file}", "#{@dest}/", @template_vars
66
- end
67
- end
68
-
69
- # Create default config
70
- Dir.glob "#{src}/config/*.rb" do |file|
71
- RBCliTool.cp_file file, "#{@dest}/config/", @template_vars
72
- end
73
-
74
- # Create application options
75
- RBCliTool.cp_file "#{src}/application/options.rb", "#{@dest}/application/options.rb", @template_vars
76
-
77
- # Create lib file
78
- RBCliTool.cp_file "#{src}/lib/lib.erb", "#{@dest}/lib/#{@template_vars[:cmdname]}.rb", @template_vars
79
- FileUtils.rm_f "#{@dest}/lib/.keep"
80
-
81
- true
82
- end
83
-
84
- def create_mini force = false
85
- return false if project_exists? and not force
86
- RBCliTool.cp_file @minipath, "#{@dest}/#{@template_vars[:cmdname]}", @template_vars
87
- end
88
-
89
- def create_micro force = false
90
- return false if project_exists? and not force
91
- RBCliTool.cp_file @micropath, "#{@dest}/#{@template_vars[:cmdname]}", @template_vars
92
- end
93
-
94
- def exist?
95
- project_exists?
96
- end
97
-
98
- def self.find_root path
99
- # We look for the .rbcli file in the current tree and return the root path
100
- searchpath = path
101
- while !searchpath.empty?
102
- return searchpath if File.directory? searchpath and File.exist? "#{searchpath}/.rbcli"
103
- spath = searchpath.split('/')
104
- searchpath = (spath.length == 2) ? '/' : spath[0..-2].join('/')
105
- end
106
- false
107
- end
108
-
109
- private
110
-
111
- def project_exists?
112
- # If the specified file already exists...
113
- #return true if File.exist? @dest
114
-
115
- # Or if the .rbcli file exists anywhere in the tree, we know that we are in a subdirectory of a project
116
- Project::find_root(@dest)
117
- end
118
- end
119
-
120
- end
@@ -1,70 +0,0 @@
1
- ##################################################################################
2
- # RBCli -- A framework for developing command line applications in Ruby #
3
- # Copyright (C) 2018 Andrew Khoury #
4
- # #
5
- # This program is free software: you can redistribute it and/or modify #
6
- # it under the terms of the GNU General Public License as published by #
7
- # the Free Software Foundation, either version 3 of the License, or #
8
- # (at your option) any later version. #
9
- # #
10
- # This program is distributed in the hope that it will be useful, #
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
13
- # GNU General Public License for more details. #
14
- # #
15
- # You should have received a copy of the GNU General Public License #
16
- # along with this program. If not, see <https://www.gnu.org/licenses/>. #
17
- # #
18
- # For questions regarding licensing, please contact andrew@blacknex.us #
19
- ##################################################################################
20
-
21
- require 'erb'
22
-
23
- module RBCliTool
24
- class ERBRenderer
25
- def initialize filename, varlist
26
- @filename = filename
27
- @vars = varlist
28
- end
29
-
30
- def render
31
- ERB.new(File.read(@filename), nil, '-').result(binding)
32
- end
33
- end
34
-
35
- def self.cp_file src, dest, template_vars = nil
36
- dest = "#{dest}#{src.split('/')[-1]}" if dest.end_with? '/'
37
- if File.exist? dest
38
- puts "File #{dest} already exists. Please delete it and try again."
39
- false
40
- else
41
- print "Generating file " + dest + " ... "
42
-
43
- if template_vars
44
- renderer = ERBRenderer.new src, template_vars
45
- File.open(dest, 'w') {|file| file.write renderer.render}
46
- else
47
- FileUtils.cp src, dest
48
- end
49
-
50
- FileUtils.rm_f "#{File.dirname(dest)}/.keep" if File.exist? "#{File.dirname(dest)}/.keep"
51
- puts "Done!"
52
- true
53
- end
54
- end
55
-
56
- def self.continue_confirmation text
57
- puts text
58
- print "Continue? (Y/n): "
59
- input = gets
60
- unless input[0].downcase == 'y'
61
- puts "\n Aborting..."
62
- exit 0
63
- end
64
- end
65
-
66
- def self.exit_with_error text
67
- puts text
68
- exit 1
69
- end
70
- end