rbcli 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/.rakeTasks +7 -0
  3. data/.rbenv-gemsets +1 -0
  4. data/CHANGELOG.md +37 -0
  5. data/Gemfile.lock +46 -46
  6. data/README.md +2 -2
  7. data/docs-src/archetypes/default.md +6 -0
  8. data/docs-src/config.toml +37 -0
  9. data/docs-src/{docs/index.md → content/_index.md} +4 -4
  10. data/docs-src/content/advanced/_index.md +11 -0
  11. data/docs-src/{docs → content}/advanced/automatic_updates.md +6 -2
  12. data/docs-src/{docs → content}/advanced/command_types.md +8 -4
  13. data/docs-src/{docs → content}/advanced/distributed_state_locking.md +6 -2
  14. data/docs-src/{docs → content}/advanced/hooks.md +6 -2
  15. data/docs-src/{docs → content}/advanced/interactive_commands.md +5 -1
  16. data/docs-src/{docs → content}/advanced/logging.md +6 -2
  17. data/docs-src/{docs → content}/advanced/remote_execution.md +5 -1
  18. data/docs-src/{docs → content}/advanced/state_storage.md +6 -3
  19. data/docs-src/{docs → content}/advanced/user_config_files.md +5 -1
  20. data/docs-src/content/development/_index.md +11 -0
  21. data/docs-src/{docs/imported → content/development}/changelog.md +73 -6
  22. data/docs-src/{docs → content}/development/code_of_conduct.md +8 -1
  23. data/docs-src/{docs → content}/development/contributing.md +16 -1
  24. data/docs-src/{docs → content}/development/license.md +9 -2
  25. data/docs-src/{docs/imported/quick_reference.md → content/quick_reference/_index.md} +8 -1
  26. data/docs-src/{docs → content}/tutorial/10-getting_started.md +7 -1
  27. data/docs-src/{docs → content}/tutorial/20-project_layout.md +10 -2
  28. data/docs-src/{docs → content}/tutorial/30-your_first_command.md +10 -4
  29. data/docs-src/{docs → content}/tutorial/40-options_parameters_and_arguments.md +9 -3
  30. data/docs-src/{docs → content}/tutorial/50-publishing.md +9 -3
  31. data/docs-src/content/tutorial/_index.md +11 -0
  32. data/docs-src/{docs/whoami.md → content/whoami/_index.md} +11 -5
  33. data/docs-src/layouts/partials/logo.html +3 -0
  34. data/docs-src/makesite.sh +33 -7
  35. data/docs-src/mkdocs-archived.tar.gz +0 -0
  36. data/docs-src/runsite.sh +6 -1
  37. data/docs-src/themes/hugo-theme-learn/.editorconfig +16 -0
  38. data/docs-src/themes/hugo-theme-learn/.gitignore +3 -0
  39. data/docs-src/themes/hugo-theme-learn/.grenrc.yml +25 -0
  40. data/docs-src/themes/hugo-theme-learn/CHANGELOG.md +226 -0
  41. data/docs-src/themes/hugo-theme-learn/LICENSE.md +22 -0
  42. data/docs-src/themes/hugo-theme-learn/README.md +97 -0
  43. data/docs-src/themes/hugo-theme-learn/archetypes/chapter.md +13 -0
  44. data/docs-src/themes/hugo-theme-learn/archetypes/default.md +7 -0
  45. data/docs-src/themes/hugo-theme-learn/exampleSite/LICENSE.md +20 -0
  46. data/docs-src/themes/hugo-theme-learn/exampleSite/config.toml +102 -0
  47. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.en.md +41 -0
  48. data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.fr.md +43 -0
  49. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md +12 -0
  50. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md +12 -0
  51. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.zh.md +12 -0
  52. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md +60 -0
  53. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md +56 -0
  54. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.en.md +102 -0
  55. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.fr.md +100 -0
  56. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png +0 -0
  57. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md +11 -0
  58. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.fr.md +11 -0
  59. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif +0 -0
  60. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.en.md +194 -0
  61. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.fr.md +194 -0
  62. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png +0 -0
  63. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png +0 -0
  64. data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png +0 -0
  65. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.en.md +12 -0
  66. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.fr.md +12 -0
  67. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.en.md +57 -0
  68. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.fr.md +57 -0
  69. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.en.md +78 -0
  70. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.fr.md +78 -0
  71. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif +0 -0
  72. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/icons.en.md +41 -0
  73. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.en.md +692 -0
  74. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.fr.md +666 -0
  75. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.en.md +109 -0
  76. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.fr.md +109 -0
  77. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.en.md +166 -0
  78. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.fr.md +146 -0
  79. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png +0 -0
  80. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png +0 -0
  81. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png +0 -0
  82. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/syntaxhighlight.en.md +89 -0
  83. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.en.md +39 -0
  84. data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.fr.md +40 -0
  85. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.en.md +28 -0
  86. data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.fr.md +28 -0
  87. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.en.md +16 -0
  88. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.fr.md +16 -0
  89. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 +0 -0
  90. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  91. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf +0 -0
  92. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png +0 -0
  93. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  94. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.md +85 -0
  95. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 +0 -0
  96. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
  97. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf +0 -0
  98. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png +0 -0
  99. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
  100. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.md +85 -0
  101. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.en.md +16 -0
  102. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.fr.md +16 -0
  103. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.en.md +45 -0
  104. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.fr.md +45 -0
  105. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.en.md +6 -0
  106. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md +6 -0
  107. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md +6 -0
  108. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md +6 -0
  109. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md +6 -0
  110. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md +6 -0
  111. 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 +6 -0
  112. 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 +6 -0
  113. 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 +6 -0
  114. 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 +6 -0
  115. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.en.md +11 -0
  116. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md +11 -0
  117. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.en.md +6 -0
  118. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md +6 -0
  119. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.en.md +6 -0
  120. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md +6 -0
  121. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.en.md +7 -0
  122. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md +7 -0
  123. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.en.md +6 -0
  124. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.fr.md +6 -0
  125. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.en.md +45 -0
  126. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.fr.md +45 -0
  127. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.en.md +283 -0
  128. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.fr.md +283 -0
  129. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.en.md +62 -0
  130. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.fr.md +62 -0
  131. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.en.md +23 -0
  132. data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.fr.md +23 -0
  133. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.en.md +13 -0
  134. data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.fr.md +14 -0
  135. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/custom-footer.html +10 -0
  136. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/logo.html +39 -0
  137. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/menu-footer.html +14 -0
  138. data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/shortcodes/ghcontributors.html +31 -0
  139. data/docs-src/themes/hugo-theme-learn/exampleSite/static/css/theme-mine.css +104 -0
  140. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.eot +0 -0
  141. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.svg +1 -0
  142. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.ttf +0 -0
  143. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff +0 -0
  144. data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff2 +0 -0
  145. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/inteliver_docs.png +0 -0
  146. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tat.png +0 -0
  147. data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tshark_dev.png +0 -0
  148. data/docs-src/themes/hugo-theme-learn/i18n/ar.toml +26 -0
  149. data/docs-src/themes/hugo-theme-learn/i18n/de.toml +26 -0
  150. data/docs-src/themes/hugo-theme-learn/i18n/en.toml +26 -0
  151. data/docs-src/themes/hugo-theme-learn/i18n/es.toml +26 -0
  152. data/docs-src/themes/hugo-theme-learn/i18n/fr.toml +26 -0
  153. data/docs-src/themes/hugo-theme-learn/i18n/hi.toml +26 -0
  154. data/docs-src/themes/hugo-theme-learn/i18n/id.toml +26 -0
  155. data/docs-src/themes/hugo-theme-learn/i18n/ja.toml +26 -0
  156. data/docs-src/themes/hugo-theme-learn/i18n/nl.toml +26 -0
  157. data/docs-src/themes/hugo-theme-learn/i18n/pt.toml +26 -0
  158. data/docs-src/themes/hugo-theme-learn/i18n/ru.toml +26 -0
  159. data/docs-src/themes/hugo-theme-learn/i18n/tr.toml +26 -0
  160. data/docs-src/themes/hugo-theme-learn/i18n/zh-cn.toml +26 -0
  161. data/docs-src/themes/hugo-theme-learn/images/screenshot.png +0 -0
  162. data/docs-src/themes/hugo-theme-learn/images/tn.png +0 -0
  163. data/docs-src/themes/hugo-theme-learn/layouts/404.html +56 -0
  164. data/docs-src/themes/hugo-theme-learn/layouts/_default/list.html +22 -0
  165. data/docs-src/themes/hugo-theme-learn/layouts/_default/single.html +12 -0
  166. data/docs-src/themes/hugo-theme-learn/layouts/index.html +31 -0
  167. data/docs-src/themes/hugo-theme-learn/layouts/index.json +12 -0
  168. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-comments.html +3 -0
  169. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-footer.html +5 -0
  170. data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-header.html +5 -0
  171. data/docs-src/themes/hugo-theme-learn/layouts/partials/favicon.html +1 -0
  172. data/docs-src/themes/hugo-theme-learn/layouts/partials/footer.html +77 -0
  173. data/docs-src/themes/hugo-theme-learn/layouts/partials/header.html +111 -0
  174. data/docs-src/themes/hugo-theme-learn/layouts/partials/logo.html +19 -0
  175. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu-footer.html +1 -0
  176. data/docs-src/themes/hugo-theme-learn/layouts/partials/menu.html +151 -0
  177. data/docs-src/themes/hugo-theme-learn/layouts/partials/meta.html +2 -0
  178. data/docs-src/themes/hugo-theme-learn/layouts/partials/search.html +16 -0
  179. data/docs-src/themes/hugo-theme-learn/layouts/partials/tags.html +7 -0
  180. data/docs-src/themes/hugo-theme-learn/layouts/partials/toc.html +5 -0
  181. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/attachments.html +36 -0
  182. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/button.html +14 -0
  183. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/children.html +101 -0
  184. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/expand.html +17 -0
  185. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/mermaid.html +2 -0
  186. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/notice.html +2 -0
  187. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/ref.html +14 -0
  188. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/relref.html +14 -0
  189. data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/siteparam.html +7 -0
  190. data/docs-src/themes/hugo-theme-learn/netlify.toml +23 -0
  191. data/docs-src/themes/hugo-theme-learn/static/css/atom-one-dark-reasonable.css +77 -0
  192. data/docs-src/themes/hugo-theme-learn/static/css/auto-complete.css +47 -0
  193. data/docs-src/themes/hugo-theme-learn/static/css/featherlight.min.css +8 -0
  194. data/docs-src/themes/hugo-theme-learn/static/css/fontawesome-all.min.css +1 -0
  195. data/docs-src/themes/hugo-theme-learn/static/css/hugo-theme.css +254 -0
  196. data/docs-src/themes/hugo-theme-learn/static/css/hybrid.css +102 -0
  197. data/docs-src/themes/hugo-theme-learn/static/css/nucleus.css +615 -0
  198. data/docs-src/themes/hugo-theme-learn/static/css/perfect-scrollbar.min.css +2 -0
  199. data/docs-src/themes/hugo-theme-learn/static/css/tags.css +49 -0
  200. data/docs-src/themes/hugo-theme-learn/static/css/theme-blue.css +111 -0
  201. data/docs-src/themes/hugo-theme-learn/static/css/theme-green.css +111 -0
  202. data/docs-src/themes/hugo-theme-learn/static/css/theme-red.css +111 -0
  203. data/docs-src/themes/hugo-theme-learn/static/css/theme.css +1136 -0
  204. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.eot +0 -0
  205. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.svg +1 -0
  206. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.ttf +0 -0
  207. data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.woff +0 -0
  208. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  209. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.svg +1 -0
  210. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  211. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  212. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  213. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  214. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.svg +1 -0
  215. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  216. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  217. data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  218. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.eot +0 -0
  219. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.svg +1 -0
  220. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.ttf +0 -0
  221. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff +0 -0
  222. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff2 +0 -0
  223. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.eot +0 -0
  224. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.svg +1 -0
  225. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.ttf +0 -0
  226. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff +0 -0
  227. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff2 +0 -0
  228. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.eot +0 -0
  229. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.svg +1 -0
  230. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.ttf +0 -0
  231. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff +0 -0
  232. data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff2 +0 -0
  233. data/docs-src/themes/hugo-theme-learn/static/images/clippy.svg +1 -0
  234. data/docs-src/themes/hugo-theme-learn/static/images/favicon.png +0 -0
  235. data/docs-src/themes/hugo-theme-learn/static/images/gopher-404.jpg +0 -0
  236. data/docs-src/themes/hugo-theme-learn/static/js/auto-complete.js +3 -0
  237. data/docs-src/themes/hugo-theme-learn/static/js/clipboard.min.js +7 -0
  238. data/docs-src/themes/hugo-theme-learn/static/js/featherlight.min.js +9 -0
  239. data/docs-src/themes/hugo-theme-learn/static/js/highlight.pack.js +6 -0
  240. data/docs-src/themes/hugo-theme-learn/static/js/hugo-learn.js +94 -0
  241. data/docs-src/themes/hugo-theme-learn/static/js/jquery-3.3.1.min.js +2 -0
  242. data/docs-src/themes/hugo-theme-learn/static/js/jquery.sticky.js +288 -0
  243. data/docs-src/themes/hugo-theme-learn/static/js/learn.js +459 -0
  244. data/docs-src/themes/hugo-theme-learn/static/js/lunr.min.js +6 -0
  245. data/docs-src/themes/hugo-theme-learn/static/js/modernizr.custom-3.6.0.js +3 -0
  246. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.jquery.min.js +2 -0
  247. data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.min.js +2 -0
  248. data/docs-src/themes/hugo-theme-learn/static/js/search.js +93 -0
  249. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.css +277 -0
  250. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.dark.css +278 -0
  251. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.forest.css +356 -0
  252. data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.js +8 -0
  253. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.eot +0 -0
  254. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.svg +1 -0
  255. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.ttf +0 -0
  256. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff +0 -0
  257. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff2 +0 -0
  258. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.eot +0 -0
  259. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.svg +1 -0
  260. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.ttf +0 -0
  261. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff +0 -0
  262. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff2 +0 -0
  263. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.eot +0 -0
  264. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.svg +1 -0
  265. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.ttf +0 -0
  266. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff +0 -0
  267. data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff2 +0 -0
  268. data/docs-src/themes/hugo-theme-learn/theme.toml +21 -0
  269. data/docs-src/themes/hugo-theme-learn/wercker.yml +16 -0
  270. data/docs/404.html +54 -670
  271. data/docs/advanced/automatic_updates/index.html +998 -651
  272. data/docs/advanced/command_types/index.html +1022 -742
  273. data/docs/advanced/distributed_state_locking/index.html +998 -635
  274. data/docs/advanced/hooks/index.html +1011 -691
  275. data/docs/advanced/index.html +1140 -0
  276. data/docs/advanced/index.xml +117 -0
  277. data/docs/advanced/interactive_commands/index.html +1000 -652
  278. data/docs/advanced/logging/index.html +1006 -655
  279. data/docs/advanced/remote_execution/index.html +1010 -666
  280. data/docs/advanced/state_storage/index.html +1009 -721
  281. data/docs/advanced/user_config_files/index.html +981 -626
  282. data/docs/categories/index.html +1146 -0
  283. data/docs/categories/index.xml +14 -0
  284. data/docs/css/atom-one-dark-reasonable.css +77 -0
  285. data/docs/css/auto-complete.css +47 -0
  286. data/docs/css/featherlight.min.css +8 -0
  287. data/docs/css/fontawesome-all.min.css +1 -0
  288. data/docs/css/hugo-theme.css +254 -0
  289. data/docs/css/hybrid.css +102 -0
  290. data/docs/css/nucleus.css +615 -0
  291. data/docs/css/perfect-scrollbar.min.css +2 -0
  292. data/docs/css/tags.css +49 -0
  293. data/docs/css/theme-blue.css +111 -0
  294. data/docs/css/theme-green.css +111 -0
  295. data/docs/css/theme-red.css +111 -0
  296. data/docs/css/theme.css +1136 -0
  297. data/docs/development/changelog/index.html +1376 -0
  298. data/docs/development/code_of_conduct/index.html +974 -671
  299. data/docs/development/contributing/index.html +989 -583
  300. data/docs/development/index.html +1140 -0
  301. data/docs/development/index.xml +54 -0
  302. data/docs/development/license/index.html +973 -559
  303. data/docs/fonts/Inconsolata.eot +0 -0
  304. data/docs/fonts/Inconsolata.svg +1 -0
  305. data/docs/fonts/Inconsolata.ttf +0 -0
  306. data/docs/fonts/Inconsolata.woff +0 -0
  307. data/docs/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
  308. data/docs/fonts/Novecentosanswide-Normal-webfont.svg +1 -0
  309. data/docs/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
  310. data/docs/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
  311. data/docs/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
  312. data/docs/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
  313. data/docs/fonts/Novecentosanswide-UltraLight-webfont.svg +1 -0
  314. data/docs/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
  315. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
  316. data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
  317. data/docs/fonts/Work_Sans_200.eot +0 -0
  318. data/docs/fonts/Work_Sans_200.svg +1 -0
  319. data/docs/fonts/Work_Sans_200.ttf +0 -0
  320. data/docs/fonts/Work_Sans_200.woff +0 -0
  321. data/docs/fonts/Work_Sans_200.woff2 +0 -0
  322. data/docs/fonts/Work_Sans_300.eot +0 -0
  323. data/docs/fonts/Work_Sans_300.svg +1 -0
  324. data/docs/fonts/Work_Sans_300.ttf +0 -0
  325. data/docs/fonts/Work_Sans_300.woff +0 -0
  326. data/docs/fonts/Work_Sans_300.woff2 +0 -0
  327. data/docs/fonts/Work_Sans_500.eot +0 -0
  328. data/docs/fonts/Work_Sans_500.svg +1 -0
  329. data/docs/fonts/Work_Sans_500.ttf +0 -0
  330. data/docs/fonts/Work_Sans_500.woff +0 -0
  331. data/docs/fonts/Work_Sans_500.woff2 +0 -0
  332. data/docs/images/clippy.svg +1 -0
  333. data/docs/images/favicon.png +0 -0
  334. data/docs/images/gopher-404.jpg +0 -0
  335. data/docs/imported/changelog/index.html +1208 -1020
  336. data/docs/imported/index.html +1191 -0
  337. data/docs/imported/index.xml +23 -0
  338. data/docs/index.html +925 -558
  339. data/docs/index.json +183 -0
  340. data/docs/index.xml +212 -0
  341. data/docs/js/auto-complete.js +3 -0
  342. data/docs/js/clipboard.min.js +7 -0
  343. data/docs/js/featherlight.min.js +9 -0
  344. data/docs/js/highlight.pack.js +6 -0
  345. data/docs/js/html5shiv-printshiv.min.js +4 -0
  346. data/docs/js/hugo-learn.js +94 -0
  347. data/docs/js/jquery-3.3.1.min.js +2 -0
  348. data/docs/js/jquery.sticky.js +288 -0
  349. data/docs/js/learn.js +459 -0
  350. data/docs/js/lunr.min.js +6 -0
  351. data/docs/js/modernizr.custom-3.6.0.js +3 -0
  352. data/docs/js/perfect-scrollbar.jquery.min.js +2 -0
  353. data/docs/js/perfect-scrollbar.min.js +2 -0
  354. data/docs/js/search.js +93 -0
  355. data/docs/mermaid/mermaid.css +277 -0
  356. data/docs/mermaid/mermaid.dark.css +278 -0
  357. data/docs/mermaid/mermaid.forest.css +356 -0
  358. data/docs/mermaid/mermaid.js +8 -0
  359. data/docs/quick_reference/index.html +1246 -0
  360. data/docs/quick_reference/index.xml +15 -0
  361. data/docs/sitemap.xml +133 -107
  362. data/docs/tags/index.html +1146 -0
  363. data/docs/tags/index.xml +14 -0
  364. data/docs/tutorial/10-getting_started/index.html +994 -662
  365. data/docs/tutorial/20-project_layout/index.html +1013 -722
  366. data/docs/tutorial/30-your_first_command/index.html +1055 -734
  367. data/docs/tutorial/40-options_parameters_and_arguments/index.html +1136 -878
  368. data/docs/tutorial/50-publishing/index.html +984 -671
  369. data/docs/tutorial/index.html +1140 -0
  370. data/docs/tutorial/index.xml +71 -0
  371. data/docs/webfonts/fa-brands-400.eot +0 -0
  372. data/docs/webfonts/fa-brands-400.svg +1 -0
  373. data/docs/webfonts/fa-brands-400.ttf +0 -0
  374. data/docs/webfonts/fa-brands-400.woff +0 -0
  375. data/docs/webfonts/fa-brands-400.woff2 +0 -0
  376. data/docs/webfonts/fa-regular-400.eot +0 -0
  377. data/docs/webfonts/fa-regular-400.svg +1 -0
  378. data/docs/webfonts/fa-regular-400.ttf +0 -0
  379. data/docs/webfonts/fa-regular-400.woff +0 -0
  380. data/docs/webfonts/fa-regular-400.woff2 +0 -0
  381. data/docs/webfonts/fa-solid-900.eot +0 -0
  382. data/docs/webfonts/fa-solid-900.svg +1 -0
  383. data/docs/webfonts/fa-solid-900.ttf +0 -0
  384. data/docs/webfonts/fa-solid-900.woff +0 -0
  385. data/docs/webfonts/fa-solid-900.woff2 +0 -0
  386. data/docs/whoami/index.html +965 -555
  387. data/docs/whoami/index.xml +15 -0
  388. data/exe/rbcli +1 -0
  389. data/lib/rbcli-tool/project.rb +6 -2
  390. data/lib/rbcli/configuration/configurate_blocks/me.rb +5 -5
  391. data/lib/rbcli/engine/command.rb +1 -1
  392. data/lib/rbcli/util/deprecation_warning.rb +21 -4
  393. data/lib/rbcli/util/msg.rb +2 -2
  394. data/lib/rbcli/version.rb +1 -1
  395. data/rbcli.gemspec +12 -13
  396. data/skeletons/project/.rakeTasks +7 -0
  397. data/skeletons/project/Gemfile +1 -1
  398. data/skeletons/project/config/general.rb +1 -1
  399. data/skeletons/project/exe/executable +1 -3
  400. data/skeletons/project/lib/lib.erb +9 -0
  401. data/skeletons/project/spec/spec_helper.rb +7 -7
  402. data/skeletons/project/spec/untitled_spec.rb +6 -6
  403. data/skeletons/project/untitled.gemspec +30 -30
  404. metadata +381 -95
  405. data/docs-src/mkdocs.yml +0 -79
  406. data/docs/assets/fonts/font-awesome.css +0 -4
  407. data/docs/assets/fonts/material-icons.css +0 -13
  408. data/docs/assets/fonts/specimen/FontAwesome.ttf +0 -0
  409. data/docs/assets/fonts/specimen/FontAwesome.woff +0 -0
  410. data/docs/assets/fonts/specimen/FontAwesome.woff2 +0 -0
  411. data/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf +0 -0
  412. data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff +0 -0
  413. data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2 +0 -0
  414. data/docs/assets/images/favicon.png +0 -0
  415. data/docs/assets/images/icons/bitbucket.1b09e088.svg +0 -20
  416. data/docs/assets/images/icons/github.f0b8504a.svg +0 -18
  417. data/docs/assets/images/icons/gitlab.6dd19c00.svg +0 -38
  418. data/docs/assets/javascripts/application.583bbe55.js +0 -1
  419. data/docs/assets/javascripts/lunr/lunr.da.js +0 -1
  420. data/docs/assets/javascripts/lunr/lunr.de.js +0 -1
  421. data/docs/assets/javascripts/lunr/lunr.du.js +0 -1
  422. data/docs/assets/javascripts/lunr/lunr.es.js +0 -1
  423. data/docs/assets/javascripts/lunr/lunr.fi.js +0 -1
  424. data/docs/assets/javascripts/lunr/lunr.fr.js +0 -1
  425. data/docs/assets/javascripts/lunr/lunr.hu.js +0 -1
  426. data/docs/assets/javascripts/lunr/lunr.it.js +0 -1
  427. data/docs/assets/javascripts/lunr/lunr.jp.js +0 -1
  428. data/docs/assets/javascripts/lunr/lunr.multi.js +0 -1
  429. data/docs/assets/javascripts/lunr/lunr.no.js +0 -1
  430. data/docs/assets/javascripts/lunr/lunr.pt.js +0 -1
  431. data/docs/assets/javascripts/lunr/lunr.ro.js +0 -1
  432. data/docs/assets/javascripts/lunr/lunr.ru.js +0 -1
  433. data/docs/assets/javascripts/lunr/lunr.stemmer.support.js +0 -1
  434. data/docs/assets/javascripts/lunr/lunr.sv.js +0 -1
  435. data/docs/assets/javascripts/lunr/lunr.tr.js +0 -1
  436. data/docs/assets/javascripts/lunr/tinyseg.js +0 -1
  437. data/docs/assets/javascripts/modernizr.1aa3b519.js +0 -1
  438. data/docs/assets/stylesheets/application-palette.22915126.css +0 -1176
  439. data/docs/assets/stylesheets/application.451f80e5.css +0 -2552
  440. data/docs/imported/quick_reference/index.html +0 -1120
  441. data/docs/search/search_index.json +0 -1
  442. data/docs/sitemap.xml.gz +0 -0
  443. data/skeletons/project/lib/.keep +0 -0
