rbcli 0.3.3 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.md +9 -0
- data/LICENSE.txt +5 -670
- data/README.md +64 -160
- data/VERSION +1 -0
- data/exe/rbcli +181 -242
- data/lib/rbcli/components/commands/command.rb +120 -0
- data/lib/rbcli/components/commands/command.rb.erb +55 -0
- data/lib/rbcli/components/commands/command_old.rb +105 -0
- data/lib/rbcli/components/commands/script.rb.erb +43 -0
- data/{lib-sh → lib/rbcli/components/commands/scriptwrapper}/lib-rbcli.sh +29 -34
- data/lib/rbcli/components/commands/scriptwrapper/scriptwrapper.rb +64 -0
- data/lib/rbcli/components/config/backend.rb +104 -0
- data/lib/rbcli/components/config/backends/env.rb +63 -0
- data/lib/rbcli/components/config/backends/helpers/deep_assign.rb +47 -0
- data/lib/rbcli/components/config/backends/ini.rb +53 -0
- data/lib/rbcli/components/config/backends/json.rb +31 -0
- data/lib/rbcli/components/config/backends/null.rb +28 -0
- data/lib/rbcli/components/config/backends/toml.rb +37 -0
- data/lib/rbcli/components/config/backends/yaml.rb +31 -0
- data/lib/rbcli/components/config/component.rb +28 -0
- data/lib/rbcli/components/config/config.rb +110 -0
- data/lib/rbcli/components/config/config_of_death.rb +12 -0
- data/lib/rbcli/components/config/template.rb.erb +34 -0
- data/lib/rbcli/components/core/configurate.rb +63 -0
- data/lib/rbcli/components/core/engine.rb +30 -0
- data/lib/rbcli/components/core/warehouse.rb +18 -0
- data/lib/rbcli/components/envvars/component.rb +20 -0
- data/lib/rbcli/components/envvars/template.rb.erb +24 -0
- data/lib/rbcli/components/hooks/component.rb +36 -0
- data/lib/rbcli/components/hooks/template.rb.erb +20 -0
- data/lib/rbcli/components/logger/component.rb +32 -0
- data/lib/rbcli/components/logger/logger.rb +155 -0
- data/lib/rbcli/components/logger/lolcat/lol.rb +71 -0
- data/lib/rbcli/components/logger/template.rb.erb +40 -0
- data/lib/rbcli/components/parser/component.rb +34 -0
- data/lib/rbcli/{util → components/parser/optimist}/optimist.rb +134 -48
- data/lib/rbcli/components/parser/parser.rb +179 -0
- data/lib/rbcli/components/parser/template.rb.erb +36 -0
- data/lib/rbcli/components/updatechecker/common/common.rb +52 -0
- data/lib/rbcli/components/updatechecker/component.rb +42 -0
- data/lib/rbcli/components/updatechecker/gem_checker.rb +40 -0
- data/lib/rbcli/components/updatechecker/github_checker.rb +46 -0
- data/lib/rbcli/components/updatechecker/template.rb.erb +14 -0
- data/lib/rbcli/util/deprecation_warning.rb +41 -55
- data/lib/rbcli/util/errors.rb +12 -0
- data/lib/rbcli/util/exit.rb +12 -0
- data/lib/rbcli/util/hash_deep_symbolize.rb +50 -41
- data/lib/rbcli/util/string_compression.rb +10 -0
- data/lib/rbcli/version.rb +5 -20
- data/lib/rbcli-tool/helpers.rb +58 -0
- data/lib/rbcli-tool/skeletons/gem.rb.erb +17 -0
- data/lib/rbcli-tool/skeletons/portable.rb.erb +48 -0
- data/lib/rbcli.rb +19 -50
- data/sig/rbcli.rbs +9 -0
- metadata +124 -496
- data/.gitignore +0 -60
- data/.rakeTasks +0 -7
- data/.rbenv-gemsets +0 -1
- data/.travis.yml +0 -5
- data/CHANGELOG.md +0 -193
- data/CODE_OF_CONDUCT.md +0 -74
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -92
- data/Rakefile +0 -10
- data/bin/console +0 -33
- data/bin/setup +0 -28
- data/docs/404.html +0 -59
- data/docs/advanced/automatic_updates/index.html +0 -1174
- data/docs/advanced/command_types/index.html +0 -1262
- data/docs/advanced/distributed_state_locking/index.html +0 -1176
- data/docs/advanced/hooks/index.html +0 -1192
- data/docs/advanced/index.html +0 -1140
- data/docs/advanced/index.xml +0 -75
- data/docs/advanced/interactive_commands/index.html +0 -1177
- data/docs/advanced/logging/index.html +0 -1184
- data/docs/advanced/remote_execution/index.html +0 -1190
- data/docs/advanced/state_storage/index.html +0 -1281
- data/docs/advanced/user_config_files/index.html +0 -1209
- data/docs/categories/index.html +0 -1146
- data/docs/categories/index.xml +0 -11
- data/docs/css/atom-one-dark-reasonable.css +0 -77
- data/docs/css/auto-complete.css +0 -47
- data/docs/css/featherlight.min.css +0 -8
- data/docs/css/fontawesome-all.min.css +0 -1
- data/docs/css/hugo-theme.css +0 -254
- data/docs/css/hybrid.css +0 -102
- data/docs/css/nucleus.css +0 -615
- data/docs/css/perfect-scrollbar.min.css +0 -2
- data/docs/css/tags.css +0 -49
- data/docs/css/theme-blue.css +0 -111
- data/docs/css/theme-green.css +0 -111
- data/docs/css/theme-red.css +0 -111
- data/docs/css/theme.css +0 -1136
- data/docs/development/changelog/index.html +0 -1420
- data/docs/development/code_of_conduct/index.html +0 -1222
- data/docs/development/contributing/index.html +0 -1201
- data/docs/development/index.html +0 -1140
- data/docs/development/index.xml +0 -40
- data/docs/development/license/index.html +0 -1165
- data/docs/fonts/Inconsolata.eot +0 -0
- data/docs/fonts/Inconsolata.svg +0 -1
- data/docs/fonts/Inconsolata.ttf +0 -0
- data/docs/fonts/Inconsolata.woff +0 -0
- data/docs/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
- data/docs/fonts/Novecentosanswide-Normal-webfont.svg +0 -1
- data/docs/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
- data/docs/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
- data/docs/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
- data/docs/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
- data/docs/fonts/Novecentosanswide-UltraLight-webfont.svg +0 -1
- data/docs/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
- data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
- data/docs/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
- data/docs/fonts/Work_Sans_200.eot +0 -0
- data/docs/fonts/Work_Sans_200.svg +0 -1
- data/docs/fonts/Work_Sans_200.ttf +0 -0
- data/docs/fonts/Work_Sans_200.woff +0 -0
- data/docs/fonts/Work_Sans_200.woff2 +0 -0
- data/docs/fonts/Work_Sans_300.eot +0 -0
- data/docs/fonts/Work_Sans_300.svg +0 -1
- data/docs/fonts/Work_Sans_300.ttf +0 -0
- data/docs/fonts/Work_Sans_300.woff +0 -0
- data/docs/fonts/Work_Sans_300.woff2 +0 -0
- data/docs/fonts/Work_Sans_500.eot +0 -0
- data/docs/fonts/Work_Sans_500.svg +0 -1
- data/docs/fonts/Work_Sans_500.ttf +0 -0
- data/docs/fonts/Work_Sans_500.woff +0 -0
- data/docs/fonts/Work_Sans_500.woff2 +0 -0
- data/docs/images/clippy.svg +0 -1
- data/docs/images/favicon.png +0 -0
- data/docs/images/gopher-404.jpg +0 -0
- data/docs/imported/changelog/index.html +0 -1449
- data/docs/imported/index.html +0 -1191
- data/docs/imported/index.xml +0 -23
- data/docs/index.html +0 -1138
- data/docs/index.json +0 -183
- data/docs/index.xml +0 -138
- data/docs/js/auto-complete.js +0 -3
- data/docs/js/clipboard.min.js +0 -7
- data/docs/js/featherlight.min.js +0 -9
- data/docs/js/highlight.pack.js +0 -6
- data/docs/js/html5shiv-printshiv.min.js +0 -4
- data/docs/js/hugo-learn.js +0 -94
- data/docs/js/jquery-3.3.1.min.js +0 -2
- data/docs/js/jquery.sticky.js +0 -288
- data/docs/js/learn.js +0 -459
- data/docs/js/lunr.min.js +0 -6
- data/docs/js/modernizr.custom-3.6.0.js +0 -3
- data/docs/js/perfect-scrollbar.jquery.min.js +0 -2
- data/docs/js/perfect-scrollbar.min.js +0 -2
- data/docs/js/search.js +0 -93
- data/docs/mermaid/mermaid.css +0 -277
- data/docs/mermaid/mermaid.dark.css +0 -278
- data/docs/mermaid/mermaid.forest.css +0 -356
- data/docs/mermaid/mermaid.js +0 -8
- data/docs/quick_reference/index.html +0 -1246
- data/docs/quick_reference/index.xml +0 -12
- data/docs/sitemap.xml +0 -81
- data/docs/tags/index.html +0 -1146
- data/docs/tags/index.xml +0 -11
- data/docs/tutorial/10-getting_started/index.html +0 -1174
- data/docs/tutorial/20-project_layout/index.html +0 -1299
- data/docs/tutorial/30-your_first_command/index.html +0 -1263
- data/docs/tutorial/40-options_parameters_and_arguments/index.html +0 -1384
- data/docs/tutorial/50-publishing/index.html +0 -1187
- data/docs/tutorial/index.html +0 -1140
- data/docs/tutorial/index.xml +0 -47
- data/docs/webfonts/fa-brands-400.eot +0 -0
- data/docs/webfonts/fa-brands-400.svg +0 -1
- data/docs/webfonts/fa-brands-400.ttf +0 -0
- data/docs/webfonts/fa-brands-400.woff +0 -0
- data/docs/webfonts/fa-brands-400.woff2 +0 -0
- data/docs/webfonts/fa-regular-400.eot +0 -0
- data/docs/webfonts/fa-regular-400.svg +0 -1
- data/docs/webfonts/fa-regular-400.ttf +0 -0
- data/docs/webfonts/fa-regular-400.woff +0 -0
- data/docs/webfonts/fa-regular-400.woff2 +0 -0
- data/docs/webfonts/fa-solid-900.eot +0 -0
- data/docs/webfonts/fa-solid-900.svg +0 -1
- data/docs/webfonts/fa-solid-900.ttf +0 -0
- data/docs/webfonts/fa-solid-900.woff +0 -0
- data/docs/webfonts/fa-solid-900.woff2 +0 -0
- data/docs/whoami/index.html +0 -1155
- data/docs/whoami/index.xml +0 -12
- data/docs-src/archetypes/default.md +0 -6
- data/docs-src/config.toml +0 -37
- data/docs-src/content/_index.md +0 -40
- data/docs-src/content/advanced/_index.md +0 -11
- data/docs-src/content/advanced/automatic_updates.md +0 -46
- data/docs-src/content/advanced/command_types.md +0 -148
- data/docs-src/content/advanced/distributed_state_locking.md +0 -37
- data/docs-src/content/advanced/hooks.md +0 -69
- data/docs-src/content/advanced/interactive_commands.md +0 -41
- data/docs-src/content/advanced/logging.md +0 -39
- data/docs-src/content/advanced/remote_execution.md +0 -60
- data/docs-src/content/advanced/state_storage.md +0 -120
- data/docs-src/content/advanced/user_config_files.md +0 -51
- data/docs-src/content/development/_index.md +0 -11
- data/docs-src/content/development/changelog.md +0 -199
- data/docs-src/content/development/code_of_conduct.md +0 -81
- data/docs-src/content/development/contributing.md +0 -88
- data/docs-src/content/development/license.md +0 -17
- data/docs-src/content/quick_reference/_index.md +0 -180
- data/docs-src/content/tutorial/10-getting_started.md +0 -47
- data/docs-src/content/tutorial/20-project_layout.md +0 -123
- data/docs-src/content/tutorial/30-your_first_command.md +0 -132
- data/docs-src/content/tutorial/40-options_parameters_and_arguments.md +0 -282
- data/docs-src/content/tutorial/50-publishing.md +0 -53
- data/docs-src/content/tutorial/_index.md +0 -11
- data/docs-src/content/whoami/_index.md +0 -34
- data/docs-src/layouts/partials/logo.html +0 -3
- data/docs-src/makesite.sh +0 -40
- data/docs-src/mkdocs-archived.tar.gz +0 -0
- data/docs-src/runsite.sh +0 -8
- data/docs-src/themes/hugo-theme-learn/.editorconfig +0 -16
- data/docs-src/themes/hugo-theme-learn/.gitignore +0 -3
- data/docs-src/themes/hugo-theme-learn/.grenrc.yml +0 -25
- data/docs-src/themes/hugo-theme-learn/CHANGELOG.md +0 -226
- data/docs-src/themes/hugo-theme-learn/LICENSE.md +0 -22
- data/docs-src/themes/hugo-theme-learn/README.md +0 -97
- data/docs-src/themes/hugo-theme-learn/archetypes/chapter.md +0 -13
- data/docs-src/themes/hugo-theme-learn/archetypes/default.md +0 -7
- data/docs-src/themes/hugo-theme-learn/exampleSite/LICENSE.md +0 -20
- data/docs-src/themes/hugo-theme-learn/exampleSite/config.toml +0 -102
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.en.md +0 -41
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/_index.fr.md +0 -43
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.en.md +0 -12
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.fr.md +0 -12
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/_index.zh.md +0 -12
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.en.md +0 -60
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/configuration/_index.fr.md +0 -56
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.en.md +0 -102
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/_index.fr.md +0 -100
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/installation/images/chapter.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.en.md +0 -11
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/_index.fr.md +0 -11
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/requirements/images/magic.gif +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.en.md +0 -194
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/_index.fr.md +0 -194
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/blue-variant.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/green-variant.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/basics/style-customization/images/red-variant.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.en.md +0 -12
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/_index.fr.md +0 -12
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.en.md +0 -57
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/archetypes.fr.md +0 -57
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.en.md +0 -78
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/_index.fr.md +0 -78
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/i18n/images/i18n-menu.gif +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/icons.en.md +0 -41
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.en.md +0 -692
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/markdown.fr.md +0 -666
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.en.md +0 -109
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/menushortcuts.fr.md +0 -109
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.en.md +0 -166
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/_index.fr.md +0 -146
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/frontmatter-icon.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-chapter.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/pages/images/pages-default.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/syntaxhighlight.en.md +0 -89
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.en.md +0 -39
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/cont/tags.fr.md +0 -40
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.en.md +0 -28
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/credits.fr.md +0 -28
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.en.md +0 -16
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/_index.fr.md +0 -16
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.en.md +0 -85
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/attachments.fr.md +0 -85
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.en.md +0 -16
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/button.fr.md +0 -16
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.en.md +0 -45
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/_index.fr.md +0 -45
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.en.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md +0 -6
- 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
- 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
- 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
- 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
- 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
- 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
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.en.md +0 -11
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md +0 -11
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.en.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.en.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.en.md +0 -7
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md +0 -7
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.en.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/children/test.fr.md +0 -6
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.en.md +0 -45
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/expand.fr.md +0 -45
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.en.md +0 -283
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/mermaid.fr.md +0 -283
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.en.md +0 -62
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/notice.fr.md +0 -62
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.en.md +0 -23
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/shortcodes/siteparam.fr.md +0 -23
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.en.md +0 -13
- data/docs-src/themes/hugo-theme-learn/exampleSite/content/showcase.fr.md +0 -14
- data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/custom-footer.html +0 -10
- data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/logo.html +0 -39
- data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/partials/menu-footer.html +0 -14
- data/docs-src/themes/hugo-theme-learn/exampleSite/layouts/shortcodes/ghcontributors.html +0 -31
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/css/theme-mine.css +0 -104
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/fonts/monogramos-webfont.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/inteliver_docs.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tat.png +0 -0
- data/docs-src/themes/hugo-theme-learn/exampleSite/static/images/showcase/tshark_dev.png +0 -0
- data/docs-src/themes/hugo-theme-learn/i18n/ar.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/de.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/en.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/es.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/fr.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/hi.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/id.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/ja.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/nl.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/pt.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/ru.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/tr.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/i18n/zh-cn.toml +0 -26
- data/docs-src/themes/hugo-theme-learn/images/screenshot.png +0 -0
- data/docs-src/themes/hugo-theme-learn/images/tn.png +0 -0
- data/docs-src/themes/hugo-theme-learn/layouts/404.html +0 -56
- data/docs-src/themes/hugo-theme-learn/layouts/_default/list.html +0 -22
- data/docs-src/themes/hugo-theme-learn/layouts/_default/single.html +0 -12
- data/docs-src/themes/hugo-theme-learn/layouts/index.html +0 -31
- data/docs-src/themes/hugo-theme-learn/layouts/index.json +0 -12
- data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-comments.html +0 -3
- data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-footer.html +0 -5
- data/docs-src/themes/hugo-theme-learn/layouts/partials/custom-header.html +0 -5
- data/docs-src/themes/hugo-theme-learn/layouts/partials/favicon.html +0 -1
- data/docs-src/themes/hugo-theme-learn/layouts/partials/footer.html +0 -77
- data/docs-src/themes/hugo-theme-learn/layouts/partials/header.html +0 -111
- data/docs-src/themes/hugo-theme-learn/layouts/partials/logo.html +0 -19
- data/docs-src/themes/hugo-theme-learn/layouts/partials/menu-footer.html +0 -1
- data/docs-src/themes/hugo-theme-learn/layouts/partials/menu.html +0 -151
- data/docs-src/themes/hugo-theme-learn/layouts/partials/meta.html +0 -2
- data/docs-src/themes/hugo-theme-learn/layouts/partials/search.html +0 -16
- data/docs-src/themes/hugo-theme-learn/layouts/partials/tags.html +0 -7
- data/docs-src/themes/hugo-theme-learn/layouts/partials/toc.html +0 -5
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/attachments.html +0 -36
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/button.html +0 -14
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/children.html +0 -101
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/expand.html +0 -17
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/mermaid.html +0 -2
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/notice.html +0 -2
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/ref.html +0 -14
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/relref.html +0 -14
- data/docs-src/themes/hugo-theme-learn/layouts/shortcodes/siteparam.html +0 -7
- data/docs-src/themes/hugo-theme-learn/netlify.toml +0 -23
- data/docs-src/themes/hugo-theme-learn/static/css/atom-one-dark-reasonable.css +0 -77
- data/docs-src/themes/hugo-theme-learn/static/css/auto-complete.css +0 -47
- data/docs-src/themes/hugo-theme-learn/static/css/featherlight.min.css +0 -8
- data/docs-src/themes/hugo-theme-learn/static/css/fontawesome-all.min.css +0 -1
- data/docs-src/themes/hugo-theme-learn/static/css/hugo-theme.css +0 -254
- data/docs-src/themes/hugo-theme-learn/static/css/hybrid.css +0 -102
- data/docs-src/themes/hugo-theme-learn/static/css/nucleus.css +0 -615
- data/docs-src/themes/hugo-theme-learn/static/css/perfect-scrollbar.min.css +0 -2
- data/docs-src/themes/hugo-theme-learn/static/css/tags.css +0 -49
- data/docs-src/themes/hugo-theme-learn/static/css/theme-blue.css +0 -111
- data/docs-src/themes/hugo-theme-learn/static/css/theme-green.css +0 -111
- data/docs-src/themes/hugo-theme-learn/static/css/theme-red.css +0 -111
- data/docs-src/themes/hugo-theme-learn/static/css/theme.css +0 -1136
- data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Inconsolata.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-Normal-webfont.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_200.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_300.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/fonts/Work_Sans_500.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/images/clippy.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/images/favicon.png +0 -0
- data/docs-src/themes/hugo-theme-learn/static/images/gopher-404.jpg +0 -0
- data/docs-src/themes/hugo-theme-learn/static/js/auto-complete.js +0 -3
- data/docs-src/themes/hugo-theme-learn/static/js/clipboard.min.js +0 -7
- data/docs-src/themes/hugo-theme-learn/static/js/featherlight.min.js +0 -9
- data/docs-src/themes/hugo-theme-learn/static/js/highlight.pack.js +0 -6
- data/docs-src/themes/hugo-theme-learn/static/js/hugo-learn.js +0 -94
- data/docs-src/themes/hugo-theme-learn/static/js/jquery-3.3.1.min.js +0 -2
- data/docs-src/themes/hugo-theme-learn/static/js/jquery.sticky.js +0 -288
- data/docs-src/themes/hugo-theme-learn/static/js/learn.js +0 -459
- data/docs-src/themes/hugo-theme-learn/static/js/lunr.min.js +0 -6
- data/docs-src/themes/hugo-theme-learn/static/js/modernizr.custom-3.6.0.js +0 -3
- data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.jquery.min.js +0 -2
- data/docs-src/themes/hugo-theme-learn/static/js/perfect-scrollbar.min.js +0 -2
- data/docs-src/themes/hugo-theme-learn/static/js/search.js +0 -93
- data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.css +0 -277
- data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.dark.css +0 -278
- data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.forest.css +0 -356
- data/docs-src/themes/hugo-theme-learn/static/mermaid/mermaid.js +0 -8
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-brands-400.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-regular-400.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.eot +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.svg +0 -1
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.ttf +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff +0 -0
- data/docs-src/themes/hugo-theme-learn/static/webfonts/fa-solid-900.woff2 +0 -0
- data/docs-src/themes/hugo-theme-learn/theme.toml +0 -21
- data/docs-src/themes/hugo-theme-learn/wercker.yml +0 -16
- data/lib/rbcli/configuration/configurate.rb +0 -85
- data/lib/rbcli/configuration/configurate_blocks/hooks.rb +0 -52
- data/lib/rbcli/configuration/configurate_blocks/me.rb +0 -122
- data/lib/rbcli/configuration/configurate_blocks/storage.rb +0 -50
- data/lib/rbcli/engine/command.rb +0 -251
- data/lib/rbcli/engine/load_project.rb +0 -45
- data/lib/rbcli/engine/parser.rb +0 -116
- data/lib/rbcli/features/autoupdate/common/autoupdate.rb +0 -50
- data/lib/rbcli/features/autoupdate/gem_updater.rb +0 -62
- data/lib/rbcli/features/autoupdate/github_updater.rb +0 -76
- data/lib/rbcli/features/logging.rb +0 -98
- data/lib/rbcli/features/remote_exec.rb +0 -187
- data/lib/rbcli/features/scriptwrapper.rb +0 -75
- data/lib/rbcli/features/userconfig.rb +0 -163
- data/lib/rbcli/state_storage/common/state_storage.rb +0 -138
- data/lib/rbcli/state_storage/localstate.rb +0 -77
- data/lib/rbcli/state_storage/placeholders.rb +0 -29
- data/lib/rbcli/state_storage/remote_state_connectors/dynamodb.rb +0 -272
- data/lib/rbcli/state_storage/remotestate_dynamodb.rb +0 -115
- data/lib/rbcli/util/msg.rb +0 -55
- data/lib/rbcli/util/string_colorize.rb +0 -45
- data/lib/rbcli-tool/generators.rb +0 -105
- data/lib/rbcli-tool/mdless_fix.rb +0 -406
- data/lib/rbcli-tool/project.rb +0 -120
- data/lib/rbcli-tool/util.rb +0 -70
- data/lib/rbcli-tool.rb +0 -37
- data/rbcli.gemspec +0 -73
- data/skeletons/micro/executable +0 -132
- data/skeletons/mini/executable +0 -247
- data/skeletons/project/.gitignore +0 -11
- data/skeletons/project/.rakeTasks +0 -7
- data/skeletons/project/.rbcli +0 -0
- data/skeletons/project/.rspec +0 -3
- data/skeletons/project/CODE_OF_CONDUCT.md +0 -74
- data/skeletons/project/Gemfile +0 -6
- data/skeletons/project/README.md +0 -46
- data/skeletons/project/Rakefile +0 -6
- data/skeletons/project/application/commands/command.erb +0 -28
- data/skeletons/project/application/commands/script.erb +0 -30
- data/skeletons/project/application/commands/scripts/script.sh +0 -60
- data/skeletons/project/application/options.rb +0 -34
- data/skeletons/project/config/autoupdate.rb +0 -35
- data/skeletons/project/config/general.rb +0 -17
- data/skeletons/project/config/logging.rb +0 -19
- data/skeletons/project/config/storage.rb +0 -35
- data/skeletons/project/config/userspace.rb +0 -33
- data/skeletons/project/config/version.rb +0 -3
- data/skeletons/project/exe/executable +0 -53
- data/skeletons/project/hooks/default_action.rb +0 -16
- data/skeletons/project/hooks/first_run.rb +0 -16
- data/skeletons/project/hooks/post_execution.rb +0 -14
- data/skeletons/project/hooks/pre_execution.rb +0 -14
- data/skeletons/project/lib/lib.erb +0 -9
- data/skeletons/project/spec/spec_helper.rb +0 -14
- data/skeletons/project/spec/untitled_spec.rb +0 -9
- data/skeletons/project/untitled.gemspec +0 -40
- data/skeletons/project/userconf/user_defaults.yml +0 -6
- /data/{docs-src/.hugo_build.lock → lib/rbcli/plugins/.keep} +0 -0
@@ -1,120 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "State Storage"
|
3
|
-
date: 2019-06-20T15:07:21-04:00
|
4
|
-
draft: false
|
5
|
-
---
|
6
|
-
|
7
|
-
RBCli supports both local and remote state storage. This is done by synchronizing a Hash with either the local disk or a remote database.
|
8
|
-
|
9
|
-
## Local State
|
10
|
-
|
11
|
-
RBCli's local state storage gives you access to a hash that is automatically persisted to disk when changes are made.
|
12
|
-
|
13
|
-
### Configuration
|
14
|
-
|
15
|
-
You can configure it in `config/storage.rb`.
|
16
|
-
|
17
|
-
```ruby
|
18
|
-
local_state '/var/mytool/localstate', force_creation: true, halt_on_error: true
|
19
|
-
```
|
20
|
-
|
21
|
-
There are three parameters to configure it with:
|
22
|
-
|
23
|
-
* The `path` as a string (self-explanatory)
|
24
|
-
* `force_creation`
|
25
|
-
* This will attempt to create the path and file if it does not exist (equivalent to an `mkdir -p` and `touch` in linux)
|
26
|
-
* `halt_on_error`
|
27
|
-
* RBCli's default behavior is to raise an exception if the file can not be created, read, or updated at any point in time
|
28
|
-
* If this is set to `false`, RBCli will silence any errors pertaining to file access and will fall back to whatever data is available. Note that if this is enabled, changes made to the state may not be persisted to disk.
|
29
|
-
* If creation fails and file does not exist, you start with an empty hash
|
30
|
-
* If file exists but can't be read, you will have an empty hash
|
31
|
-
* If file can be read but not written, the hash will be populated with the data. Writes will be stored in memory while the application is running, but will not be persisted to disk.
|
32
|
-
|
33
|
-
|
34
|
-
### Access and Usage
|
35
|
-
|
36
|
-
Once configured you can access it with a standard hash syntax in your Standard Commands:
|
37
|
-
|
38
|
-
```ruby
|
39
|
-
Rbcli.local_state[:yourkeyhere]
|
40
|
-
```
|
41
|
-
|
42
|
-
The methods available for use at the top level are as follows:
|
43
|
-
|
44
|
-
Hash native methods:
|
45
|
-
|
46
|
-
* `[]` (Regular hash syntax. Keys are accessed via either symbols or strings indifferently.)
|
47
|
-
* `[]=` (Assignment operator)
|
48
|
-
* `delete`
|
49
|
-
* `each`
|
50
|
-
* `key?`
|
51
|
-
|
52
|
-
Additional methods:
|
53
|
-
|
54
|
-
* `commit`
|
55
|
-
* Every assignment to the top level of the hash will result in a write to disk (for example: `Rbcli.local_state[:yourkey] = 'foo'`). However, if you are manipulating nested hashes, these saves will not be triggered. You can trigger them manually by calling `commit`.
|
56
|
-
* `clear`
|
57
|
-
* Resets the data back to an empty hash.
|
58
|
-
* `refresh`
|
59
|
-
* Loads the most current version of the data from the disk
|
60
|
-
* `disconnect`
|
61
|
-
* Removes the data from memory and sets `Rbcli.local_state = nil`. Data will be read from disk again on next access.
|
62
|
-
|
63
|
-
|
64
|
-
Every assignment will result in a write to disk, so if an operation will require a large number of assignments/writes it should be performed to a different hash before beign assigned to this one.
|
65
|
-
|
66
|
-
|
67
|
-
## Remote State
|
68
|
-
|
69
|
-
RBCli's remote state storage gives you access to a hash that is automatically persisted to a remote storage location when changes are made. It has optional locking built-in, meaning that multiple users may share remote state without any data consistency issues.
|
70
|
-
|
71
|
-
Currently, this feature requires AWS DynamoDB, though other backend systems will be added in the future.
|
72
|
-
|
73
|
-
### Configuration
|
74
|
-
|
75
|
-
Before DynamoDB can be used, AWS API credentials have to be created and made available. RBCli will attempt to find credentials from the following locations in order:
|
76
|
-
|
77
|
-
1. User's config file
|
78
|
-
2. Environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
|
79
|
-
3. User's AWSCLI configuration at `~/.aws/credentials`
|
80
|
-
|
81
|
-
For more information about generating and storing AWS credentials, see [Configuring the AWS SDK for Ruby][aws_sdk_credentials]. Please make sure that your users are aware that they will need to provide their own credentials to use this feature.
|
82
|
-
|
83
|
-
You can configure it in `config/storage.rb`.
|
84
|
-
|
85
|
-
```ruby
|
86
|
-
remote_state_dynamodb table_name: 'mytable', region: 'us-east-1', force_creation: true, halt_on_error: true, locking: false
|
87
|
-
```
|
88
|
-
|
89
|
-
These are the parameters:
|
90
|
-
|
91
|
-
* `table_name`
|
92
|
-
* The name of the DynamoDB table to use.
|
93
|
-
* `region`
|
94
|
-
* The AWS region that the database is located
|
95
|
-
* `force_creation`
|
96
|
-
* Creates the DynamoDB table if it does not already exist
|
97
|
-
* `halt_on_error`
|
98
|
-
* Similar to the way [Local State](#local-state) works, setting this to `false` will silence any errors in connecting to the DynamoDB table. Instead, your application will simply have access to an empty hash that does not get persisted anywhere.
|
99
|
-
* This is good for use cases that involve using this storage as a cache, where a connection error might mean the feature doesn't work but its not important enough to interrupt the user.
|
100
|
-
* `locking`
|
101
|
-
* Setting this to `true` enables locking, meaning only one instance of your application can access the shared data at any given time. For more information see [Distributed State Locking][distributed_state_locking].
|
102
|
-
|
103
|
-
|
104
|
-
### Access and Usage
|
105
|
-
|
106
|
-
Once configured you can access it with a standard hash syntax:
|
107
|
-
|
108
|
-
```ruby
|
109
|
-
Rbcli.remote_state[:yourkeyhere]
|
110
|
-
```
|
111
|
-
|
112
|
-
This works the same way that [Local State](#local-state) does, with the same performance caveats (try not to write too frequently).
|
113
|
-
|
114
|
-
Note that all state in Rbcli is __lazy-loaded__, so no connections will be made until your code attempts to access the data even if the feature is enabled.
|
115
|
-
|
116
|
-
For more information on the available commands, see the documentation on [Local State](#local-state)
|
117
|
-
|
118
|
-
|
119
|
-
[aws_sdk_credentials]: https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/setup-config.html
|
120
|
-
[distributed_state_locking]: {{< ref "advanced/distributed_state_locking" >}}
|
@@ -1,51 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "User Configuration Files"
|
3
|
-
date: 2019-06-20T15:07:21-04:00
|
4
|
-
draft: false
|
5
|
-
---
|
6
|
-
|
7
|
-
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__.
|
8
|
-
|
9
|
-
## Defaults chain
|
10
|
-
|
11
|
-
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:
|
12
|
-
|
13
|
-
* YAML Files
|
14
|
-
* You can store your defaults in one or more YAML files and RBCli will import and combine them. Note that when generating the user config, RBCli will use the YAML text as-is, so comments are transferred as well. This allows you to write descriptions for the options directly in the file that the user can see.
|
15
|
-
* This is good for tools with large or complex configuration that needs user documentation written inline
|
16
|
-
* These YAML files should be placed in the `userconf/` directory in your project and they will automatically be loaded
|
17
|
-
* DSL Statements
|
18
|
-
* In the DSL, you can specify options individually by providing a name, description, and default value
|
19
|
-
* This is good for simpler configuration, as the descriptions provided are written out as comments in the generated user config
|
20
|
-
* You can put global configuration options in `config/userspace.rb`
|
21
|
-
* Command-specific confiugration can be placed in the command declarations in `application/commands/*.rb`
|
22
|
-
|
23
|
-
DSL statements appear in both of the above locations as the following:
|
24
|
-
|
25
|
-
```ruby
|
26
|
-
config_default :name, description: '<description_help_text>', default: '<default_value>'
|
27
|
-
```
|
28
|
-
## User chain
|
29
|
-
|
30
|
-
The user chain has two functions: generating and loading configuration from a YAML file on the end user's machine.
|
31
|
-
|
32
|
-
Rbcli will determine the correct location to locate the user configuration based on two factors:
|
33
|
-
|
34
|
-
1. The default location set in `config/userspace.rb`
|
35
|
-
2. The location specified on the command line using the `--config-file=<filename>` option (overrides #1)
|
36
|
-
|
37
|
-
To configure the default location, edit `config/userspace.rb`:
|
38
|
-
|
39
|
-
```ruby
|
40
|
-
config_userfile '~/.mytool', merge_defaults: true, required: false
|
41
|
-
```
|
42
|
-
|
43
|
-
* `path/to/config/file`
|
44
|
-
* Self explanatory. Recommended locations are a dotfile in the user's home directory, or a file under `/etc` such as `/etc/mytool/userconf.yaml`
|
45
|
-
* `merge_defaults`
|
46
|
-
* If set to `true`, default settings override user settings. If set to `false`, default settings are not loaded at all and the user is required to have all values specified in their config.
|
47
|
-
* `required`
|
48
|
-
* If set to `true` the application will not run if the file does not exist. A message will be displayed to the user to run your application with the `--generate-config` option to generate the file given your specified defaults.
|
49
|
-
|
50
|
-
|
51
|
-
Users can generate configs by running `yourclitool --generate-config`. This will generate a config file at the tool's default location specified in the DSL. This location can be overridden via the `--config-file=<filename>` option.
|
@@ -1,11 +0,0 @@
|
|
1
|
-
+++
|
2
|
-
title = "Development"
|
3
|
-
date = 2019-06-20T15:27:12-04:00
|
4
|
-
weight = 30
|
5
|
-
chapter = true
|
6
|
-
#pre = "<b>X. </b>"
|
7
|
-
+++
|
8
|
-
|
9
|
-
# Development
|
10
|
-
|
11
|
-
Want to make RBCli even better? On behalf of all RBCli users everywhere, it's much appreciated. Of course, even if you keep your changes to yourself and don't contribute back, now that you're a ninja you'll likely want to pave your own road forward. This section will guide you how.
|
@@ -1,199 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "Changelog"
|
3
|
-
date: 2019-06-20T15:07:21-04:00
|
4
|
-
draft: false
|
5
|
-
weight: 100
|
6
|
-
---
|
7
|
-
|
8
|
-
|
9
|
-
## 0.3.3 (April 24, 2024)
|
10
|
-
|
11
|
-
### Improvements
|
12
|
-
* Tested with Ruby 3.3.0
|
13
|
-
* Updated dependencies for Ruby 3.3.0
|
14
|
-
* Updated dependnecies for Sekeleton projects
|
15
|
-
* Added a `bundler/inline` gemfile on mini and micro skeleton projects to simplify their use
|
16
|
-
* Replaced deprecated Trollop gem with its replacement, [ManageIQ/Optimist](https://github.com/ManageIQ/optimist)
|
17
|
-
|
18
|
-
### Bugfixes
|
19
|
-
* Updated deprecated ERB call for skeleton generation to use new format
|
20
|
-
|
21
|
-
## 0.3.2 (October 28, 2023)
|
22
|
-
|
23
|
-
### Bugfixes
|
24
|
-
|
25
|
-
* Replaced several calls to the deprecated `.exists?` method with `.exist?` for compatibility with Ruby 3.2.0
|
26
|
-
* Updated dependencies to latest versions
|
27
|
-
* Standardized on version locking to the latest Major version of dependencies rather than the latest Minor ones
|
28
|
-
|
29
|
-
## 0.3.1 (October 19, 2021)
|
30
|
-
|
31
|
-
### Bugfixes
|
32
|
-
|
33
|
-
* Fixed prompt for option value to ignore nil defaults instead of displaying an empty string
|
34
|
-
* Skeleton script command `script.sh` updated to function correctly when development mode is enabled
|
35
|
-
* Updated Github Pages links to point to `github.io` instead of `github.com` which are being deprecated
|
36
|
-
* Updated dependencies, closing the security hole of the gem `addressable <= 1.7.0`
|
37
|
-
|
38
|
-
## 0.3 (July 31, 2020)
|
39
|
-
|
40
|
-
### Improvements
|
41
|
-
|
42
|
-
* Deprecated Ruby code has been updated to be compatible with Ruby 2.7.x
|
43
|
-
* All depedencies have been updated to their latest versions and tested to ensure continued compatibility
|
44
|
-
* Old-style execution hooks have been fully deprecated in favor of declaring them in the `Rbcli::Configurate.hooks` block. To ensure compatibility, save your current hooks and generate new ones using the command `rbcli hook`
|
45
|
-
* Skeleton gemspec now includes `spec.required_ruby_version`, which matches Rbcli's requirement
|
46
|
-
* Documentation updated to support latest Hugo and theme versions (Hugo 0.74.3 and hugo-theme-learn 2.5.0)
|
47
|
-
|
48
|
-
### Features
|
49
|
-
|
50
|
-
* Rbcli Deprecation Warnings now show the offending line of code to ease updating
|
51
|
-
* The `$libdir` global variable is defined by default in the skeleton project, allwoing easy access to the project's `lib` folder
|
52
|
-
|
53
|
-
## 0.2.12 (July 29, 2019)
|
54
|
-
|
55
|
-
### Improvements
|
56
|
-
|
57
|
-
* The base project skeleton now includes an improved structure for the `lib/` folder
|
58
|
-
* Documentation now uses Hugo instead of MkDocs for site generation.
|
59
|
-
* Updated dependencies in project skeleton to latest versions
|
60
|
-
|
61
|
-
### Features
|
62
|
-
|
63
|
-
* Development mode can be enabled by setting the environment variables: `RBCLI_ENV=development` and `RBCLI_DEVPATH=[path to local Rbcli folder]` to simplify changes to Rbcli during development. Combined with setting `alias rbcli='/path/to/rbcli/exe/rbcli'`, gem installation is not required for development work
|
64
|
-
|
65
|
-
## 0.2.11 (Feb 27, 2019)
|
66
|
-
|
67
|
-
### Improvements
|
68
|
-
|
69
|
-
* Updated the dependent gem verions to use the latest available versions
|
70
|
-
|
71
|
-
### Bugfixes
|
72
|
-
|
73
|
-
* Fixed the nested triggers of the message I/O system
|
74
|
-
|
75
|
-
## 0.2.8 (Nov 7, 2018)
|
76
|
-
|
77
|
-
### Features
|
78
|
-
|
79
|
-
* Added a standardized message I/O system
|
80
|
-
|
81
|
-
### Improvements
|
82
|
-
|
83
|
-
* Enabled the safe usage of anchors in YAML config files
|
84
|
-
* Improved the method of determining the script name to be more portable across OS'es
|
85
|
-
|
86
|
-
### Bugfixes
|
87
|
-
|
88
|
-
* Fixed an error which caused RBCli to crash when using `local_state`
|
89
|
-
* Fixed a bug which caused the `rbcli init` command to occassionally fail for mini and micro projects
|
90
|
-
|
91
|
-
### Changes
|
92
|
-
|
93
|
-
* Changed the `rbcli init` helptext to match the order of complexity of projects (standard -> mini -> micro)
|
94
|
-
|
95
|
-
## 0.2.7 (Oct 17, 2018)
|
96
|
-
|
97
|
-
### Improvements
|
98
|
-
|
99
|
-
* Added a dev mode for scripts that allows using a local RBCli copy instead of requiring the gem to be installed
|
100
|
-
|
101
|
-
### Bugfixes
|
102
|
-
|
103
|
-
* Fixed a bug that caused the rbcli tool not to detect project folders correctly.
|
104
|
-
* Command parameter `prompt:` now works when `required` is set to `true`.
|
105
|
-
|
106
|
-
### Changes
|
107
|
-
|
108
|
-
* The `rbcli init` command now initializes into the current working directory instead of creating a new one.
|
109
|
-
* Fixed erroneous documentation about the 'merge' setting on userspace config.
|
110
|
-
|
111
|
-
## 0.2.5 (Oct 8, 2018)
|
112
|
-
|
113
|
-
### Improvements
|
114
|
-
|
115
|
-
* Added a useful error message when local or remote state is used but not initialized.
|
116
|
-
|
117
|
-
### Bugfixes
|
118
|
-
|
119
|
-
* Fixed a bug in the Github Updater where RBCli crashed when a version tag was not present in the repo.
|
120
|
-
* Fixed a bug where deleting a state key would crash Rbcli
|
121
|
-
* Fixed a bug where remote state crashed with certain configurations
|
122
|
-
|
123
|
-
## 0.2.4 (Sep 4, 2018)
|
124
|
-
|
125
|
-
* This is a dummy release required to update the License in the Gemspec file. The license has not changed (GPLv3).
|
126
|
-
|
127
|
-
## 0.2.3 (Sep 4, 2018)
|
128
|
-
|
129
|
-
### Features
|
130
|
-
|
131
|
-
* Interactive Commands -- Prompt the user for parameters with a given value
|
132
|
-
|
133
|
-
### Improvements
|
134
|
-
|
135
|
-
* Added documentation on logging
|
136
|
-
|
137
|
-
## 0.2.2 (Aug 22, 2018)
|
138
|
-
|
139
|
-
### Features
|
140
|
-
|
141
|
-
### Bugfixes
|
142
|
-
|
143
|
-
* Fixed a bug that caused the logger's target and level not to be configured properly via the Configurate block.
|
144
|
-
|
145
|
-
### Improvements
|
146
|
-
|
147
|
-
* Lazy-loading has been implemented in optional modules such as autoupdates, remote storage, etc. This means that if you do not enable them in the code, they will not be loaded into memory. This significantly improves loding times for applications.
|
148
|
-
* Abstraction system created for configuration. This has significantly simplified the existing codebase and makes future development easier.
|
149
|
-
* Deprecation warning system added. This allows for RBCli contributors to notify users of breaking changes that may impact their code.
|
150
|
-
* Folder structure has been simplified to ease development.
|
151
|
-
* Much of the code has been refactored.
|
152
|
-
|
153
|
-
### Deprecations/Changes
|
154
|
-
|
155
|
-
* The `Rbcli` module is now `RBCli` to better match the branding. The original `Rbcli` module will still work for this current release, with a warning, but future releases will require code changes.
|
156
|
-
* Hooks are now defined under the `RBCli.Configurate.hooks` block instead of `RBCli.Configurate.me`.
|
157
|
-
* The logger is now silent by default. To enable it, it must be configured either via the `Configurate` block or via the user's config file.
|
158
|
-
|
159
|
-
|
160
|
-
## 0.2.1 (Aug 8, 2018)
|
161
|
-
|
162
|
-
### Features
|
163
|
-
|
164
|
-
* Remote Execution added for Script and External commands
|
165
|
-
|
166
|
-
### Bugfixes
|
167
|
-
|
168
|
-
* Fixed a bug that caused RBCli to crash if a direct path mode script's environment variables were declared as symbols
|
169
|
-
|
170
|
-
|
171
|
-
## 0.2.0 (Aug 5, 2018)
|
172
|
-
|
173
|
-
### Features
|
174
|
-
|
175
|
-
* CLI tool Autoupdate Enabled; when an upgrade to RBCli is detected, the RBCli CLI tool will notify the developer.
|
176
|
-
* Official documentation created and hosted with Github Pages
|
177
|
-
* RBCli released under GPLv3
|
178
|
-
* Copyright/License notice displayed via RBCli tool with `rbcli license` in accordance with GPLv3 guidelines
|
179
|
-
|
180
|
-
### Bugfixes
|
181
|
-
|
182
|
-
* Fixed version number loading for projects
|
183
|
-
* Cleaned up command usage help output
|
184
|
-
* Fixed script and external command generation
|
185
|
-
|
186
|
-
### Improvements
|
187
|
-
|
188
|
-
* A quick reference guide can now be found in README.md
|
189
|
-
* Autoupdate feature now allows supplying a custom message
|
190
|
-
* Direct Path Mode for External Commands now
|
191
|
-
* Added support for a `lib` folder in projects, as a place for custom code, which is automatically added to `$LOAD_PATH` for developers
|
192
|
-
* Improved language regarding external commands: Documentation now differentiates between Standard, Scripted, and External Commands
|
193
|
-
* Improved language regarding user config files: Now called Userspace Config
|
194
|
-
* Options and Parameters now allow specifying the letter to be used for the short version, or to disable it altogether
|
195
|
-
* Userspace config can now be disabled by setting the path to nil or removing the declaration
|
196
|
-
|
197
|
-
### Deprecations/Changes
|
198
|
-
|
199
|
-
* Removed deprecated and broken examples from the examples folder
|
@@ -1,81 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "Code of Conduct"
|
3
|
-
date: 2019-06-20T15:07:21-04:00
|
4
|
-
draft: false
|
5
|
-
weight: 30
|
6
|
-
---
|
7
|
-
|
8
|
-
__The Contributor Covenant Code of Conduct__
|
9
|
-
|
10
|
-
## Our Pledge
|
11
|
-
|
12
|
-
In the interest of fostering an open and welcoming environment, we as
|
13
|
-
contributors and maintainers pledge to making participation in our project and
|
14
|
-
our community a harassment-free experience for everyone, regardless of age, body
|
15
|
-
size, disability, ethnicity, gender identity and expression, level of experience,
|
16
|
-
nationality, personal appearance, race, religion, or sexual identity and
|
17
|
-
orientation.
|
18
|
-
|
19
|
-
## Our Standards
|
20
|
-
|
21
|
-
Examples of behavior that contributes to creating a positive environment
|
22
|
-
include:
|
23
|
-
|
24
|
-
* Using welcoming and inclusive language
|
25
|
-
* Being respectful of differing viewpoints and experiences
|
26
|
-
* Gracefully accepting constructive criticism
|
27
|
-
* Focusing on what is best for the community
|
28
|
-
* Showing empathy towards other community members
|
29
|
-
|
30
|
-
Examples of unacceptable behavior by participants include:
|
31
|
-
|
32
|
-
* The use of sexualized language or imagery and unwelcome sexual attention or
|
33
|
-
advances
|
34
|
-
* Trolling, insulting/derogatory comments, and personal or political attacks
|
35
|
-
* Public or private harassment
|
36
|
-
* Publishing others' private information, such as a physical or electronic
|
37
|
-
address, without explicit permission
|
38
|
-
* Other conduct which could reasonably be considered inappropriate in a
|
39
|
-
professional setting
|
40
|
-
|
41
|
-
## Our Responsibilities
|
42
|
-
|
43
|
-
Project maintainers are responsible for clarifying the standards of acceptable
|
44
|
-
behavior and are expected to take appropriate and fair corrective action in
|
45
|
-
response to any instances of unacceptable behavior.
|
46
|
-
|
47
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
48
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
49
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
50
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
51
|
-
threatening, offensive, or harmful.
|
52
|
-
|
53
|
-
## Scope
|
54
|
-
|
55
|
-
This Code of Conduct applies both within project spaces and in public spaces
|
56
|
-
when an individual is representing the project or its community. Examples of
|
57
|
-
representing a project or community include using an official project e-mail
|
58
|
-
address, posting via an official social media account, or acting as an appointed
|
59
|
-
representative at an online or offline event. Representation of a project may be
|
60
|
-
further defined and clarified by project maintainers.
|
61
|
-
|
62
|
-
## Enforcement
|
63
|
-
|
64
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
65
|
-
reported by contacting the project team at andrew@blacknex.us. All
|
66
|
-
complaints will be reviewed and investigated and will result in a response that
|
67
|
-
is deemed necessary and appropriate to the circumstances. The project team is
|
68
|
-
obligated to maintain confidentiality with regard to the reporter of an incident.
|
69
|
-
Further details of specific enforcement policies may be posted separately.
|
70
|
-
|
71
|
-
Project maintainers who do not follow or enforce the Code of Conduct in good
|
72
|
-
faith may face temporary or permanent repercussions as determined by other
|
73
|
-
members of the project's leadership.
|
74
|
-
|
75
|
-
## Attribution
|
76
|
-
|
77
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
78
|
-
available at [http://contributor-covenant.org/version/1/4][version]
|
79
|
-
|
80
|
-
[homepage]: http://contributor-covenant.org
|
81
|
-
[version]: http://contributor-covenant.org/version/1/4/
|
@@ -1,88 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "Contribution Guide"
|
3
|
-
date: 2019-06-20T15:07:21-04:00
|
4
|
-
draft: false
|
5
|
-
weight: 10
|
6
|
-
---
|
7
|
-
|
8
|
-
Contributing to RBCli is the same as most open source projects:
|
9
|
-
|
10
|
-
1. Fork the repository
|
11
|
-
2. Create your own branch
|
12
|
-
3. Submit a pull request when ready
|
13
|
-
|
14
|
-
That's all there is to it! We've also kept our acceptance criteria pretty simple, as you'll see below. Feel free to submit a pull request even if you don't meet it if you would like your code or feature to be reviewed first; we do want to be mindful of your time and will review submissions before they are polished.
|
15
|
-
|
16
|
-
# Develpment Mode
|
17
|
-
|
18
|
-
To allow for easy deveopment, Rbcli has a development mode which allows a project to include rbcli from a local folder instead of the default gem path. To use it, add the following to your shell's profile (typically `~/.bash_profile` or `~/.profile`):
|
19
|
-
|
20
|
-
```bash
|
21
|
-
export RBCLI_ENV='development'
|
22
|
-
export RBCLI_DEVPATH='/path/to/rbcli/lib/rbcli'
|
23
|
-
alias rbcli='/path/to/rbcli/exe/rbcli'
|
24
|
-
```
|
25
|
-
|
26
|
-
# Code Acceptance Criteria
|
27
|
-
|
28
|
-
## Tabs, Not Spaces
|
29
|
-
|
30
|
-
Please, and thanks. We all like to use different indentation levels and styles, and this will keep us consistent between editors.
|
31
|
-
|
32
|
-
For filetypes where tabs are not supported (such as YAML), please stick to using two (2) spaces.
|
33
|
-
|
34
|
-
## Documentation for User Features
|
35
|
-
|
36
|
-
For any modification that alters the way RBCli is used -- we're talking additional features, options, keyword changes, major behavioral changes, and the like -- the documentation will need to be updated as well. You'll be happy to know we designed it to make the process relatively painless.
|
37
|
-
|
38
|
-
RBCli's documentation is essentially a collection of markdown files that have been compiled into a static site using [MkDocs](https://www.mkdocs.org). If you already have python and pip on your system, you can install it by running:
|
39
|
-
|
40
|
-
```bash
|
41
|
-
pip install mkdocs mkdocs-material
|
42
|
-
```
|
43
|
-
|
44
|
-
You can find the source markdown files in the `docs-src/docs` folder, and the menu organization in `docs-src/mkdocs.yml`. To preview your changes on a live site, run:
|
45
|
-
|
46
|
-
```bash
|
47
|
-
mkdocs serve
|
48
|
-
```
|
49
|
-
|
50
|
-
Also, don't forget to update the __Quick Reference Guide__ in the `README.md` file (the main project one) with information about your changes.
|
51
|
-
|
52
|
-
Once you've completed your edits, run the `makesite.sh` command to build the actual HTML pages automatically in the `docs` folder, from where they will be served when live.
|
53
|
-
|
54
|
-
## Deprecations
|
55
|
-
|
56
|
-
If a feature needs to be deprecated, RBCli has a built-in deprecation message feature. You can leverage it by calling the following code when a deprecated command is called:
|
57
|
-
|
58
|
-
```ruby
|
59
|
-
Rbcli::DeprecationWarning.new deprecated_command, message, version_when_code_will_be_removed
|
60
|
-
```
|
61
|
-
|
62
|
-
So, for example:
|
63
|
-
|
64
|
-
```ruby
|
65
|
-
Rbcli::DeprecationWarning.new 'Rbcli::Configurate.me--first_run', 'Please use `RBCli::Configurate.hooks` as the parent block instead.', '0.3.0'
|
66
|
-
```
|
67
|
-
|
68
|
-
will display the following message to the user, in red, any any time the application is run:
|
69
|
-
|
70
|
-
```text
|
71
|
-
DEPRECATION WRNING: The feature `Rbcli::Configurate.me--post_hook` has been deprecated. Please use `RBCli::Configurate.hooks` as the parent block instead. This feature will be removed in version 0.3.0.
|
72
|
-
```
|
73
|
-
|
74
|
-
Additionally, it will place the same line in the logs using `Rbcli.logger.warn` if logging is enabled.
|
75
|
-
|
76
|
-
If a deprecation warning has been added, please remember to mention it in the pull request so that others can update it later.
|
77
|
-
|
78
|
-
# Maintainer's Notes
|
79
|
-
|
80
|
-
To install this gem onto your local machine from source, run `bundle exec rake install`.
|
81
|
-
|
82
|
-
To release a new version, follow theese steps:
|
83
|
-
|
84
|
-
1. Update the version number in `version.rb`
|
85
|
-
2. Run `bundle exec rake install`, which will update `gemfile.lock` with the correct version and all dependency changes
|
86
|
-
3. Run `docs-src/makesite.sh`, which re-compiles the documentation and pulls in the changelog and quick reference automatically
|
87
|
-
4. Commit the above changes to master with a commit message of "vX.X.X" (where X.X.X is the version number), but do not push
|
88
|
-
5. Run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
@@ -1,17 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: "License Info"
|
3
|
-
date: 2019-06-20T15:07:21-04:00
|
4
|
-
draft: false
|
5
|
-
weight: 20
|
6
|
-
---
|
7
|
-
|
8
|
-
## How RBCli is Licensed
|
9
|
-
|
10
|
-
We want to help the developer community build tooling faster and with less work. That's why RBCli was built. And let's face it - most of us aren't lawyers, and don't want to worry about legal fine print when building awesome software. That's why RBCli is released under the __GPLv3 License__. So you're free to use RBCli as you see fit to write free software. If you wish to use RBCli in a commercial offering, please contact me at [andrew@blacknex.us](mailto:andrew@blacknex.us).
|
11
|
-
|
12
|
-
|
13
|
-
## The License
|
14
|
-
|
15
|
-
You can view the offical license for RBCli [Here](https://github.com/akhoury6/rbcli/blob/master/LICENSE.txt).
|
16
|
-
|
17
|
-
For more details about the GPLv3 License, see [Here](https://choosealicense.com/licenses/gplv3/).
|