rbcli 0.3.3 → 0.4.0
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 +102 -0
- data/lib/rbcli/components/config/backends/env.rb +67 -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 +32 -0
- data/lib/rbcli/components/config/backends/null.rb +32 -0
- data/lib/rbcli/components/config/backends/toml.rb +38 -0
- data/lib/rbcli/components/config/backends/yaml.rb +31 -0
- data/lib/rbcli/components/config/component.rb +33 -0
- data/lib/rbcli/components/config/config.rb +165 -0
- data/lib/rbcli/components/config/config_of_death.rb +12 -0
- data/lib/rbcli/components/config/template.rb.erb +36 -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 +33 -0
- data/lib/rbcli/{util → components/parser/optimist}/optimist.rb +134 -48
- data/lib/rbcli/components/parser/parser.rb +178 -0
- data/lib/rbcli/components/parser/template.rb.erb +35 -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 +26 -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 +125 -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
data/exe/rbcli
CHANGED
@@ -1,261 +1,200 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
##################################################################################
|
3
|
-
#
|
4
|
-
# Copyright (C)
|
5
|
-
# #
|
6
|
-
# This program is free software: you can redistribute it and/or modify #
|
7
|
-
# it under the terms of the GNU General Public License as published by #
|
8
|
-
# the Free Software Foundation, either version 3 of the License, or #
|
9
|
-
# (at your option) any later version. #
|
10
|
-
# #
|
11
|
-
# This program is distributed in the hope that it will be useful, #
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
14
|
-
# GNU General Public License for more details. #
|
15
|
-
# #
|
16
|
-
# You should have received a copy of the GNU General Public License #
|
17
|
-
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
18
|
-
# #
|
19
|
-
# For questions regarding licensing, please contact andrew@blacknex.us #
|
3
|
+
# Rbcli -- A framework for developing command line applications in Ruby #
|
4
|
+
# Copyright (C) 2024 Andrew Khoury <akhoury@live.com> #
|
20
5
|
##################################################################################
|
21
|
-
|
22
|
-
require
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
6
|
+
BASEDIR = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
7
|
+
require File.join(BASEDIR, 'lib', 'rbcli.rb')
|
8
|
+
require File.join(RBCLI_TOOLDIR, 'helpers.rb')
|
9
|
+
|
10
|
+
Rbcli::Configurate.cli do
|
11
|
+
appname 'Rbcli'
|
12
|
+
author 'Andrew Khoury'
|
13
|
+
email 'akhoury@live.com'
|
14
|
+
version Rbcli::VERSION
|
15
|
+
copyright_year 2024
|
16
|
+
license 'MIT'
|
17
|
+
helptext "Helptext!"
|
18
|
+
opt :version, "Print version and exit", :short => :none
|
29
19
|
end
|
30
20
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
action do
|
37
|
-
readme = "#{File.dirname(__FILE__)}/../README.md"
|
38
|
-
begin
|
39
|
-
CLIMarkdown::Converter.new([readme])
|
40
|
-
rescue Errno::EPIPE
|
41
|
-
# Empty
|
42
|
-
end
|
43
|
-
end
|
21
|
+
Rbcli::Configurate.logger do
|
22
|
+
logger target: :stdout,
|
23
|
+
level: ENV['RBCLI_DEVELOPMENT'] == 'true' ? :debug : :info,
|
24
|
+
format: ENV['RBCLI_DEVELOPMENT'] == 'true' ? :simple : :display
|
44
25
|
end
|
45
26
|
|
46
|
-
|
47
|
-
|
48
|
-
usage nil
|
49
|
-
|
50
|
-
parameter :full, 'Display Full License Text', default: false
|
51
|
-
|
52
|
-
action do |params|
|
53
|
-
puts File.read("#{File.dirname(__FILE__)}/../LICENSE.txt") if params[:full]
|
54
|
-
puts <<-EOF
|
55
|
-
RBCli Copyright (C) 2018 Andrew Khoury
|
56
|
-
This program comes with ABSOLUTELY NO WARRANTY.
|
57
|
-
This is free software, and you are welcome to redistribute it
|
58
|
-
under certain conditions.
|
59
|
-
If you wish to release this library as part of commercial software,
|
60
|
-
please contact andrew@blacknex.us.
|
61
|
-
EOF
|
62
|
-
puts "Type `rbcli license --full' to show the license text." unless params[:full]
|
63
|
-
end
|
27
|
+
Rbcli::Configurate.updatechecker do
|
28
|
+
gem 'rbcli', force_update: false, message: "Please run `gem update rbcli` to upgrade to the latest version."
|
64
29
|
end
|
65
30
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
This will generate a new project structure under the current directory. Use -t to specify the type:
|
70
|
-
|
71
|
-
|
72
|
-
Standard: A complete RBCli project structure. Recommended for most applications, it provides
|
73
|
-
a framework for organizing code and creating a gem to be installed/distributed.
|
74
|
-
|
75
|
-
Mini: A single-file RBCli project. All features are supported, but project structure is left to the developer.
|
76
|
-
Recommended for smaller applications, or for integrating RBCli into an existing application.
|
77
|
-
|
78
|
-
Micro: A single-file, minimal RBCli project. Similar to a mini project, but only the minimal required code is
|
79
|
-
generated. Recommended for rapid prototyping of scripts, for advanced users only.
|
80
|
-
EOF
|
81
|
-
|
82
|
-
parameter :name, 'Name of project to generate', type: :string, default: File.basename(Dir.pwd), required: true, prompt: 'Enter a name'
|
83
|
-
parameter :type, 'Specify project type', type: :string, permitted: %w(standard mini micro), default: 'standard'
|
84
|
-
parameter :description, 'A description of the project', type: :string, default: 'TODO: Description goes here'
|
85
|
-
|
86
|
-
action do |params, args, global_opts, config|
|
87
|
-
dest = Dir.pwd
|
88
|
-
|
89
|
-
# Prepare template vars
|
90
|
-
template_vars = {
|
91
|
-
cmdname: params[:name],
|
92
|
-
modulename: params[:name].split('-').each(&:capitalize!).join,
|
93
|
-
description: params[:description],
|
94
|
-
rbcli_version: Rbcli::VERSION
|
95
|
-
}
|
96
|
-
|
97
|
-
proj = RBCliTool::Project.new(dest, template_vars)
|
98
|
-
|
99
|
-
# if proj.exist?
|
100
|
-
# RBCliTool.continue_confirmation "The project or file #{params[:name]} already exists; contents will be overwritten."
|
101
|
-
# FileUtils.rm_rf dest
|
102
|
-
# end
|
103
|
-
|
104
|
-
case params[:type]
|
105
|
-
when 'micro' # Micro: Single File, simplified
|
106
|
-
success = proj.create_micro
|
107
|
-
when 'mini' # Mini: Single File
|
108
|
-
success = proj.create_mini
|
109
|
-
else # Standard; full project structure
|
110
|
-
success = proj.create
|
111
|
-
end # END case params[:type]
|
112
|
-
|
113
|
-
if success
|
114
|
-
puts "\nInitialization Complete!\n"
|
115
|
-
else
|
116
|
-
puts "\nAn RBCli Project already exists in the current or specified directory tree. Please delete the project or run this command from a different directory.\n"
|
117
|
-
end
|
118
|
-
end
|
31
|
+
Rbcli::Configurate.envvars do
|
32
|
+
prefix 'RBCLI'
|
33
|
+
envvar 'RBCLI_DEVELOPMENT', false
|
119
34
|
end
|
120
35
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
36
|
+
Rbcli.command "portable" do
|
37
|
+
description 'Creates a portable Rbcli executable'
|
38
|
+
usage "(--(d)ocs|--use-(b)undler|--(f)orce) <application_name>"
|
39
|
+
helptext <<~HELPTEXT
|
40
|
+
This will initialize a portable Rbcli project in the current directory.
|
41
|
+
|
42
|
+
A single executable file will be created with all of the Rbcli configuration
|
43
|
+
in it. This setup is ideal for creating an executable that can be easily transferred to
|
44
|
+
different systems, or for dropping into a pre-existing project.
|
45
|
+
|
46
|
+
If you'd prefer a complete project structure, run `rbcli gem --help` for more information.
|
47
|
+
HELPTEXT
|
48
|
+
|
49
|
+
parameter :annotate, "Add annotations and examples for a more guided build"
|
50
|
+
parameter :use_bundler, "Use bundler inline for dependencies", short: :b
|
51
|
+
parameter :force, "Overwrite files without prompting"
|
52
|
+
|
53
|
+
action do |opts, params, args, config, env|
|
54
|
+
if args.first.nil?
|
55
|
+
Rbcli.log.error "You must specify a name for the project", 'TOOL'
|
56
|
+
Rbcli.log.error "Usage: #{self.usage}", 'TOOL'
|
57
|
+
Rbcli::exit 1
|
58
|
+
end
|
59
|
+
vars = {
|
60
|
+
appname: args.first,
|
61
|
+
use_bundler: params[:use_bundler],
|
62
|
+
development: env[:development],
|
63
|
+
showdocs: params[:annotate]
|
64
|
+
}
|
65
|
+
Rbcli.log.debug "Creating portable executable", 'TOOL'
|
66
|
+
Rbcli::ToolHelpers.cp_file File.join(RBCLI_TOOLDIR, 'skeletons', 'portable.rb.erb'),
|
67
|
+
File.join(Dir.getwd, "#{vars[:appname].downcase}"),
|
68
|
+
template_vars: vars, set_executable: true, force: params[:force]
|
69
|
+
Rbcli.log.info "Done.", 'TOOL'
|
70
|
+
end
|
149
71
|
end
|
150
72
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
73
|
+
Rbcli.command "gem" do
|
74
|
+
description 'Creates an full Rbcli-based gem project'
|
75
|
+
usage "(--(f)orce) <application_name>"
|
76
|
+
helptext <<~HELPTEXT
|
77
|
+
This will initialize an complete Rbcli project in the current directory.
|
78
|
+
|
79
|
+
First a basic Gem structure is created with bundler, and then the
|
80
|
+
Rbcli-specific modifications are layered on top. This is ideal
|
81
|
+
for larger applications, or if you already have CI/CD pipelines
|
82
|
+
that work with Gems and want to reuse your code
|
83
|
+
|
84
|
+
If you'd prefer a single-file executable script, run `rbcli portable --help` for more information.
|
85
|
+
HELPTEXT
|
86
|
+
|
87
|
+
parameter :force, "Overwrite files without prompting"
|
88
|
+
|
89
|
+
action do |opts, params, args, config, env|
|
90
|
+
if args.first.nil?
|
91
|
+
Rbcli.log.error "You must specify a name for the project", 'TOOL'
|
92
|
+
Rbcli.log.error "Usage: #{self.usage}", 'TOOL'
|
93
|
+
Rbcli::exit 1
|
94
|
+
end
|
95
|
+
vars = {
|
96
|
+
appname: args.first,
|
97
|
+
use_bundler: params[:use_bundler],
|
98
|
+
development: env[:development],
|
99
|
+
showdocs: params[:docs]
|
100
|
+
}
|
101
|
+
project_dir = File.join(Dir.getwd, vars[:appname])
|
102
|
+
config_dir = File.join(project_dir, 'lib', 'config')
|
103
|
+
command_dir = File.join(project_dir, 'lib', 'commands')
|
104
|
+
scripts_dir = File.join(command_dir, 'scripts')
|
105
|
+
if File.exist?(project_dir) && params[:force]
|
106
|
+
FileUtils.rm_rf(project_dir)
|
107
|
+
elsif File.exist?(project_dir) && !params[:force]
|
108
|
+
Rbcli.log.info "The project #{vars[:appname]} already exists. Overwrite? (y/n): ", 'TOOL'
|
109
|
+
answer = gets.chomp
|
110
|
+
answer = { 'y' => true, 'n' => false }[(answer[0] || '').downcase]
|
111
|
+
if answer
|
112
|
+
Rbcli.log.debug "Deleting #{File.basename(project_dir)}", 'TOOL'
|
113
|
+
FileUtils.rm_rf(project_dir)
|
114
|
+
else
|
115
|
+
return
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
# Full options available:
|
120
|
+
# `bundle gem --exe --coc --mit --test=rspec/minitest/test-unit --ci=github/gitlab/circle --linter=rubocop/standard <name>`
|
121
|
+
Rbcli.log.info "Running bundler gem", 'TOOL'
|
122
|
+
`bundle gem --exe --coc #{vars[:appname]}`
|
123
|
+
Rbcli.log.debug "Creating Rbcli project identifier", 'TOOL'
|
124
|
+
FileUtils.touch(File.join(project_dir), '.rbcli')
|
125
|
+
Rbcli.log.debug "Creating additional directories", 'TOOL'
|
126
|
+
[config_dir, command_dir, scripts_dir].each { |dir| FileUtils.mkdir_p(dir) }
|
127
|
+
FileUtils.touch(File.join(scripts_dir, '.keep'))
|
128
|
+
Rbcli.log.debug "Creating executable", 'TOOL'
|
129
|
+
Rbcli::ToolHelpers.cp_file File.join(RBCLI_TOOLDIR, 'skeletons', 'gem.rb.erb'),
|
130
|
+
File.join(project_dir, 'exe', "#{vars[:appname].downcase}"),
|
131
|
+
template_vars: vars, set_executable: true, force: true
|
132
|
+
Rbcli.log.debug "Creating configs", 'TOOL'
|
133
|
+
%w(parser logger config envvars hooks updatechecker).each { |component|
|
134
|
+
Rbcli::ToolHelpers.cp_file File.join(RBCLI_LIBDIR, 'components', component, 'template.rb.erb'),
|
135
|
+
File.join(config_dir, "#{component}.rb"),
|
136
|
+
template_vars: vars, set_executable: false, force: params[:force] }
|
137
|
+
Rbcli.log.debug "Creating commands", 'TOOL'
|
138
|
+
%w(command script).each { |cmdtype|
|
139
|
+
Rbcli::ToolHelpers.cp_file File.join(RBCLI_LIBDIR, 'components', 'commands', "#{cmdtype}.rb.erb"),
|
140
|
+
File.join(command_dir, "#{cmdtype}.rb"),
|
141
|
+
template_vars: vars, set_executable: false, force: params[:force] }
|
142
|
+
Rbcli.log.info "Done."
|
143
|
+
end
|
182
144
|
end
|
183
145
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
146
|
+
Rbcli.command "command" do
|
147
|
+
description 'Generate a new command declaration in the current project'
|
148
|
+
usage "(--(s)cript|--(f)orce) <application_name>"
|
149
|
+
parameter :script, 'Generate a shell-script based command', default: false
|
150
|
+
parameter :force, 'Overwrite files without prompting', default: false
|
151
|
+
action do |opts, params, args, config, env|
|
152
|
+
if args.first.nil?
|
153
|
+
Rbcli.log.error "You must specify a name for the command", 'TOOL'
|
154
|
+
Rbcli.log.error "Usage: #{self.usage}", 'TOOL'
|
155
|
+
Rbcli::exit 1
|
156
|
+
end
|
157
|
+
|
158
|
+
unless (project_dir = find_root(Dir.pwd))
|
159
|
+
Rbcli.log.error "Not an Rbcli project directory. This command can only be run on projects created using `rbcli gem <project_name>`."
|
160
|
+
Rbcli.log.error "If you believe you are receiving this message in error, make sure the `.rbcli` file exists in the current directory."
|
161
|
+
return
|
162
|
+
end
|
163
|
+
|
164
|
+
command_dir = File.join(project_dir, 'lib', 'commands')
|
165
|
+
scripts_dir = File.join(command_dir, 'scripts')
|
166
|
+
FileUtils.mkdir_p(command_dir)
|
167
|
+
FileUtils.mkdir_p(scripts_dir) if params[:script]
|
168
|
+
Rbcli.log.debug "Creating commands", 'TOOL'
|
169
|
+
|
170
|
+
vars = {
|
171
|
+
command_name: args.first,
|
172
|
+
showdocs: true
|
173
|
+
}
|
174
|
+
|
175
|
+
cmdtype = params[:script] ? 'script' : 'command'
|
176
|
+
Rbcli::ToolHelpers.cp_file File.join(RBCLI_LIBDIR, 'components', 'commands', "#{cmdtype}.rb.erb"),
|
177
|
+
File.join(command_dir, "#{args.first}.rb"),
|
178
|
+
template_vars: vars, set_executable: false, force: params[:force]
|
179
|
+
end
|
180
|
+
|
181
|
+
def find_root path
|
182
|
+
# We look for the .rbcli file in the current tree and return the root path
|
183
|
+
searchpath = path
|
184
|
+
until searchpath.empty?
|
185
|
+
return searchpath if File.directory? searchpath and File.exist? "#{searchpath}/.rbcli"
|
186
|
+
spath = searchpath.split('/')
|
187
|
+
searchpath = (spath.length == 2) ? '/' : spath[0..-2].join('/')
|
188
|
+
end
|
189
|
+
false
|
190
|
+
end
|
215
191
|
end
|
216
192
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
Default: The default hook runs whenever the user does not specify a command. If the hook is not present, the default
|
223
|
-
behavior is to show the help text (same as -h).
|
224
|
-
|
225
|
-
Pre: The pre-execution hook, which runs code prior to the execution of any command. This allows for actions such
|
226
|
-
as authentiation into remote systems.
|
227
|
-
|
228
|
-
Post: The post-execution hook, which runs code after the execution of any command.
|
229
|
-
|
230
|
-
First-run: The first-run hook will run only on the first time the user runs the application. This is useful for
|
231
|
-
initial setup or for welcome messages to be shown. Note that if you enable the first-run hook, you must
|
232
|
-
also enable local_state (see config/storage.rb).
|
233
|
-
|
234
|
-
Please run this command from within the project's directory structure.
|
235
|
-
EOF
|
236
|
-
|
237
|
-
parameter :default, 'Generate the default (no-command-entered) hook', type: :boolean, default: false
|
238
|
-
parameter :pre, 'Generate the pre-execution hook', type: :boolean, default: false
|
239
|
-
parameter :post, 'Generate the post-execution hook', type: :boolean, default: false
|
240
|
-
parameter :firstrun, 'Generate the first-run hook', type: :boolean, default: false
|
241
|
-
|
242
|
-
action do |params, args, global_opts, config|
|
243
|
-
# First we check that we are working within a project folder
|
244
|
-
project_root = RBCliTool::Project.find_root(Dir.pwd)
|
245
|
-
RBCliTool.exit_with_error("Can't find the project root in the current path. Please `cd` to your project's directory before running this command, and ensure that the `.rbcli` file is present in its root path.") unless project_root
|
246
|
-
|
247
|
-
generated_something = false
|
248
|
-
|
249
|
-
[:default, :pre, :post, :firstrun].each do |pname|
|
250
|
-
next unless params[pname]
|
251
|
-
generator = RBCliTool::Generator.new(:hook, project_root, pname)
|
252
|
-
generator.run
|
253
|
-
generated_something = true
|
254
|
-
end
|
255
|
-
|
256
|
-
RBCliTool.exit_with_error("No hooks specified. Please run `rbcli hooks -h` for details on how to generate hooks.") unless generated_something
|
257
|
-
end
|
193
|
+
Rbcli.command "license" do
|
194
|
+
description 'Display license info'
|
195
|
+
action do |opts, params, args, config, env|
|
196
|
+
Rbcli.log.info "eJxdUk9v2jAUv/Mpnnpqpaibqp12M4kpVkMcOaaMY0gM8RRiZJshvv3ec+na\nTkKK/Px+f81KaChtZ6Zgfs5muTtdvT0M0fRw3z3A7gps6r25wMvgzv4KT9+f\nfsxmtfFHG4J1E9gAg/EGFw++nRCXwd4bA24P3dD6g8kgOminK5yMDwhwu9ja\nyU4HaKFDOdqMA9IEt4+X1htc7qENwXW2JR+9685HM8U2kt7ejibAfRwM3DU3\nxN1DEulNO4KdgO7er+BiIzqP4E2I3nbEkeFSN5578vB+PdqjvSkQPHUQiPQc\nMAH5zODoerunr0mxTufdaMOQQW+JeneOOAw0TG1mlOOb8xDMOBKDRd8p64e7\ntEMqJyo03ipKupfBHb8mwYr2Zz+hpEmY3mFlSfG36SJNaH3vxtFdKFrnpt5S\nooAPq/Gq3bk/JmVJ8WByEa2+WaAHOH286u0qDC1635lbYaiL9baf4niSDxEf\n3mL3J+eT3v8xH1F/yaGRC71hioNooFbyVRS8gDvW4Pkug43QS7nWgBuKVXoL\ncgGs2sKLqIoM+K9a8aYBqUCs6lJwnIkqL9eFqJ5hjrhK4h9ZrIRGUi2BBG9U\ngjdEtuIqX+KRzUUp9DaDhdAVcS6QlEHNlBb5umQK6rWqZcNRvkDaSlQLhSp8\nxSv9iKo4A/6KB2iWrCyTFFuje5X85bLeKvG81LCUZcFxOOfojM1L/iaFofKS\niVUGBVuxZ55QEllUWru52yx5GqEew1+uhawoRi4rrfCYYUql/0E3ouEZMCUa\nKmShJNJTnYiQiQRxFX9joarhy4vgCp3XDf/wUnBWIldD4M/Lj38BVjZX4w==".decompress, 'TOOL' ### LICENSE.txt
|
197
|
+
end
|
258
198
|
end
|
259
199
|
|
260
|
-
|
261
|
-
Rbcli.parse
|
200
|
+
Rbcli.go!
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##################################################################################
|
3
|
+
# Rbcli -- A framework for developing command line applications in Ruby #
|
4
|
+
# Copyright (C) 2024 Andrew Khoury <akhoury@live.com> #
|
5
|
+
##################################################################################
|
6
|
+
class Rbcli::Command
|
7
|
+
def initialize name
|
8
|
+
raise Rbcli::CommandError.new "Command name can only contain the characters [A-Za-z0-9_]+" unless /[A-Za-z0-9_]+/.match?(name)
|
9
|
+
@name = name.to_s.downcase
|
10
|
+
@default = false
|
11
|
+
@description = nil
|
12
|
+
@helptext = nil
|
13
|
+
@usage = nil
|
14
|
+
@action = nil
|
15
|
+
@script = nil
|
16
|
+
@params = []
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :name, :params
|
20
|
+
|
21
|
+
def description text = nil
|
22
|
+
return @description if text.nil?
|
23
|
+
@description = text
|
24
|
+
end
|
25
|
+
|
26
|
+
def helptext text = nil
|
27
|
+
return @helptext if text.nil?
|
28
|
+
@helptext = text
|
29
|
+
end
|
30
|
+
|
31
|
+
def usage text = nil
|
32
|
+
return @usage if text.nil?
|
33
|
+
@usage = text
|
34
|
+
end
|
35
|
+
|
36
|
+
def default
|
37
|
+
@default = true
|
38
|
+
end
|
39
|
+
|
40
|
+
def default?
|
41
|
+
@default
|
42
|
+
end
|
43
|
+
|
44
|
+
def parameter * args
|
45
|
+
args[2][:required] = false if !args[2].nil? && !args[2].empty? && args[2][:prompt].is_a?(String)
|
46
|
+
@params.push(args)
|
47
|
+
end
|
48
|
+
|
49
|
+
def action & block
|
50
|
+
@action = block
|
51
|
+
@script = nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def inline_script inline: nil, vars: nil
|
55
|
+
require_relative 'scriptwrapper/scriptwrapper'
|
56
|
+
@action = nil
|
57
|
+
@script = Rbcli::ScriptWrapper.new inline: inline, path: nil, vars: vars
|
58
|
+
end
|
59
|
+
|
60
|
+
def external_script path: nil, vars: nil
|
61
|
+
unless File.exist?(path) && File.readable?(path) && File.executable?(path)
|
62
|
+
Rbcli.log.fatal "Command #{@name} expects a script to be located at: #{path}. Please make sure it exists and is both readable and executable by the current user."
|
63
|
+
Rbcli::exit 1
|
64
|
+
end
|
65
|
+
require_relative 'scriptwrapper/scriptwrapper'
|
66
|
+
@action = nil
|
67
|
+
@script = Rbcli::ScriptWrapper.new inline: nil, path: path, vars: vars
|
68
|
+
end
|
69
|
+
|
70
|
+
def has_function?
|
71
|
+
!(@action.nil? && @script.nil?)
|
72
|
+
end
|
73
|
+
|
74
|
+
def run! opts: nil, params: nil, args: nil, config: nil, env: nil
|
75
|
+
unless self.has_function?
|
76
|
+
raise Rbcli::CommandError.new "Command #{@name} does not have a function. An action, inline script, or external script must be defined."
|
77
|
+
end
|
78
|
+
# Rbcli.log.debug "Running command '#{@name}'", "CORE"
|
79
|
+
@action.call(opts, params, args, config, env) unless @action.nil?
|
80
|
+
@script.execute(opts, params, args, config, env) unless @script.nil?
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
module Rbcli
|
85
|
+
Rbcli::Warehouse.set(:commands, {})
|
86
|
+
|
87
|
+
def self.command name, & block
|
88
|
+
name = name.to_s.downcase
|
89
|
+
raise Rbcli::CommandError.new "The command #{name} cannot be defined twice." if Rbcli::Warehouse.get(:commands).key? name
|
90
|
+
command = Rbcli::Command.new(name)
|
91
|
+
command.instance_eval(&block)
|
92
|
+
unless command.has_function?
|
93
|
+
raise Rbcli::CommandError.new "Command #{command.name} does not have a function. An action, inline script, or external script must be defined."
|
94
|
+
end
|
95
|
+
if command.default? && Rbcli::Warehouse.get(:commands).any? { |cmd| cmd.default? }
|
96
|
+
raise Rbcli::CommandError.new "Only one command may be assigned as default"
|
97
|
+
end
|
98
|
+
Rbcli::Warehouse.get(:commands)[name] = command
|
99
|
+
|
100
|
+
## The first time a command is declared the engine gets primed to run commands
|
101
|
+
Rbcli::Engine.register_operation(Proc.new {
|
102
|
+
if Rbcli::Warehouse.get(:commands).empty?
|
103
|
+
raise Rbcli::CommandError.new "No commands defined. At least one command must be declared to use Rbcli."
|
104
|
+
end
|
105
|
+
cmd_to_run = Rbcli::Warehouse.get(:command, :parsedopts)
|
106
|
+
if cmd_to_run.nil?
|
107
|
+
Rbcli.log.debug "No command specified and no default set. Skipping execution.", "CORE"
|
108
|
+
break
|
109
|
+
end
|
110
|
+
Rbcli.log.debug "Running command '#{cmd_to_run.name}'", "CORE"
|
111
|
+
cmd_to_run.run!(
|
112
|
+
opts: Rbcli::Warehouse.get(:opts, :parsedopts),
|
113
|
+
params: Rbcli::Warehouse.get(:params, :parsedopts),
|
114
|
+
args: Rbcli::Warehouse.get(:args, :parsedopts),
|
115
|
+
config: Rbcli::Warehouse.get(:config, :parsedopts) || Rbcli::ConfigOfDeath.new,
|
116
|
+
env: Rbcli::Warehouse.get(:env, :parsedopts) || Rbcli::ConfigOfDeath.new
|
117
|
+
)
|
118
|
+
}, name: :run_command, priority: 100) if Rbcli::Warehouse.get(:commands).count == 1
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
Rbcli.command "<%= @command_name || 'example' %>" do
|
2
|
+
<%- if @showdocs -%>
|
3
|
+
##### Command Declaration (At least one is required) #####
|
4
|
+
# default (Optional) The default command is run when no other commands are called on the CLI
|
5
|
+
# Note that parameters are not available for default commands, as all CLI options
|
6
|
+
# are parsed against the global-level ones declared in the `Configurate.opts` block
|
7
|
+
# description (Optional) Short description that shows up in --help for the executable
|
8
|
+
# usage (Optional) Usage text that shows up in --help or when CLI format is bad
|
9
|
+
# helptext (Optional) Large help text that shows up in --help for the command
|
10
|
+
<%- end -%>
|
11
|
+
default
|
12
|
+
description 'Example command'
|
13
|
+
usage "[--param|--otherparam] name"
|
14
|
+
helptext <<~EOF
|
15
|
+
Big block of helptext
|
16
|
+
EOF
|
17
|
+
<%- if @showdocs -%>
|
18
|
+
# parameter (Optinoal) Parameters follow the same format as CLI Options, but are only available for this command
|
19
|
+
<%- end -%>
|
20
|
+
parameter :param, 'A Parameter', default: false
|
21
|
+
parameter :otherparam, 'Another Parameter', type: :string, default: "Default value"
|
22
|
+
<%- if @showdocs -%>
|
23
|
+
# action (Required, unless declaring a `script`) The action block is code that gets executed when the command is called
|
24
|
+
# Sending all output through the logger is recommended. For it to be displayed
|
25
|
+
# as regular text, set the logger to the :display format
|
26
|
+
<%- end -%>
|
27
|
+
action do |opts, params, args, config, env|
|
28
|
+
Rbcli.log.info "Welcome to your new application!"
|
29
|
+
<%- if @showdocs -%>
|
30
|
+
Rbcli.log.info "We like to send all of our output through the logger for easy formatting and deployment..."
|
31
|
+
puts "...but you don't have to"
|
32
|
+
Rbcli.log.info "Here's a quick demo of how to use the framework:\n"
|
33
|
+
|
34
|
+
Rbcli.log.info "Top-level CLI Options: " + opts.to_s
|
35
|
+
Rbcli.log.info "Parameters: " + params.to_s
|
36
|
+
Rbcli.log.info "Arguments on the CLI: " + args.to_s
|
37
|
+
Rbcli.log.info "The config: " + config.to_s
|
38
|
+
Rbcli.log.info "Environment variables: " + env.to_s
|
39
|
+
Rbcli.log.info ""
|
40
|
+
|
41
|
+
Rbcli.log.debug "Example Debug Message (change your log level to see this!)", "MYAPP"
|
42
|
+
Rbcli.log.info "Example Info Message", "MYAPP"
|
43
|
+
Rbcli.log.warn "Example Warning Message", "MYAPP"
|
44
|
+
Rbcli.log.error "Example Error Message", "MYAPP"
|
45
|
+
Rbcli.log.fatal "Example Fatal Message", "MYAPP"
|
46
|
+
Rbcli.log.unknown "Example Unknown Message", "MYAPP"
|
47
|
+
Rbcli.log.info ""
|
48
|
+
|
49
|
+
config[:davey] = 'Davey Jones'.compress
|
50
|
+
Rbcli.log.info "Compressed String: " + config[:davey]
|
51
|
+
Rbcli.log.info "Decompressed String: " + config[:davey].decompress
|
52
|
+
config.save!
|
53
|
+
<%- end -%>
|
54
|
+
end
|
55
|
+
end
|