@@ -0,0 +1,117 @@
1
+ <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
3
+ <channel>
4
+ <title>Advanced on RBCli Documentation</title>
5
+ <link>https://akhoury6.github.io/rbcli/advanced/</link>
6
+ <description>Recent content in Advanced on RBCli Documentation</description>
7
+ <generator>Hugo -- gohugo.io</generator>
8
+ <language>en-us</language>
9
+ <lastBuildDate>Thu, 20 Jun 2019 15:08:08 -0400</lastBuildDate>
10
+
11
+ <atom:link href="https://akhoury6.github.io/rbcli/advanced/index.xml" rel="self" type="application/rss+xml" />
12
+
13
+
14
+ <item>
15
+ <title>Automatic Updates</title>
16
+ <link>https://akhoury6.github.io/rbcli/advanced/automatic_updates/</link>
17
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
18
+
19
+ <guid>https://akhoury6.github.io/rbcli/advanced/automatic_updates/</guid>
20
+ <description>RBCli can automatically notify users when an update is available. If force_update is set (see below), RBCli can halt execution until the user updates their application.
21
+ Two sources are currently supported: Github (including Enterprise) and RubyGems.
22
+ GitHub Update Check The GitHub update check works best when paired with GitHub&amp;rsquo;s best practices on releases, where new releases are tagged on master with the format vX.X.X. See Github&amp;rsquo;s release documentation to learn more.</description>
23
+ </item>
24
+
25
+ <item>
26
+ <title>Command Types</title>
27
+ <link>https://akhoury6.github.io/rbcli/advanced/command_types/</link>
28
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
29
+
30
+ <guid>https://akhoury6.github.io/rbcli/advanced/command_types/</guid>
31
+ <description>RBCli has three different command types:
32
+ Standard Commands (Ruby-based) Scripted Commands (Ruby+Bash based) External Commands (Wrapping a 3rd party application) This document is provided to be a reference. If you would like an in-depth tutorial, please see Your First Command.
33
+ General Command Structure Commands in RBCli are created by subclassing Rbcli::Command. All commands share a certain common structure:
34
+ class List &amp;lt; Rbcli::Command # Declare a new command by subclassing Rbcli::Command description &amp;#39;TODO: Description goes here&amp;#39; # (Required) Short description for the global help usage &amp;lt;&amp;lt;-EOF TODO: Usage text goes here EOF # (Required) Long description for the command-specific help parameter :force, &amp;#39;Force testing&amp;#39;, type: :boolean, default: false, required: false # (Optional, Multiple) Add a command-specific CLI parameter.</description>
35
+ </item>
36
+
37
+ <item>
38
+ <title>Distributed State and Locking</title>
39
+ <link>https://akhoury6.github.io/rbcli/advanced/distributed_state_locking/</link>
40
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
41
+
42
+ <guid>https://akhoury6.github.io/rbcli/advanced/distributed_state_locking/</guid>
43
+ <description>Distributed Locking allows a Remote State to be shared among multiple users of the application to make writes appear atomic between sessions. To use it, simply set the locking: parameter to true when enabling remote state.
44
+ This is how locking works:
45
+ The application attempts to acquire a lock on the remote state when you first access it If the backend is locked by a different application, wait and try again If it succeeds, the lock is held and refreshed periodically When the application exits, the lock is released If the application does not refresh its lock, or fails to release it when it exits, the lock will automatically expire within 60 seconds If another application steals the lock (unlikely but possible), and the application tries to save data, a StandardError will be thrown You can manually attempt to lock/unlock by calling Rbcli.</description>
46
+ </item>
47
+
48
+ <item>
49
+ <title>Execution Hooks</title>
50
+ <link>https://akhoury6.github.io/rbcli/advanced/hooks/</link>
51
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
52
+
53
+ <guid>https://akhoury6.github.io/rbcli/advanced/hooks/</guid>
54
+ <description>RBCli provides you with hooks that can be used to have code execute at certain places in the execution chain. These hooks are optional, and do not have to be defined for your application to run.
55
+ All hooks will be created in the hooks/ folder in your project.
56
+ The Defailt Action Hook The Default hook is called when a user calls your application without providing a command. If the hook is not provided, the application will automatically display the help text (the same as running it with -h).</description>
57
+ </item>
58
+
59
+ <item>
60
+ <title>Interactive Commands</title>
61
+ <link>https://akhoury6.github.io/rbcli/advanced/interactive_commands/</link>
62
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
63
+
64
+ <guid>https://akhoury6.github.io/rbcli/advanced/interactive_commands/</guid>
65
+ <description>Why interactive commands? When catering to an audience of users who are not accustomed to scripting, you may want to prompt them for the information directly (the typical CS-101 &amp;lsquo;puts&amp;rsquo; and &amp;lsquo;gets&amp;rsquo; pattern). This can be a lot more straightforward than having to read the help texts of your tool, and trying multiple times to enter all of the required data.
66
+ Of course, we want to make sure that scripting with the tool still works well (headless interaction).</description>
67
+ </item>
68
+
69
+ <item>
70
+ <title>Logging</title>
71
+ <link>https://akhoury6.github.io/rbcli/advanced/logging/</link>
72
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
73
+
74
+ <guid>https://akhoury6.github.io/rbcli/advanced/logging/</guid>
75
+ <description>Logging with RBCli is straightforward - it looks at the config file for logging settings, and instantiates a single, globally accessible Logger object. You can access it within a standard command like this:
76
+ Rbcli::log.info { &amp;#39;These logs can go to STDERR, STDOUT, or a file&amp;#39; } Enabling Logging To enable logging, simply set the default values in the config/logging.rb file:
77
+ log_level :info log_target &amp;#39;stderr&amp;#39; log_level You can set the default log level using either numeric or standard Ruby logger levels: 0-5, or DEBUG &amp;lt; INFO &amp;lt; WARN &amp;lt; ERROR &amp;lt; FATAL &amp;lt; UNKNOWN log_target This specifies where the logs will be placed.</description>
78
+ </item>
79
+
80
+ <item>
81
+ <title>Remote Execution</title>
82
+ <link>https://akhoury6.github.io/rbcli/advanced/remote_execution/</link>
83
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
84
+
85
+ <guid>https://akhoury6.github.io/rbcli/advanced/remote_execution/</guid>
86
+ <description>RBCli can be configured to execute commands on a remote machine via SSH instead of locally.
87
+ Currently, only script and extern commands are supported.
88
+ Configuration To allow remote execution, go to config/general.rb and change the following line to true:
89
+ remote_execution permitted: false Then, for each command that you would like to enable remote execution for, add the following directive to the command class declaration:
90
+ remote_permitted Usage Your end users can now execute a command remotely by specifying the connection string and credentials on the command line as follows:</description>
91
+ </item>
92
+
93
+ <item>
94
+ <title>State Storage</title>
95
+ <link>https://akhoury6.github.io/rbcli/advanced/state_storage/</link>
96
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
97
+
98
+ <guid>https://akhoury6.github.io/rbcli/advanced/state_storage/</guid>
99
+ <description>RBCli supports both local and remote state storage. This is done by synchronizing a Hash with either the local disk or a remote database.
100
+ Local State RBCli&amp;rsquo;s local state storage gives you access to a hash that is automatically persisted to disk when changes are made.
101
+ Configuration You can configure it in config/storage.rb.
102
+ local_state &amp;#39;/var/mytool/localstate&amp;#39;, force_creation: true, halt_on_error: true There are three parameters to configure it with:
103
+ The path as a string (self-explanatory) force_creation This will attempt to create the path and file if it does not exist (equivalent to an mkdir -p and touch in linux) halt_on_error RBCli&amp;rsquo;s default behavior is to raise an exception if the file can not be created, read, or updated at any point in time If this is set to false, RBCli will silence any errors pertaining to file access and will fall back to whatever data is available.</description>
104
+ </item>
105
+
106
+ <item>
107
+ <title>User Configuration Files</title>
108
+ <link>https://akhoury6.github.io/rbcli/advanced/user_config_files/</link>
109
+ <pubDate>Thu, 20 Jun 2019 15:07:21 -0400</pubDate>
110
+
111
+ <guid>https://akhoury6.github.io/rbcli/advanced/user_config_files/</guid>
112
+ <description>RBCli provides built-in support for creating and managing userspace configuration files. It does this through two chains: the defaults chain and the user chain.
113
+ Defaults chain The defaults chain allows you to specify sane defaults for your CLI tool throughout your code. This gives you the ability to declare configuration alongside the code, and allows RBCli to generate a user config automatically given your defaults. There are two ways to set them:</description>
114
+ </item>
115
+
116
+ </channel>
117
+ </rss>
@@ -1,829 +1,1177 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="js csstransforms3d">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="generator" content="Hugo 0.74.3" />
7
+ <meta name="description" content="">
1
8
 
2
9
 
10
+ <link rel="icon" href="/rbcli/images/favicon.png" type="image/png">
3
11
 
12
+ <title>Interactive Commands :: RBCli Documentation</title>
4
13
 
5
- <!DOCTYPE html>
6
- <html lang="en" class="no-js">
7
- <head>
8
-
9
- <meta charset="utf-8">
10
- <meta name="viewport" content="width=device-width,initial-scale=1">
11
- <meta http-equiv="x-ua-compatible" content="ie=edge">
12
-
13
- <meta name="description" content="Description">
14
-
15
-
16
-
17
- <meta name="author" content="Andrew Khoury">
18
-
19
-
20
- <meta name="lang:clipboard.copy" content="Copy to clipboard">
21
-
22
- <meta name="lang:clipboard.copied" content="Copied to clipboard">
23
-
24
- <meta name="lang:search.language" content="en">
25
-
26
- <meta name="lang:search.pipeline.stopwords" content="True">
27
-
28
- <meta name="lang:search.pipeline.trimmer" content="True">
29
-
30
- <meta name="lang:search.result.none" content="No matching documents">
31
-
32
- <meta name="lang:search.result.one" content="1 matching document">
33
-
34
- <meta name="lang:search.result.other" content="# matching documents">
35
-
36
- <meta name="lang:search.tokenizer" content="[\s\-]+">
37
-
38
- <link rel="shortcut icon" href="../../assets/images/favicon.png">
39
- <meta name="generator" content="mkdocs-1.0.3, mkdocs-material-3.0.4">
40
-
41
-
42
-
43
- <title>Interactive Commands - RBCli Documentation</title>
44
-
45
14
 
15
+ <link href="/rbcli/css/nucleus.css?1596148729" rel="stylesheet">
16
+ <link href="/rbcli/css/fontawesome-all.min.css?1596148729" rel="stylesheet">
17
+ <link href="/rbcli/css/hybrid.css?1596148729" rel="stylesheet">
18
+ <link href="/rbcli/css/featherlight.min.css?1596148729" rel="stylesheet">
19
+ <link href="/rbcli/css/perfect-scrollbar.min.css?1596148729" rel="stylesheet">
20
+ <link href="/rbcli/css/auto-complete.css?1596148729" rel="stylesheet">
21
+ <link href="/rbcli/css/atom-one-dark-reasonable.css?1596148729" rel="stylesheet">
22
+ <link href="/rbcli/css/theme.css?1596148729" rel="stylesheet">
23
+ <link href="/rbcli/css/hugo-theme.css?1596148729" rel="stylesheet">
46
24
 
47
- <link rel="stylesheet" href="../../assets/stylesheets/application.451f80e5.css">
48
-
49
-
50
-
51
-
52
- <script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
25
+ <link href="/rbcli/css/theme-blue.css?1596148729" rel="stylesheet">
53
26
 
54
27
 
28
+
29
+ <script src="/rbcli/js/jquery-3.3.1.min.js?1596148729"></script>
30
+
31
+ <style>
32
+ :root #header + #content > #left > #rlblock_left{
33
+ display:none !important;
34
+ }
55
35
 
