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