56
- <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
57
- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
58
- <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
59
-
60
-
61
- <link rel="stylesheet" href="../../assets/fonts/material-icons.css">
62
-
36
+ </style>
63
37
 
64
38
  </head>
65
-
66
- <body dir="ltr">
67
-
68
- <svg class="md-svg">
69
- <defs>
70
-
71
-
72
- <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448"
73
- viewBox="0 0 416 448" id="__github">
74
- <path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19-18.125
75
- 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19 18.125-8.5
76
- 18.125 8.5 10.75 19 3.125 20.5zM320 304q0 10-3.125 20.5t-10.75
77
- 19-18.125 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19
78
- 18.125-8.5 18.125 8.5 10.75 19 3.125 20.5zM360
79
- 304q0-30-17.25-51t-46.75-21q-10.25 0-48.75 5.25-17.75 2.75-39.25
80
- 2.75t-39.25-2.75q-38-5.25-48.75-5.25-29.5 0-46.75 21t-17.25 51q0 22 8
81
- 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0
82
- 37.25-1.75t35-7.375 30.5-15 20.25-25.75 8-38.375zM416 260q0 51.75-15.25
83
- 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5-41.75
84
- 1.125q-19.5 0-35.5-0.75t-36.875-3.125-38.125-7.5-34.25-12.875-30.25-20.25-21.5-28.75q-15.5-30.75-15.5-82.75
85
- 0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25
86
- 30.875q36.75-8.75 77.25-8.75 37 0 70 8 26.25-20.5
87
- 46.75-30.25t47.25-9.75q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34
88
- 99.5z" />
89
- </svg>
90
-
91
- </defs>
92
- </svg>
93
- <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
94
- <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
95
- <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
96
-
97
- <a href="../../#interactive-commands" tabindex="1" class="md-skip">
98
- Skip to content
99
- </a>
100
-
101
-
102
- <header class="md-header" data-md-component="header">
103
- <nav class="md-header-nav md-grid">
104
- <div class="md-flex">
105
- <div class="md-flex__cell md-flex__cell--shrink">
106
- <a href="../.." title="RBCli Documentation" class="md-header-nav__button md-logo">
107
-
108
- <i class="md-icon">devices</i>
109
-
110
- </a>
111
- </div>
112
- <div class="md-flex__cell md-flex__cell--shrink">
113
- <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
114
- </div>
115
- <div class="md-flex__cell md-flex__cell--stretch">
116
- <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
117
-
118
-
119
- <span class="md-header-nav__topic">
120
- RBCli Documentation
121
- </span>
122
- <span class="md-header-nav__topic">
123
- Interactive Commands
124
- </span>
125
-
126
-
127
- </div>
128
- </div>
129
- <div class="md-flex__cell md-flex__cell--shrink">
130
-
131
-
132
- <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
133
-
134
- <div class="md-search" data-md-component="search" role="dialog">
135
- <label class="md-search__overlay" for="__search"></label>
136
- <div class="md-search__inner" role="search">
137
- <form class="md-search__form" name="search">
138
- <input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
139
- <label class="md-icon md-search__icon" for="__search"></label>
140
- <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
141
- &#xE5CD;
142
- </button>
143
- </form>
144
- <div class="md-search__output">
145
- <div class="md-search__scrollwrap" data-md-scrollfix>
146
- <div class="md-search-result" data-md-component="result">
147
- <div class="md-search-result__meta">
148
- Type to start searching
149
- </div>
150
- <ol class="md-search-result__list"></ol>
151
- </div>
152
- </div>
153
- </div>
154
- </div>
155
- </div>
156
-
157
-
158
- </div>
159
-
160
- <div class="md-flex__cell md-flex__cell--shrink">
161
- <div class="md-header-nav__source">
162
-
39
+ <body class="" data-url="/rbcli/advanced/interactive_commands/">
40
+ <nav id="sidebar" class="">
163
41
 
164
42
 
165
-
166
43
 
44
+ <div id="header-wrapper">
45
+ <div id="header">
46
+ <a id="logo" href="https://akhoury6.github.io/rbcli/" style="font-size: 40px">
47
+ <span class="fas fa-terminal"></span>&nbsp;𝚁𝙱𝙲𝚕𝚒
48
+ </a>
167
49
 
168
- <a href="https://github.com/akhoury6/rbcli/" title="Go to repository" class="md-source" data-md-source="github">
50
+ </div>
169
51
 
170
- <div class="md-source__icon">
171
- <svg viewBox="0 0 24 24" width="24" height="24">
172
- <use xlink:href="#__github" width="24" height="24"></use>
173
- </svg>
174
- </div>
52
+ <div class="searchbox">
53
+ <label for="search-by"><i class="fas fa-search"></i></label>
54
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
55
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
56
+ </div>
57
+
58
+ <script type="text/javascript" src="/rbcli/js/lunr.min.js?1596148729"></script>
59
+ <script type="text/javascript" src="/rbcli/js/auto-complete.js?1596148729"></script>
60
+ <script type="text/javascript">
175
61
 
176
- <div class="md-source__repository">
177
- GitHub
178
- </div>
179
- </a>
62
+ var baseurl = "https:\/\/akhoury6.github.io\/rbcli\/";
63
+
64
+ </script>
65
+ <script type="text/javascript" src="/rbcli/js/search.js?1596148729"></script>
180
66
 
181
- </div>
182
- </div>
183
-
184
- </div>
185
- </nav>
186
- </header>
187
67
 
188
- <div class="md-container">
189
-
190
-
191
-
192
-
193
-
68
+ </div>
194
69
 
195
-
70
+ <div class="highlightable">
71
+ <ul class="topics">
196
72
 
197
- <nav class="md-tabs md-tabs--active" data-md-component="tabs">
198
- <div class="md-tabs__inner md-grid">
199
- <ul class="md-tabs__list">
200
-
201
73
 
202
- <li class="md-tabs__item">
203
-
204
- <a href="../.." title="Home" class="md-tabs__link">
205
- Home
206
- </a>
207
-
208
- </li>
74
+
75
+
209
76
 
210
-
211
-
212
-
213
-
214
-
215
-
216
- <li class="md-tabs__item">
217
-
218
- <a href="../../tutorial/10-getting_started/" title="Tutorial" class="md-tabs__link">
219
- Tutorial
220
- </a>
221
-
222
- </li>
223
-
224
77
 
225
-
226
-
227
-
228
-
229
- <li class="md-tabs__item">
230
-
231
- <a href="../command_types/" title="Advanced Features" class="md-tabs__link md-tabs__link--active">
232
- Advanced Features
233
- </a>
234
-
235
- </li>
236
-
237
78
 
238
-
239
-
240
-
241
-
242
- <li class="md-tabs__item">
243
-
244
- <a href="../../development/contributing/" title="Development" class="md-tabs__link">
245
- Development
246
- </a>
247
-
248
- </li>
249
-
250
79
 
251
-
80
+
81
+
82
+
83
+ <li data-nav-id="/rbcli/quick_reference/" title="Quick Reference" class="dd-item
252
84
 
253
-
254
- </ul>
255
- </div>
256
- </nav>
257
-
258
- <main class="md-main">
259
- <div class="md-main__inner md-grid" data-md-component="container">
85
+
86
+
87
+ ">
88
+ <a href="/rbcli/quick_reference/">
89
+ Quick Reference
260
90
 
261
-
262
- <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
263
- <div class="md-sidebar__scrollwrap">
264
- <div class="md-sidebar__inner">
265
- <nav class="md-nav md-nav--primary" data-md-level="0">
266
- <label class="md-nav__title md-nav__title--site" for="__drawer">
267
- <a href="../.." title="RBCli Documentation" class="md-nav__button md-logo">
268
-
269
- <i class="md-icon">devices</i>
91
+ </a>
270
92
 
271
- </a>
272
- RBCli Documentation
273
- </label>
93
+
94
+ </li>
274
95
 
275
- <div class="md-nav__source">
276
-
96
+
277
97
 
98
+
99
+
278
100
 
279
-
280
101
 
281
102
 
282
- <a href="https://github.com/akhoury6/rbcli/" title="Go to repository" class="md-source" data-md-source="github">
283
-
284
- <div class="md-source__icon">
285
- <svg viewBox="0 0 24 24" width="24" height="24">
286
- <use xlink:href="#__github" width="24" height="24"></use>
287
- </svg>
288
- </div>
289
-
290
- <div class="md-source__repository">
291
- GitHub
292
- </div>
293
- </a>
294
103
 
295
- </div>
104
+
296
105
 
297
- <ul class="md-nav__list" data-md-scrollfix>
298
106
 
107
+ <li data-nav-id="/rbcli/tutorial/" title="Tutorial" class="dd-item
108
+
109
+
110
+
111
+ ">
112
+ <a href="/rbcli/tutorial/">
113
+ Tutorial
114
+
115
+ </a>
299
116
 
300
117
 
301
-
118
+ <ul>
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
302
128
 
303
129
 
304
- <li class="md-nav__item">
305
- <a href="../.." title="Home" class="md-nav__link">
306
- Home
307
- </a>
308
- </li>
309
130
 
131
+
132
+
310
133
 
311
-
312
-
313
-
134
+ <li data-nav-id="/rbcli/tutorial/10-getting_started/" title="Getting Started" class="dd-item ">
135
+ <a href="/rbcli/tutorial/10-getting_started/">
136
+ <b>1. </b>Getting Started
137
+
138
+ </a>
139
+ </li>
140
+
141
+
142
+
314
143
 
144
+
145
+
146
+
147
+
315
148
 
316
- <li class="md-nav__item">
317
- <a href="../../imported/quick_reference/" title="Quick Reference" class="md-nav__link">
318
- Quick Reference
319
- </a>
320
- </li>
321
149
 
322
-
323
-
324
-
325
-
326
150
 
327
151
 
328
- <li class="md-nav__item md-nav__item--nested">
329
-
330
- <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
152
+
153
+
331
154
 
332
- <label class="md-nav__link" for="nav-3">
333
- Tutorial
334
- </label>
335
- <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
336
- <label class="md-nav__title" for="nav-3">
337
- Tutorial
338
- </label>
339
- <ul class="md-nav__list" data-md-scrollfix>
155
+ <li data-nav-id="/rbcli/tutorial/20-project_layout/" title="The Project Layout" class="dd-item ">
156
+ <a href="/rbcli/tutorial/20-project_layout/">
157
+ <b>2. </b>The Project Layout
340
158
 
341
-
342
-
343
-
344
-
345
-
346
-
347
- <li class="md-nav__item">
348
- <a href="../../tutorial/10-getting_started/" title="Getting Started" class="md-nav__link">
349
- Getting Started
350
- </a>
351
- </li>
159
+ </a>
160
+ </li>
161
+
162
+
163
+
352
164
 
353
-
354
-
355
-
165
+
356
166
 
167
+
168
+
169
+
357
170
 
358
171
 
359
- <li class="md-nav__item">
360
- <a href="../../tutorial/20-project_layout/" title="The Project Layout" class="md-nav__link">
361
- The Project Layout
362
- </a>
363
- </li>
364
172
 
173
+
174
+
175
+
176
+ <li data-nav-id="/rbcli/tutorial/30-your_first_command/" title="Your First Command" class="dd-item ">
177
+ <a href="/rbcli/tutorial/30-your_first_command/">
178
+ <b>3. </b>Your First Command
365
179
 
180
+ </a>
181
+ </li>
182
+
183
+
184
+
185
+
186
+
366
187
 
367
-
368
-
188
+
189
+
190
+
369
191
 
370
192
 
371
- <li class="md-nav__item">
372
- <a href="../../tutorial/30-your_first_command/" title="Your First Command" class="md-nav__link">
373
- Your First Command
374
- </a>
375
- </li>
376
193
 
194
+
195
+
196
+
197
+ <li data-nav-id="/rbcli/tutorial/40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="dd-item ">
198
+ <a href="/rbcli/tutorial/40-options_parameters_and_arguments/">
199
+ <b>4. </b>Options, Parameters, and Arguments
377
200
 
201
+ </a>
202
+ </li>
203
+
204
+
205
+
206
+
207
+
378
208
 
379
-
380
-
209
+
210
+
211
+
381
212
 
382
213
 
383
- <li class="md-nav__item">
384
- <a href="../../tutorial/40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="md-nav__link">
385
- Options, Parameters, and Arguments
386
- </a>
387
- </li>
388
214
 
215
+
216
+
217
+
218
+ <li data-nav-id="/rbcli/tutorial/50-publishing/" title="Publishing Your Application" class="dd-item ">
219
+ <a href="/rbcli/tutorial/50-publishing/">
220
+ <b>5. </b>Publishing Your Application
389
221
 
222
+ </a>
223
+ </li>
224
+
225
+
226
+
227
+
228
+
390
229
 
230
+
231
+ </ul>
232
+
233
+ </li>
234
+
235
+
236
+
391
237
 
392
238
 
393
239
 
394
240
 
395
- <li class="md-nav__item">
396
- <a href="../../tutorial/50-publishing/" title="Publishing and Distribution" class="md-nav__link">
397
- Publishing and Distribution
398
- </a>
399
- </li>
400
-
401
-
402
- </ul>
403
- </nav>
404
- </li>
405
241
 
406
-
407
-
408
-
409
-
410
242
 
243
+
411
244
 
412
-
413
-
414
- <li class="md-nav__item md-nav__item--active md-nav__item--nested">
415
245
 
416
- <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" checked>
417
-
418
- <label class="md-nav__link" for="nav-4">
419
- Advanced Features
420
- </label>
421
- <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
422
- <label class="md-nav__title" for="nav-4">
423
- Advanced Features
424
- </label>
425
- <ul class="md-nav__list" data-md-scrollfix>
246
+ <li data-nav-id="/rbcli/advanced/" title="Advanced" class="dd-item
247
+ parent
426
248
 
427
249
 
250
+ ">
251
+ <a href="/rbcli/advanced/">
252
+ Advanced
428
253
 
254
+ </a>
255
+
256
+
257
+ <ul>
429
258
 
430
259
 
431
-
432
-
433
- <li class="md-nav__item">
434
- <a href="../command_types/" title="Command Types" class="md-nav__link">
435
- Command Types
436
- </a>
437
- </li>
438
-
439
-
440
260
 
441
261
 
262
+
442
263
 
264
+
265
+
266
+
443
267
 
444
268
 
445
- <li class="md-nav__item">
446
- <a href="../user_config_files/" title="User Config Files" class="md-nav__link">
447
- User Config Files
448
- </a>
449
- </li>
450
269
 
270
+
271
+
272
+
273
+ <li data-nav-id="/rbcli/advanced/automatic_updates/" title="Automatic Updates" class="dd-item ">
274
+ <a href="/rbcli/advanced/automatic_updates/">
275
+ Automatic Updates
451
276
 
277
+ </a>
278
+ </li>
279
+
280
+
281
+
282
+
283
+
452
284
 
453
-
454
-
285
+
286
+
287
+
455
288
 
456
289
 
457
- <li class="md-nav__item">
458
- <a href="../hooks/" title="Hooks" class="md-nav__link">
459
- Hooks
460
- </a>
461
- </li>
462
290
 
291
+
292
+
293
+
294
+ <li data-nav-id="/rbcli/advanced/command_types/" title="Command Types" class="dd-item ">
295
+ <a href="/rbcli/advanced/command_types/">
296
+ Command Types
463
297
 
298
+ </a>
299
+ </li>
300
+
301
+
302
+
303
+
304
+
464
305
 
465
-
466
-
306
+
307
+
308
+
467
309
 
468
310
 
469
- <li class="md-nav__item">
470
- <a href="../logging/" title="Logging" class="md-nav__link">
471
- Logging
472
- </a>
473
- </li>
474
311
 
312
+
313
+
314
+
315
+ <li data-nav-id="/rbcli/advanced/distributed_state_locking/" title="Distributed State and Locking" class="dd-item ">
316
+ <a href="/rbcli/advanced/distributed_state_locking/">
317
+ Distributed State and Locking
475
318
 
319
+ </a>
320
+ </li>
321
+
322
+
323
+
324
+
325
+
476
326
 
477
-
478
-
327
+
328
+
329
+
479
330
 
480
331
 
481
- <li class="md-nav__item">
482
- <a href="../automatic_updates/" title="Automatic Updates" class="md-nav__link">
483
- Automatic Updates
484
- </a>
485
- </li>
486
332
 
333
+
334
+
335
+
336
+ <li data-nav-id="/rbcli/advanced/hooks/" title="Execution Hooks" class="dd-item ">
337
+ <a href="/rbcli/advanced/hooks/">
338
+ Execution Hooks
487
339
 
340
+ </a>
341
+ </li>
342
+
343
+
344
+
345
+
346
+
488
347
 
489
-
490
-
348
+
349
+
350
+
491
351
 
492
352
 
493
- <li class="md-nav__item">
494
- <a href="../state_storage/" title="State Storage" class="md-nav__link">
495
- State Storage
496
- </a>
497
- </li>
498
353
 
354
+
355
+
356
+
357
+ <li data-nav-id="/rbcli/advanced/interactive_commands/" title="Interactive Commands" class="dd-item active">
358
+ <a href="/rbcli/advanced/interactive_commands/">
359
+ Interactive Commands
499
360
 
361
+ </a>
362
+ </li>
363
+
364
+
365
+
366
+
367
+
500
368
 
501
-
502
-
369
+
370
+
503
371
 
504
372
 
505
- <li class="md-nav__item">
506
- <a href="../distributed_state_locking/" title="Distributed State Locking" class="md-nav__link">
507
- Distributed State Locking
508
- </a>
509
- </li>
510
373
 
374
+
375
+
376
+
377
+
378
+ <li data-nav-id="/rbcli/advanced/logging/" title="Logging" class="dd-item ">
379
+ <a href="/rbcli/advanced/logging/">
380
+ Logging
511
381
 
382
+ </a>
383
+ </li>
384
+
385
+
386
+
387
+
388
+
512
389
 
513
-
514
-
390
+
391
+
515
392
 
516
393
 
517
- <li class="md-nav__item">
518
- <a href="../remote_execution/" title="Remote Execution" class="md-nav__link">
519
- Remote Execution
520
- </a>
521
- </li>
522
394
 
395
+
396
+
397
+
398
+
399
+ <li data-nav-id="/rbcli/advanced/remote_execution/" title="Remote Execution" class="dd-item ">
400
+ <a href="/rbcli/advanced/remote_execution/">
401
+ Remote Execution
523
402
 
403
+ </a>
404
+ </li>
405
+
406
+
407
+
408
+
409
+
524
410
 
525
-
526
-
411
+
412
+
527
413
 
528
-
529
414
 
530
415
 
531
- <li class="md-nav__item md-nav__item--active">
532
-
533
- <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
534
-
535
-
536
-
537
-
538
- <label class="md-nav__link md-nav__link--active" for="__toc">
539
- Interactive Commands
540
- </label>
541
-
542
- <a href="./" title="Interactive Commands" class="md-nav__link md-nav__link--active">
543
- Interactive Commands
544
- </a>
545
-
546
-
547
- <nav class="md-nav md-nav--secondary">
548
-
416
+
417
+
549
418
 
550
419
 
420
+ <li data-nav-id="/rbcli/advanced/state_storage/" title="State Storage" class="dd-item ">
421
+ <a href="/rbcli/advanced/state_storage/">
422
+ State Storage
423
+
424
+ </a>
425
+ </li>
426
+
551
427
 
552
-
553
- <label class="md-nav__title" for="__toc">Table of contents</label>
554
- <ul class="md-nav__list" data-md-scrollfix>
555
-
556
- <li class="md-nav__item">
557
- <a href="#why-interactive-commands" title="Why interactive commands?" class="md-nav__link">
558
- Why interactive commands?
559
- </a>
560
-
561
- </li>
562
-
563
- <li class="md-nav__item">
564
- <a href="#how-to-do-it-with-rbcli" title="How to do it with Rbcli" class="md-nav__link">
565
- How to do it with Rbcli
566
- </a>
567
-
568
- </li>
569
-
570
-
571
-
572
-
573
-
574
- </ul>
575
-
576
- </nav>
577
-
578
- </li>
428
+
579
429
 
580
-
581
- </ul>
582
- </nav>
583
- </li>
430
+
431
+
432
+
433
+
584
434
 
585
-
586
-
587
-
588
-
589
435
 
590
436
 
591
- <li class="md-nav__item md-nav__item--nested">
592
-
593
- <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
437
+
438
+
439
+
594
440
 
595
- <label class="md-nav__link" for="nav-5">
596
- Development
597
- </label>
598
- <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
599
- <label class="md-nav__title" for="nav-5">
600
- Development
601
- </label>
602
- <ul class="md-nav__list" data-md-scrollfix>
603
-
441
+ <li data-nav-id="/rbcli/advanced/user_config_files/" title="User Configuration Files" class="dd-item ">
442
+ <a href="/rbcli/advanced/user_config_files/">
443
+ User Configuration Files
604
444
 
445
+ </a>
446
+ </li>
447
+
448
+
449
+
450
+
451
+
605
452
 
453
+
454
+ </ul>
455
+
456
+ </li>
457
+
458
+
459
+
606
460
 
607
461
 
608
462
 
609
463
 
610
- <li class="md-nav__item">
611
- <a href="../../development/contributing/" title="Contribution Guide" class="md-nav__link">
612
- Contribution Guide
613
- </a>
614
- </li>
615
464
 
465
+
466
+
467
+
468
+
469
+ <li data-nav-id="/rbcli/development/" title="Development" class="dd-item
470
+
616
471
 
472
+
473
+ ">
474
+ <a href="/rbcli/development/">
475
+ Development
617
476
 
477
+ </a>
478
+
479
+
480
+ <ul>
618
481
 
619
482
 
620
-
621
-
622
- <li class="md-nav__item">
623
- <a href="../../development/license/" title="License Info" class="md-nav__link">
624
- License Info
625
- </a>
626
- </li>
627
-
628
-
629
483
 
630
484
 
485
+
631
486
 
487
+
488
+
632
489
 
633
490
 
634
- <li class="md-nav__item">
635
- <a href="../../development/code_of_conduct/" title="Code of Conduct" class="md-nav__link">
636
- Code of Conduct
637
- </a>
638
- </li>
639
491
 
492
+
493
+
494
+
495
+
496
+ <li data-nav-id="/rbcli/development/contributing/" title="Contribution Guide" class="dd-item ">
497
+ <a href="/rbcli/development/contributing/">
498
+ Contribution Guide
640
499
 
500
+ </a>
501
+ </li>
502
+
503
+
504
+
505
+
506
+
641
507
 
642
-
643
-
508
+
509
+
644
510
 
645
511
 
646
- <li class="md-nav__item">
647
- <a href="../../imported/changelog/" title="Changelog" class="md-nav__link">
648
- Changelog
649
- </a>
650
- </li>
651
512
 
652
-
653
- </ul>
654
- </nav>
655
- </li>
656
513
 
514
+
515
+
657
516
 
658
-
659
-
660
-
517
+ <li data-nav-id="/rbcli/development/license/" title="License Info" class="dd-item ">
518
+ <a href="/rbcli/development/license/">
519
+ License Info
520
+
521
+ </a>
522
+ </li>
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
661
531
 
662
532
 
663
- <li class="md-nav__item">
664
- <a href="../../whoami/" title="whoami" class="md-nav__link">
665
- whoami
666
- </a>
667
- </li>
668
533
 
534
+
535
+
536
+
669
537
 
670
- </ul>
671
- </nav>
672
- </div>
673
- </div>
674
- </div>
538
+ <li data-nav-id="/rbcli/development/code_of_conduct/" title="Code of Conduct" class="dd-item ">
539
+ <a href="/rbcli/development/code_of_conduct/">
540
+ Code of Conduct
541
+
542
+ </a>
543
+ </li>
544
+
545
+
546
+
547
+
548
+
549
+
675
550
 
676
551
 
677
- <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
678
- <div class="md-sidebar__scrollwrap">
679
- <div class="md-sidebar__inner">
680
-
681
- <nav class="md-nav md-nav--secondary">
682
-
552
+
553
+
554
+
555
+
556
+
683
557
 
684
558
 
559
+ <li data-nav-id="/rbcli/development/changelog/" title="Changelog" class="dd-item ">
560
+ <a href="/rbcli/development/changelog/">
561
+ Changelog
562
+
563
+ </a>
564
+ </li>
565
+
685
566
 
686
-
687
- <label class="md-nav__title" for="__toc">Table of contents</label>
688
- <ul class="md-nav__list" data-md-scrollfix>
689
-
690
- <li class="md-nav__item">
691
- <a href="#why-interactive-commands" title="Why interactive commands?" class="md-nav__link">
692
- Why interactive commands?
693
- </a>
694
-
695
- </li>
696
-
697
- <li class="md-nav__item">
698
- <a href="#how-to-do-it-with-rbcli" title="How to do it with Rbcli" class="md-nav__link">
699
- How to do it with Rbcli
700
- </a>
701
-
702
- </li>
703
-
704
-
705
-
706
-
707
-
708
- </ul>
709
-
710
- </nav>
711
- </div>
712
- </div>
713
- </div>
567
+
568
+
714
569
 
715
570
 
716
- <div class="md-content">
717
- <article class="md-content__inner md-typeset">
571
+
572
+ </ul>
718
573
 
719
-
720
-
721
- <h1 id="interactive-commands">Interactive Commands</h1>
722
- <h2 id="why-interactive-commands">Why interactive commands?</h2>
723
- <p>When catering to an audience of users who are not accustomed to scripting, you may want to prompt them for the information directly (the typical CS-101 'puts' and 'gets' pattern). This can be a lot more straightforward than having to read the help texts of your tool, and trying multiple times to enter all of the required data.</p>
724
- <p>Of course, we want to make sure that scripting with the tool still works well (headless interaction). We accomplish this by extending our parameters with a <code>prompt</code> option; RBCli will continue to accept the parameter as usual, but if the parameter is omitted then it will prompt the user with the given text.</p>
725
- <h2 id="how-to-do-it-with-rbcli">How to do it with Rbcli</h2>
726
- <p>There is an option when declaring a command's parameters to prompt the user for a value if not entered on the command line. This can be done with the <code>prompt:</code> keyword. For example:</p>
727
- <pre><code class="ruby">class Mycmd &lt; Rbcli::Command
728
- parameter :sort, 'Sort output alphabetically', type: :boolean, default: false, prompt: &quot;Sort output alphabetically?&quot;
729
- action do |params, args, global_opts, config|
730
- puts params[:sort]
731
- end
732
- end
733
- </code></pre>
734
-
735
- <p>Now, if we run the command while omitting the <code>--sort</code> parameter, as such:</p>
736
- <pre><code class="bash">mytool mycmd
737
- </code></pre>
738
-
739
- <p>That should give you the prompt:</p>
740
- <pre><code>Sort output alphabetically? (y/N):
741
- </code></pre>
574
+ </li>
575
+
576
+
742
577
 
743
- <p>Because we set the parameter to default to <code>false</code> the default here is <code>N</code>, which is used if the user hits enter without entering a letter. If the default was set to <code>true</code>, then the <code>Y</code> would be capitalized and be the default.</p>
744
- <p>String parameters behave similarly, but default to the string defined instead of a boolean value.</p>
745
-
746
-
747
-
748
-
749
-
750
-
578
+
579
+
751
580
 
752
581
 
753
-
754
- </article>
755
- </div>
756
- </div>
757
- </main>
758
-
759
-
760
- <footer class="md-footer">
761
-
762
- <div class="md-footer-nav">
763
- <nav class="md-footer-nav__inner md-grid">
764
-
765
- <a href="../remote_execution/" title="Remote Execution" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
766
- <div class="md-flex__cell md-flex__cell--shrink">
767
- <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
768
- </div>
769
- <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
770
- <span class="md-flex__ellipsis">
771
- <span class="md-footer-nav__direction">
772
- Previous
773
- </span>
774
- Remote Execution
775
- </span>
776
- </div>
777
- </a>
778
-
779
-
780
- <a href="../../development/contributing/" title="Contribution Guide" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
781
- <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
782
- <span class="md-flex__ellipsis">
783
- <span class="md-footer-nav__direction">
784
- Next
785
- </span>
786
- Contribution Guide
787
- </span>
788
- </div>
789
- <div class="md-flex__cell md-flex__cell--shrink">
790
- <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
791
- </div>
792
- </a>
793
-
794
- </nav>
795
- </div>
582
+
583
+
584
+
796
585
 
797
- <div class="md-footer-meta md-typeset">
798
- <div class="md-footer-meta__inner md-grid">
799
- <div class="md-footer-copyright">
586
+
587
+ <li data-nav-id="/rbcli/whoami/" title="My Letter To You" class="dd-item
800
588
 
801
- <div class="md-footer-copyright__highlight">
802
- Copyright © 2018 Andrew Khoury
803
- </div>
804
589
 
805
- powered by
806
- <a href="https://www.mkdocs.org">MkDocs</a>
807
- and
808
- <a href="https://squidfunk.github.io/mkdocs-material/">
809
- Material for MkDocs</a>
810
- </div>
811
-
812
590
 
591
+ ">
592
+ <a href="/rbcli/whoami/">
593
+ My Letter To You
594
+
595
+ </a>
813
596
 
814
- </div>
815
- </div>
816
- </footer>
817
-
818
- </div>
819
-
820
- <script src="../../assets/javascripts/application.583bbe55.js"></script>
821
-
822
- <script>app.initialize({version:"1.0.3",url:{base:"../.."}})</script>
823
-
597
+
598
+ </li>
599
+
600
+
601
+
602
+
603
+
604
+ </ul>
605
+
824
606
 
825
607
 
826
-
608
+ <section id="shortcuts">
609
+ <h3>More</h3>
610
+ <ul>
611
+
612
+ <li>
613
+ <a class="padding" href="https://github.com/akhoury6/rbcli"><i class='fab fa-github'></i> Github repo</a>
614
+ </li>
615
+
616
+ <li>
617
+ <a class="padding" href="https://rubygems.org/gems/rbcli"><i class='far fa-gem'></i> Rubygems</a>
618
+ </li>
619
+
620
+ </ul>
621
+ </section>
827
622
 
623
+
624
+
625
+ <section id="footer">
626
+ <p>Built with <a href="https://github.com/matcornic/hugo-theme-learn"><i class="fas fa-heart"></i></a> from <a href="https://getgrav.org">Grav</a> and <a href="https://gohugo.io/">Hugo</a></p>
627
+
628
+ </section>
629
+ </div>
630
+ </nav>
631
+
632
+
633
+
634
+
635
+ <section id="body">
636
+ <div id="overlay"></div>
637
+ <div class="padding highlightable">
638
+
639
+ <div>
640
+ <div id="top-bar">
641
+
642
+
643
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
644
+ <span id="sidebar-toggle-span">
645
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
646
+ <i class="fas fa-bars"></i>
647
+ </a>
648
+ </span>
649
+
650
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
651
+
652
+ <span class="links">
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+ <a href='/rbcli/'></a> > <a href='/rbcli/advanced/'>Advanced</a> > Interactive Commands
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+ </span>
675
+ </div>
676
+
677
+ <div class="progress">
678
+ <div class="wrapper">
679
+ <nav id="TableOfContents">
680
+ <ul>
681
+ <li><a href="#why-interactive-commands">Why interactive commands?</a></li>
682
+ <li><a href="#how-to-do-it-with-rbcli">How to do it with Rbcli</a></li>
683
+ </ul>
684
+ </nav>
685
+ </div>
686
+ </div>
687
+
688
+
689
+ </div>
690
+ </div>
691
+
692
+ <div id="head-tags">
693
+
694
+ </div>
695
+
696
+ <div id="body-inner">
697
+
698
+ <h1>
699
+
700
+ Interactive Commands
701
+ </h1>
702
+
703
+
704
+
705
+
706
+
707
+ <h2 id="why-interactive-commands">Why interactive commands?</h2>
708
+ <p>When catering to an audience of users who are not accustomed to scripting, you may want to prompt them for the information directly (the typical CS-101 &lsquo;puts&rsquo; and &lsquo;gets&rsquo; pattern). This can be a lot more straightforward than having to read the help texts of your tool, and trying multiple times to enter all of the required data.</p>
709
+ <p>Of course, we want to make sure that scripting with the tool still works well (headless interaction). We accomplish this by extending our parameters with a <code>prompt</code> option; RBCli will continue to accept the parameter as usual, but if the parameter is omitted then it will prompt the user with the given text.</p>
710
+ <h2 id="how-to-do-it-with-rbcli">How to do it with Rbcli</h2>
711
+ <p>There is an option when declaring a command&rsquo;s parameters to prompt the user for a value if not entered on the command line. This can be done with the <code>prompt:</code> keyword. For example:</p>
712
+ <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Mycmd</span> <span style="color:#f92672">&lt;</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span>
713
+ parameter <span style="color:#e6db74">:sort</span>, <span style="color:#e6db74">&#39;Sort output alphabetically&#39;</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>, <span style="color:#e6db74">prompt</span>: <span style="color:#e6db74">&#34;Sort output alphabetically?&#34;</span>
714
+ action <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>params, args, global_opts, config<span style="color:#f92672">|</span>
715
+ puts params<span style="color:#f92672">[</span><span style="color:#e6db74">:sort</span><span style="color:#f92672">]</span>
716
+ <span style="color:#66d9ef">end</span>
717
+ <span style="color:#66d9ef">end</span>
718
+ </code></pre></div><p>Now, if we run the command while omitting the <code>--sort</code> parameter, as such:</p>
719
+ <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool mycmd
720
+ </code></pre></div><p>That should give you the prompt:</p>
721
+ <pre><code>Sort output alphabetically? (y/N):
722
+ </code></pre><p>Because we set the parameter to default to <code>false</code> the default here is <code>N</code>, which is used if the user hits enter without entering a letter. If the default was set to <code>true</code>, then the <code>Y</code> would be capitalized and be the default.</p>
723
+ <p>String parameters behave similarly, but default to the string defined instead of a boolean value.</p>
724
+
725
+
726
+ <footer class="footline">
727
+
728
+ </footer>
729
+
730
+
731
+ </div>
732
+
733
+
734
+ </div>
735
+
736
+ <div id="navigation">
737
+
738
+
739
+
740
+
741
+
742
+
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+
830
+
831
+
832
+
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+
1087
+
1088
+
1089
+
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+
1134
+
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+ <a class="nav nav-prev" href="/rbcli/advanced/hooks/" title="Execution Hooks"> <i class="fa fa-chevron-left"></i></a>
1145
+
1146
+
1147
+ <a class="nav nav-next" href="/rbcli/advanced/logging/" title="Logging" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
1148
+
1149
+
1150
+ </div>
1151
+
1152
+ </section>
1153
+
1154
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
1155
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
1156
+ </div>
1157
+ <script src="/rbcli/js/clipboard.min.js?1596148729"></script>
1158
+ <script src="/rbcli/js/perfect-scrollbar.min.js?1596148729"></script>
1159
+ <script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1596148729"></script>
1160
+ <script src="/rbcli/js/jquery.sticky.js?1596148729"></script>
1161
+ <script src="/rbcli/js/featherlight.min.js?1596148729"></script>
1162
+ <script src="/rbcli/js/highlight.pack.js?1596148729"></script>
1163
+ <script>hljs.initHighlightingOnLoad();</script>
1164
+ <script src="/rbcli/js/modernizr.custom-3.6.0.js?1596148729"></script>
1165
+ <script src="/rbcli/js/learn.js?1596148729"></script>
1166
+ <script src="/rbcli/js/hugo-learn.js?1596148729"></script>
1167
+
1168
+ <link href="/rbcli/mermaid/mermaid.css?1596148729" rel="stylesheet" />
1169
+ <script src="/rbcli/mermaid/mermaid.js?1596148729"></script>
1170
+ <script>
1171
+ mermaid.initialize({ startOnLoad: true });
1172
+ </script>
1173
+
1174
+
828
1175
  </body>
829
- </html>
1176
+ </html>
1177
+