rbcli 0.3.0 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/Gemfile.lock +55 -51
- data/README.md +2 -2
- data/docs/404.html +8 -8
- data/docs/advanced/automatic_updates/index.html +28 -28
- data/docs/advanced/command_types/index.html +35 -35
- data/docs/advanced/distributed_state_locking/index.html +28 -28
- data/docs/advanced/hooks/index.html +30 -30
- data/docs/advanced/index.html +26 -26
- data/docs/advanced/index.xml +2 -6
- data/docs/advanced/interactive_commands/index.html +29 -29
- data/docs/advanced/logging/index.html +32 -32
- data/docs/advanced/remote_execution/index.html +31 -31
- data/docs/advanced/state_storage/index.html +30 -30
- data/docs/advanced/user_config_files/index.html +28 -28
- data/docs/categories/index.html +26 -26
- data/docs/categories/index.xml +2 -6
- data/docs/development/changelog/index.html +53 -40
- data/docs/development/code_of_conduct/index.html +27 -27
- data/docs/development/contributing/index.html +32 -32
- data/docs/development/index.html +26 -26
- data/docs/development/index.xml +3 -7
- data/docs/development/license/index.html +26 -26
- data/docs/index.html +26 -26
- data/docs/index.json +3 -3
- data/docs/index.xml +3 -7
- data/docs/quick_reference/index.html +39 -39
- data/docs/quick_reference/index.xml +2 -6
- data/docs/sitemap.xml +26 -78
- data/docs/tags/index.html +26 -26
- data/docs/tags/index.xml +2 -6
- data/docs/tutorial/10-getting_started/index.html +29 -29
- data/docs/tutorial/20-project_layout/index.html +29 -29
- data/docs/tutorial/30-your_first_command/index.html +32 -32
- data/docs/tutorial/40-options_parameters_and_arguments/index.html +41 -41
- data/docs/tutorial/50-publishing/index.html +27 -27
- data/docs/tutorial/index.html +26 -26
- data/docs/tutorial/index.xml +2 -6
- data/docs/whoami/index.html +26 -26
- data/docs/whoami/index.xml +2 -6
- data/docs-src/content/development/changelog.md +9 -0
- data/docs-src/content/quick_reference/_index.md +2 -2
- data/exe/rbcli +1 -1
- data/lib/rbcli/configuration/configurate.rb +1 -1
- data/lib/rbcli/engine/command.rb +2 -1
- data/lib/rbcli/engine/load_project.rb +1 -1
- data/lib/rbcli/features/userconfig.rb +3 -3
- data/lib/rbcli/state_storage/localstate.rb +1 -1
- data/lib/rbcli/version.rb +1 -1
- data/lib/rbcli-tool/generators.rb +3 -3
- data/lib/rbcli-tool/mdless_fix.rb +1 -1
- data/lib/rbcli-tool/project.rb +3 -3
- data/lib/rbcli-tool/util.rb +2 -2
- data/rbcli.gemspec +11 -13
- data/skeletons/project/application/commands/scripts/script.sh +6 -1
- data/skeletons/project/untitled.gemspec +3 -3
- metadata +32 -32
@@ -3,7 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
-
<meta name="generator" content="Hugo 0.
|
6
|
+
<meta name="generator" content="Hugo 0.88.1" />
|
7
7
|
<meta name="description" content="">
|
8
8
|
|
9
9
|
|
@@ -12,21 +12,21 @@
|
|
12
12
|
<title>Getting Started :: RBCli Documentation</title>
|
13
13
|
|
14
14
|
|
15
|
-
<link href="/rbcli/css/nucleus.css?
|
16
|
-
<link href="/rbcli/css/fontawesome-all.min.css?
|
17
|
-
<link href="/rbcli/css/hybrid.css?
|
18
|
-
<link href="/rbcli/css/featherlight.min.css?
|
19
|
-
<link href="/rbcli/css/perfect-scrollbar.min.css?
|
20
|
-
<link href="/rbcli/css/auto-complete.css?
|
21
|
-
<link href="/rbcli/css/atom-one-dark-reasonable.css?
|
22
|
-
<link href="/rbcli/css/theme.css?
|
23
|
-
<link href="/rbcli/css/hugo-theme.css?
|
15
|
+
<link href="/rbcli/css/nucleus.css?1634703589" rel="stylesheet">
|
16
|
+
<link href="/rbcli/css/fontawesome-all.min.css?1634703589" rel="stylesheet">
|
17
|
+
<link href="/rbcli/css/hybrid.css?1634703589" rel="stylesheet">
|
18
|
+
<link href="/rbcli/css/featherlight.min.css?1634703589" rel="stylesheet">
|
19
|
+
<link href="/rbcli/css/perfect-scrollbar.min.css?1634703589" rel="stylesheet">
|
20
|
+
<link href="/rbcli/css/auto-complete.css?1634703589" rel="stylesheet">
|
21
|
+
<link href="/rbcli/css/atom-one-dark-reasonable.css?1634703589" rel="stylesheet">
|
22
|
+
<link href="/rbcli/css/theme.css?1634703589" rel="stylesheet">
|
23
|
+
<link href="/rbcli/css/hugo-theme.css?1634703589" rel="stylesheet">
|
24
24
|
|
25
|
-
<link href="/rbcli/css/theme-blue.css?
|
25
|
+
<link href="/rbcli/css/theme-blue.css?1634703589" rel="stylesheet">
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
<script src="/rbcli/js/jquery-3.3.1.min.js?
|
29
|
+
<script src="/rbcli/js/jquery-3.3.1.min.js?1634703589"></script>
|
30
30
|
|
31
31
|
<style>
|
32
32
|
:root #header + #content > #left > #rlblock_left{
|
@@ -55,14 +55,14 @@
|
|
55
55
|
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
56
56
|
</div>
|
57
57
|
|
58
|
-
<script type="text/javascript" src="/rbcli/js/lunr.min.js?
|
59
|
-
<script type="text/javascript" src="/rbcli/js/auto-complete.js?
|
58
|
+
<script type="text/javascript" src="/rbcli/js/lunr.min.js?1634703589"></script>
|
59
|
+
<script type="text/javascript" src="/rbcli/js/auto-complete.js?1634703589"></script>
|
60
60
|
<script type="text/javascript">
|
61
61
|
|
62
62
|
var baseurl = "https:\/\/akhoury6.github.io\/rbcli\/";
|
63
63
|
|
64
64
|
</script>
|
65
|
-
<script type="text/javascript" src="/rbcli/js/search.js?
|
65
|
+
<script type="text/javascript" src="/rbcli/js/search.js?1634703589"></script>
|
66
66
|
|
67
67
|
|
68
68
|
</div>
|
@@ -712,11 +712,11 @@
|
|
712
712
|
<p>RBCli officially supports Ruby versions 2.5.0 and above. It may work on earlier releases even though we haven’t tested them. If you do try it find any bugs that break compatibility, feel free to submit a github issue or pull request.</p>
|
713
713
|
<h2 id="installation">Installation</h2>
|
714
714
|
<p>RBCli is available on rubygems.org. You can add it to your application’s <code>Gemfile</code> or <code>gemspec</code>, or install it manually by running:</p>
|
715
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">gem install rbcli
|
715
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">gem install rbcli
|
716
716
|
</code></pre></div><p>Then, <code>cd</code> to the folder you’d like to create your project under and run:</p>
|
717
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli init -n mytool -d <span style="color:#e6db74">"A simple CLI tool"</span>
|
717
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli init -n mytool -d <span style="color:#e6db74">"A simple CLI tool"</span>
|
718
718
|
</code></pre></div><p>where <code>mytool</code> can be replaced with any other command name you’d like. You should then see some output about generating a bunch of files. Once it finishes, run:</p>
|
719
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd mytool
|
719
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd mytool
|
720
720
|
ls -ahl
|
721
721
|
</code></pre></div><p>Congratulations! This is the beginning of your first project.</p>
|
722
722
|
<h2 id="next-steps">Next Steps</h2>
|
@@ -1151,19 +1151,19 @@ ls -ahl
|
|
1151
1151
|
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
1152
1152
|
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
1153
1153
|
</div>
|
1154
|
-
<script src="/rbcli/js/clipboard.min.js?
|
1155
|
-
<script src="/rbcli/js/perfect-scrollbar.min.js?
|
1156
|
-
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?
|
1157
|
-
<script src="/rbcli/js/jquery.sticky.js?
|
1158
|
-
<script src="/rbcli/js/featherlight.min.js?
|
1159
|
-
<script src="/rbcli/js/highlight.pack.js?
|
1154
|
+
<script src="/rbcli/js/clipboard.min.js?1634703589"></script>
|
1155
|
+
<script src="/rbcli/js/perfect-scrollbar.min.js?1634703589"></script>
|
1156
|
+
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1634703589"></script>
|
1157
|
+
<script src="/rbcli/js/jquery.sticky.js?1634703589"></script>
|
1158
|
+
<script src="/rbcli/js/featherlight.min.js?1634703589"></script>
|
1159
|
+
<script src="/rbcli/js/highlight.pack.js?1634703589"></script>
|
1160
1160
|
<script>hljs.initHighlightingOnLoad();</script>
|
1161
|
-
<script src="/rbcli/js/modernizr.custom-3.6.0.js?
|
1162
|
-
<script src="/rbcli/js/learn.js?
|
1163
|
-
<script src="/rbcli/js/hugo-learn.js?
|
1161
|
+
<script src="/rbcli/js/modernizr.custom-3.6.0.js?1634703589"></script>
|
1162
|
+
<script src="/rbcli/js/learn.js?1634703589"></script>
|
1163
|
+
<script src="/rbcli/js/hugo-learn.js?1634703589"></script>
|
1164
1164
|
|
1165
|
-
<link href="/rbcli/mermaid/mermaid.css?
|
1166
|
-
<script src="/rbcli/mermaid/mermaid.js?
|
1165
|
+
<link href="/rbcli/mermaid/mermaid.css?1634703589" rel="stylesheet" />
|
1166
|
+
<script src="/rbcli/mermaid/mermaid.js?1634703589"></script>
|
1167
1167
|
<script>
|
1168
1168
|
mermaid.initialize({ startOnLoad: true });
|
1169
1169
|
</script>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
-
<meta name="generator" content="Hugo 0.
|
6
|
+
<meta name="generator" content="Hugo 0.88.1" />
|
7
7
|
<meta name="description" content="">
|
8
8
|
|
9
9
|
|
@@ -12,21 +12,21 @@
|
|
12
12
|
<title>The Project Layout :: RBCli Documentation</title>
|
13
13
|
|
14
14
|
|
15
|
-
<link href="/rbcli/css/nucleus.css?
|
16
|
-
<link href="/rbcli/css/fontawesome-all.min.css?
|
17
|
-
<link href="/rbcli/css/hybrid.css?
|
18
|
-
<link href="/rbcli/css/featherlight.min.css?
|
19
|
-
<link href="/rbcli/css/perfect-scrollbar.min.css?
|
20
|
-
<link href="/rbcli/css/auto-complete.css?
|
21
|
-
<link href="/rbcli/css/atom-one-dark-reasonable.css?
|
22
|
-
<link href="/rbcli/css/theme.css?
|
23
|
-
<link href="/rbcli/css/hugo-theme.css?
|
15
|
+
<link href="/rbcli/css/nucleus.css?1634703589" rel="stylesheet">
|
16
|
+
<link href="/rbcli/css/fontawesome-all.min.css?1634703589" rel="stylesheet">
|
17
|
+
<link href="/rbcli/css/hybrid.css?1634703589" rel="stylesheet">
|
18
|
+
<link href="/rbcli/css/featherlight.min.css?1634703589" rel="stylesheet">
|
19
|
+
<link href="/rbcli/css/perfect-scrollbar.min.css?1634703589" rel="stylesheet">
|
20
|
+
<link href="/rbcli/css/auto-complete.css?1634703589" rel="stylesheet">
|
21
|
+
<link href="/rbcli/css/atom-one-dark-reasonable.css?1634703589" rel="stylesheet">
|
22
|
+
<link href="/rbcli/css/theme.css?1634703589" rel="stylesheet">
|
23
|
+
<link href="/rbcli/css/hugo-theme.css?1634703589" rel="stylesheet">
|
24
24
|
|
25
|
-
<link href="/rbcli/css/theme-blue.css?
|
25
|
+
<link href="/rbcli/css/theme-blue.css?1634703589" rel="stylesheet">
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
<script src="/rbcli/js/jquery-3.3.1.min.js?
|
29
|
+
<script src="/rbcli/js/jquery-3.3.1.min.js?1634703589"></script>
|
30
30
|
|
31
31
|
<style>
|
32
32
|
:root #header + #content > #left > #rlblock_left{
|
@@ -55,14 +55,14 @@
|
|
55
55
|
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
56
56
|
</div>
|
57
57
|
|
58
|
-
<script type="text/javascript" src="/rbcli/js/lunr.min.js?
|
59
|
-
<script type="text/javascript" src="/rbcli/js/auto-complete.js?
|
58
|
+
<script type="text/javascript" src="/rbcli/js/lunr.min.js?1634703589"></script>
|
59
|
+
<script type="text/javascript" src="/rbcli/js/auto-complete.js?1634703589"></script>
|
60
60
|
<script type="text/javascript">
|
61
61
|
|
62
62
|
var baseurl = "https:\/\/akhoury6.github.io\/rbcli\/";
|
63
63
|
|
64
64
|
</script>
|
65
|
-
<script type="text/javascript" src="/rbcli/js/search.js?
|
65
|
+
<script type="text/javascript" src="/rbcli/js/search.js?1634703589"></script>
|
66
66
|
|
67
67
|
|
68
68
|
</div>
|
@@ -722,19 +722,19 @@
|
|
722
722
|
</ul>
|
723
723
|
<h3 id="project-mode">Project Mode</h3>
|
724
724
|
<p>If you’ve been following along with the tutorial, you’ve already seen Project Mode. An RBCli Project consists of several folders, each of which has a specific function. The RBCli framework handles loading and parsing the code automatically. To generate a standard, full-featured RBCli project, run:</p>
|
725
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli init -n mytool
|
725
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli init -n mytool
|
726
726
|
</code></pre></div><p>where <code>mytool</code> can be replaced with any other command name you’d like. (We will continue using <code>mytool</code> in this tutorial though!)</p>
|
727
727
|
<p>Inside the newly created <code>mytool</code> folder you will see a bunch of files and folders related to your project. We will go over the structure later.</p>
|
728
728
|
<h3 id="mini--micro-modes">Mini & Micro Modes</h3>
|
729
729
|
<p>If you need to write a CLI tool but project mode feels a bit overkill for you – if you think a single-file script is all that is needed – that’s where the Mini and Micro modes come in. Instead of generating a full directory tree, you get only a single file that contains most of the functionality of RBCli. To use it, run:</p>
|
730
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli init -n mytool -t mini
|
730
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli init -n mytool -t mini
|
731
731
|
<span style="color:#75715e"># or</span>
|
732
732
|
rbcli init -n mytool -t micro
|
733
733
|
</code></pre></div><p>The only difference between the two is that <code>mini</code> will show you all available options and some documentation to help you, while <code>micro</code> is for advanced users who just want the samllest file possible.</p>
|
734
734
|
<p>As far as documentation goes, every piece of code present in those files is identical to Project mode so it should be pretty easy to navigate.</p>
|
735
735
|
<h2 id="project-mode-structure">Project Mode Structure</h2>
|
736
736
|
<p>An RBCli project has the following structure:</p>
|
737
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-text" data-lang="text"><name>/
|
737
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-text" data-lang="text"><name>/
|
738
738
|
|--- application/
|
739
739
|
| |--- commands/
|
740
740
|
| | |--- scripts/
|
@@ -1276,19 +1276,19 @@ rbcli init -n mytool -t micro
|
|
1276
1276
|
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
1277
1277
|
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
1278
1278
|
</div>
|
1279
|
-
<script src="/rbcli/js/clipboard.min.js?
|
1280
|
-
<script src="/rbcli/js/perfect-scrollbar.min.js?
|
1281
|
-
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?
|
1282
|
-
<script src="/rbcli/js/jquery.sticky.js?
|
1283
|
-
<script src="/rbcli/js/featherlight.min.js?
|
1284
|
-
<script src="/rbcli/js/highlight.pack.js?
|
1279
|
+
<script src="/rbcli/js/clipboard.min.js?1634703589"></script>
|
1280
|
+
<script src="/rbcli/js/perfect-scrollbar.min.js?1634703589"></script>
|
1281
|
+
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1634703589"></script>
|
1282
|
+
<script src="/rbcli/js/jquery.sticky.js?1634703589"></script>
|
1283
|
+
<script src="/rbcli/js/featherlight.min.js?1634703589"></script>
|
1284
|
+
<script src="/rbcli/js/highlight.pack.js?1634703589"></script>
|
1285
1285
|
<script>hljs.initHighlightingOnLoad();</script>
|
1286
|
-
<script src="/rbcli/js/modernizr.custom-3.6.0.js?
|
1287
|
-
<script src="/rbcli/js/learn.js?
|
1288
|
-
<script src="/rbcli/js/hugo-learn.js?
|
1286
|
+
<script src="/rbcli/js/modernizr.custom-3.6.0.js?1634703589"></script>
|
1287
|
+
<script src="/rbcli/js/learn.js?1634703589"></script>
|
1288
|
+
<script src="/rbcli/js/hugo-learn.js?1634703589"></script>
|
1289
1289
|
|
1290
|
-
<link href="/rbcli/mermaid/mermaid.css?
|
1291
|
-
<script src="/rbcli/mermaid/mermaid.js?
|
1290
|
+
<link href="/rbcli/mermaid/mermaid.css?1634703589" rel="stylesheet" />
|
1291
|
+
<script src="/rbcli/mermaid/mermaid.js?1634703589"></script>
|
1292
1292
|
<script>
|
1293
1293
|
mermaid.initialize({ startOnLoad: true });
|
1294
1294
|
</script>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
-
<meta name="generator" content="Hugo 0.
|
6
|
+
<meta name="generator" content="Hugo 0.88.1" />
|
7
7
|
<meta name="description" content="">
|
8
8
|
|
9
9
|
|
@@ -12,21 +12,21 @@
|
|
12
12
|
<title>Your First Command :: RBCli Documentation</title>
|
13
13
|
|
14
14
|
|
15
|
-
<link href="/rbcli/css/nucleus.css?
|
16
|
-
<link href="/rbcli/css/fontawesome-all.min.css?
|
17
|
-
<link href="/rbcli/css/hybrid.css?
|
18
|
-
<link href="/rbcli/css/featherlight.min.css?
|
19
|
-
<link href="/rbcli/css/perfect-scrollbar.min.css?
|
20
|
-
<link href="/rbcli/css/auto-complete.css?
|
21
|
-
<link href="/rbcli/css/atom-one-dark-reasonable.css?
|
22
|
-
<link href="/rbcli/css/theme.css?
|
23
|
-
<link href="/rbcli/css/hugo-theme.css?
|
15
|
+
<link href="/rbcli/css/nucleus.css?1634703589" rel="stylesheet">
|
16
|
+
<link href="/rbcli/css/fontawesome-all.min.css?1634703589" rel="stylesheet">
|
17
|
+
<link href="/rbcli/css/hybrid.css?1634703589" rel="stylesheet">
|
18
|
+
<link href="/rbcli/css/featherlight.min.css?1634703589" rel="stylesheet">
|
19
|
+
<link href="/rbcli/css/perfect-scrollbar.min.css?1634703589" rel="stylesheet">
|
20
|
+
<link href="/rbcli/css/auto-complete.css?1634703589" rel="stylesheet">
|
21
|
+
<link href="/rbcli/css/atom-one-dark-reasonable.css?1634703589" rel="stylesheet">
|
22
|
+
<link href="/rbcli/css/theme.css?1634703589" rel="stylesheet">
|
23
|
+
<link href="/rbcli/css/hugo-theme.css?1634703589" rel="stylesheet">
|
24
24
|
|
25
|
-
<link href="/rbcli/css/theme-blue.css?
|
25
|
+
<link href="/rbcli/css/theme-blue.css?1634703589" rel="stylesheet">
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
<script src="/rbcli/js/jquery-3.3.1.min.js?
|
29
|
+
<script src="/rbcli/js/jquery-3.3.1.min.js?1634703589"></script>
|
30
30
|
|
31
31
|
<style>
|
32
32
|
:root #header + #content > #left > #rlblock_left{
|
@@ -55,14 +55,14 @@
|
|
55
55
|
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
56
56
|
</div>
|
57
57
|
|
58
|
-
<script type="text/javascript" src="/rbcli/js/lunr.min.js?
|
59
|
-
<script type="text/javascript" src="/rbcli/js/auto-complete.js?
|
58
|
+
<script type="text/javascript" src="/rbcli/js/lunr.min.js?1634703589"></script>
|
59
|
+
<script type="text/javascript" src="/rbcli/js/auto-complete.js?1634703589"></script>
|
60
60
|
<script type="text/javascript">
|
61
61
|
|
62
62
|
var baseurl = "https:\/\/akhoury6.github.io\/rbcli\/";
|
63
63
|
|
64
64
|
</script>
|
65
|
-
<script type="text/javascript" src="/rbcli/js/search.js?
|
65
|
+
<script type="text/javascript" src="/rbcli/js/search.js?1634703589"></script>
|
66
66
|
|
67
67
|
|
68
68
|
</div>
|
@@ -708,20 +708,20 @@
|
|
708
708
|
|
709
709
|
<h2 id="creating-the-command">Creating the Command</h2>
|
710
710
|
<p>Creating the command is straightforward:</p>
|
711
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli command --name<span style="color:#f92672">=</span>list
|
711
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">rbcli command --name<span style="color:#f92672">=</span>list
|
712
712
|
<span style="color:#75715e">#or</span>
|
713
713
|
rbcli command -n list
|
714
714
|
</code></pre></div><p>And there you have it! Now you can try out your command by typing:</p>
|
715
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./exe/mytool list
|
715
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./exe/mytool list
|
716
716
|
</code></pre></div><p>Congrats! You should now see a generic output listing the values of several variables. We’ll get into what they mean in a bit, but first, let’s make the tool’s execution a bit easier.</p>
|
717
717
|
<p>Now that you know your way around a project, its time to create your first command! But before we do, let’s make development just a little bit easier. Go to the base directory of the folder and type:</p>
|
718
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">alias mytool<span style="color:#f92672">=</span><span style="color:#e6db74">"</span><span style="color:#66d9ef">$(</span>pwd<span style="color:#66d9ef">)</span><span style="color:#e6db74">/exe/mytool"</span>
|
718
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">alias mytool<span style="color:#f92672">=</span><span style="color:#e6db74">"</span><span style="color:#66d9ef">$(</span>pwd<span style="color:#66d9ef">)</span><span style="color:#e6db74">/exe/mytool"</span>
|
719
719
|
</code></pre></div><p>And now you’ll be able to execute your application as if it was already installed as a gem, without worrying about the working path. You can see this in action by running your application again, but without the path:</p>
|
720
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool list
|
720
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool list
|
721
721
|
</code></pre></div><p>So, now let’s take a more in-dpeth look at what the command code looks like.</p>
|
722
722
|
<h2 id="the-command-declaration">The Command Declaration</h2>
|
723
723
|
<p>As mentioned in the previous section, you can find your commands listed under the <code>application/commands/</code> directory. Each command will appear as its own unique file with some base code to work from. Let’s take a look at that code a little more in-depth:</p>
|
724
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">List</span> <span style="color:#f92672"><</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span> <span style="color:#75715e"># Declare a new command by subclassing Rbcli::Command</span>
|
724
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">List</span> <span style="color:#f92672"><</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span> <span style="color:#75715e"># Declare a new command by subclassing Rbcli::Command</span>
|
725
725
|
description <span style="color:#e6db74">'TODO: Description goes here'</span> <span style="color:#75715e"># (Required) Short description for the global help</span>
|
726
726
|
usage <span style="color:#e6db74"><<-EOF
|
727
727
|
</span><span style="color:#e6db74"></span><span style="color:#e6db74">TODO</span>: <span style="color:#66d9ef">Usage</span> text goes here
|
@@ -773,7 +773,7 @@ rbcli command -n list
|
|
773
773
|
<p>There is an additional declaration not shown here, <code>extern</code>. You can find more information on it in the section on <a href="/rbcli/advanced/command_types/">Advanced Command Types</a></p>
|
774
774
|
<h2 id="creating-the-list-command">Creating the “list” Command</h2>
|
775
775
|
<p>Now we’re going to modify this command to list the contents of the current directory to the terminal. So let’s change the code in that file to:</p>
|
776
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">List</span> <span style="color:#f92672"><</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span>
|
776
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">List</span> <span style="color:#f92672"><</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span>
|
777
777
|
description <span style="color:#e6db74">%q{List files in current directory}</span>
|
778
778
|
usage <span style="color:#e6db74"><<-EOF
|
779
779
|
</span><span style="color:#e6db74"></span><span style="color:#66d9ef">Ever</span> wanted to see your files?
|
@@ -1240,19 +1240,19 @@ rbcli command -n list
|
|
1240
1240
|
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
1241
1241
|
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
1242
1242
|
</div>
|
1243
|
-
<script src="/rbcli/js/clipboard.min.js?
|
1244
|
-
<script src="/rbcli/js/perfect-scrollbar.min.js?
|
1245
|
-
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?
|
1246
|
-
<script src="/rbcli/js/jquery.sticky.js?
|
1247
|
-
<script src="/rbcli/js/featherlight.min.js?
|
1248
|
-
<script src="/rbcli/js/highlight.pack.js?
|
1243
|
+
<script src="/rbcli/js/clipboard.min.js?1634703589"></script>
|
1244
|
+
<script src="/rbcli/js/perfect-scrollbar.min.js?1634703589"></script>
|
1245
|
+
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1634703589"></script>
|
1246
|
+
<script src="/rbcli/js/jquery.sticky.js?1634703589"></script>
|
1247
|
+
<script src="/rbcli/js/featherlight.min.js?1634703589"></script>
|
1248
|
+
<script src="/rbcli/js/highlight.pack.js?1634703589"></script>
|
1249
1249
|
<script>hljs.initHighlightingOnLoad();</script>
|
1250
|
-
<script src="/rbcli/js/modernizr.custom-3.6.0.js?
|
1251
|
-
<script src="/rbcli/js/learn.js?
|
1252
|
-
<script src="/rbcli/js/hugo-learn.js?
|
1250
|
+
<script src="/rbcli/js/modernizr.custom-3.6.0.js?1634703589"></script>
|
1251
|
+
<script src="/rbcli/js/learn.js?1634703589"></script>
|
1252
|
+
<script src="/rbcli/js/hugo-learn.js?1634703589"></script>
|
1253
1253
|
|
1254
|
-
<link href="/rbcli/mermaid/mermaid.css?
|
1255
|
-
<script src="/rbcli/mermaid/mermaid.js?
|
1254
|
+
<link href="/rbcli/mermaid/mermaid.css?1634703589" rel="stylesheet" />
|
1255
|
+
<script src="/rbcli/mermaid/mermaid.js?1634703589"></script>
|
1256
1256
|
<script>
|
1257
1257
|
mermaid.initialize({ startOnLoad: true });
|
1258
1258
|
</script>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
-
<meta name="generator" content="Hugo 0.
|
6
|
+
<meta name="generator" content="Hugo 0.88.1" />
|
7
7
|
<meta name="description" content="">
|
8
8
|
|
9
9
|
|
@@ -12,21 +12,21 @@
|
|
12
12
|
<title>Options, Parameters, and Arguments :: RBCli Documentation</title>
|
13
13
|
|
14
14
|
|
15
|
-
<link href="/rbcli/css/nucleus.css?
|
16
|
-
<link href="/rbcli/css/fontawesome-all.min.css?
|
17
|
-
<link href="/rbcli/css/hybrid.css?
|
18
|
-
<link href="/rbcli/css/featherlight.min.css?
|
19
|
-
<link href="/rbcli/css/perfect-scrollbar.min.css?
|
20
|
-
<link href="/rbcli/css/auto-complete.css?
|
21
|
-
<link href="/rbcli/css/atom-one-dark-reasonable.css?
|
22
|
-
<link href="/rbcli/css/theme.css?
|
23
|
-
<link href="/rbcli/css/hugo-theme.css?
|
15
|
+
<link href="/rbcli/css/nucleus.css?1634703589" rel="stylesheet">
|
16
|
+
<link href="/rbcli/css/fontawesome-all.min.css?1634703589" rel="stylesheet">
|
17
|
+
<link href="/rbcli/css/hybrid.css?1634703589" rel="stylesheet">
|
18
|
+
<link href="/rbcli/css/featherlight.min.css?1634703589" rel="stylesheet">
|
19
|
+
<link href="/rbcli/css/perfect-scrollbar.min.css?1634703589" rel="stylesheet">
|
20
|
+
<link href="/rbcli/css/auto-complete.css?1634703589" rel="stylesheet">
|
21
|
+
<link href="/rbcli/css/atom-one-dark-reasonable.css?1634703589" rel="stylesheet">
|
22
|
+
<link href="/rbcli/css/theme.css?1634703589" rel="stylesheet">
|
23
|
+
<link href="/rbcli/css/hugo-theme.css?1634703589" rel="stylesheet">
|
24
24
|
|
25
|
-
<link href="/rbcli/css/theme-blue.css?
|
25
|
+
<link href="/rbcli/css/theme-blue.css?1634703589" rel="stylesheet">
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
<script src="/rbcli/js/jquery-3.3.1.min.js?
|
29
|
+
<script src="/rbcli/js/jquery-3.3.1.min.js?1634703589"></script>
|
30
30
|
|
31
31
|
<style>
|
32
32
|
:root #header + #content > #left > #rlblock_left{
|
@@ -55,14 +55,14 @@
|
|
55
55
|
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
56
56
|
</div>
|
57
57
|
|
58
|
-
<script type="text/javascript" src="/rbcli/js/lunr.min.js?
|
59
|
-
<script type="text/javascript" src="/rbcli/js/auto-complete.js?
|
58
|
+
<script type="text/javascript" src="/rbcli/js/lunr.min.js?1634703589"></script>
|
59
|
+
<script type="text/javascript" src="/rbcli/js/auto-complete.js?1634703589"></script>
|
60
60
|
<script type="text/javascript">
|
61
61
|
|
62
62
|
var baseurl = "https:\/\/akhoury6.github.io\/rbcli\/";
|
63
63
|
|
64
64
|
</script>
|
65
|
-
<script type="text/javascript" src="/rbcli/js/search.js?
|
65
|
+
<script type="text/javascript" src="/rbcli/js/search.js?1634703589"></script>
|
66
66
|
|
67
67
|
|
68
68
|
</div>
|
@@ -715,7 +715,7 @@
|
|
715
715
|
<p>If you’re already an experienced coder, you can jump to the last section of this document, the <a href="#simplified-reference-tldr">Simplified Reference (TLDR)</a></p>
|
716
716
|
<h2 id="command-line-structure">Command Line Structure</h2>
|
717
717
|
<p>In the previous section, you saw two parts of the RBCli command line structure - the executable followed by the command. However, RBCli is capable of more complex interaction. The structure is as follows:</p>
|
718
|
-
<pre><code>toolname [options] command [parameters] argument1 argument2...
|
718
|
+
<pre tabindex="0"><code>toolname [options] command [parameters] argument1 argument2...
|
719
719
|
</code></pre><ul>
|
720
720
|
<li><strong>Options</strong> are command line parameters such as <code>-f</code>, or <code>--force</code>. These are available globally to every command. You can create your own, though several are already built-in and reserved for RBCli:
|
721
721
|
<ul>
|
@@ -730,18 +730,18 @@
|
|
730
730
|
<li><strong>Arguments</strong> are strings that don’t begin with a ‘-’, and are passed to the command’s code as an array. These can be used as subcommands or additional parameters for your command.</li>
|
731
731
|
</ul>
|
732
732
|
<p>So a valid command could look something like these:</p>
|
733
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mytool -n load --filename<span style="color:#f92672">=</span>foo.txt
|
733
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mytool -n load --filename<span style="color:#f92672">=</span>foo.txt
|
734
734
|
mytool parse foo.txt
|
735
735
|
mytool show -l
|
736
736
|
</code></pre></div><p>Note that all options and parameters will have both a short and long version of the parameter available for use.</p>
|
737
737
|
<p>So let’s take a look at how we define them.</p>
|
738
738
|
<h2 id="options">Options</h2>
|
739
739
|
<p>You can find the options declarations under <code>application/options.rb</code>. You’ll see the example in the code:</p>
|
740
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">option <span style="color:#e6db74">:name</span>, <span style="color:#e6db74">'Give me your name'</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'n'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:string</span>, <span style="color:#e6db74">default</span>: <span style="color:#e6db74">'Jack'</span>, <span style="color:#e6db74">required</span>: <span style="color:#66d9ef">false</span>, <span style="color:#e6db74">permitted</span>: <span style="color:#f92672">[</span><span style="color:#e6db74">'Jack'</span>, <span style="color:#e6db74">'Jill'</span><span style="color:#f92672">]</span>
|
740
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">option <span style="color:#e6db74">:name</span>, <span style="color:#e6db74">'Give me your name'</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'n'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:string</span>, <span style="color:#e6db74">default</span>: <span style="color:#e6db74">'Jack'</span>, <span style="color:#e6db74">required</span>: <span style="color:#66d9ef">false</span>, <span style="color:#e6db74">permitted</span>: <span style="color:#f92672">[</span><span style="color:#e6db74">'Jack'</span>, <span style="color:#e6db74">'Jill'</span><span style="color:#f92672">]</span>
|
741
741
|
</code></pre></div><p>This won’t do for our tool, so let’s change it. Remember that these options will be applicable to all of our commands, so lets make it something appropriate:</p>
|
742
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">option <span style="color:#e6db74">:color</span>, <span style="color:#e6db74">'Enable color output'</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'c'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>
|
742
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">option <span style="color:#e6db74">:color</span>, <span style="color:#e6db74">'Enable color output'</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'c'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>
|
743
743
|
</code></pre></div><p>So now, let’s take advantage of this flag in our <code>list</code> command. Let’s change our block to:</p>
|
744
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"> action <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>params, args, global_opts, config<span style="color:#f92672">|</span>
|
744
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"> action <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>params, args, global_opts, config<span style="color:#f92672">|</span>
|
745
745
|
<span style="color:#66d9ef">Dir</span><span style="color:#f92672">.</span>glob <span style="color:#e6db74">"./*"</span> <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>filename<span style="color:#f92672">|</span>
|
746
746
|
outname <span style="color:#f92672">=</span> filename<span style="color:#f92672">.</span>split(<span style="color:#e6db74">'/'</span>)<span style="color:#f92672">[</span><span style="color:#ae81ff">1</span><span style="color:#f92672">]</span>
|
747
747
|
outname <span style="color:#f92672">+=</span> <span style="color:#e6db74">'/'</span> <span style="color:#66d9ef">if</span> <span style="color:#66d9ef">File</span><span style="color:#f92672">.</span>directory? filename
|
@@ -759,14 +759,14 @@ mytool show -l
|
|
759
759
|
<span style="color:#66d9ef">end</span>
|
760
760
|
<span style="color:#66d9ef">end</span>
|
761
761
|
</code></pre></div><p>Notice how we referenced the value by using <code>global_opts[:color]</code>. It’s that simple. To see it in action, run:</p>
|
762
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool -c list
|
762
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool -c list
|
763
763
|
</code></pre></div><h2 id="parameters">Parameters</h2>
|
764
764
|
<p>Parameters work the same way as options, but they are localized to only the selected command. They are declared - as you probably guessed by now - in the command’s class. So let’s add the following lines to our list command within the class declaration:</p>
|
765
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">parameter <span style="color:#e6db74">:sort</span>, <span style="color:#e6db74">'Sort output alphabetically'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>
|
765
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">parameter <span style="color:#e6db74">:sort</span>, <span style="color:#e6db74">'Sort output alphabetically'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>
|
766
766
|
parameter <span style="color:#e6db74">:all</span>, <span style="color:#e6db74">'Show hidden files'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>
|
767
767
|
parameter <span style="color:#e6db74">:directoriesfirst</span>, <span style="color:#e6db74">'Show directories on top'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>
|
768
768
|
</code></pre></div><p>And let’s modify our action block to utilize them:</p>
|
769
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"> action <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>params, args, global_opts, config<span style="color:#f92672">|</span>
|
769
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"> action <span style="color:#66d9ef">do</span> <span style="color:#f92672">|</span>params, args, global_opts, config<span style="color:#f92672">|</span>
|
770
770
|
filelist <span style="color:#f92672">=</span> <span style="color:#f92672">[]</span>
|
771
771
|
|
772
772
|
<span style="color:#75715e"># We include dotfiles if specified</span>
|
@@ -809,21 +809,21 @@ parameter <span style="color:#e6db74">:directoriesfirst</span>, <span style="col
|
|
809
809
|
puts filelist
|
810
810
|
<span style="color:#66d9ef">end</span>
|
811
811
|
</code></pre></div><p>You should be able to run it now:</p>
|
812
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool -c list -asd
|
812
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool -c list -asd
|
813
813
|
</code></pre></div><p>Note how the parameters come after the <code>list</code> command in the syntax above. As you create more commands, each will have its own unique set of parameters, while the options remain <em>before</em> the command and are available to all of them.</p>
|
814
814
|
<h3 id="user-prompting">User Prompting</h3>
|
815
815
|
<p>There is an additional option when declaring parameters to prompt the user for a value if not entered on the command line. This can be done with the <code>prompt:</code> keyword. Let’s change one of our parameters to utilize it:</p>
|
816
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">parameter <span style="color:#e6db74">:sort</span>, <span style="color:#e6db74">'Sort output alphabetically'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>, <span style="color:#e6db74">prompt</span>: <span style="color:#e6db74">"Sort output alphabetically?"</span>
|
816
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">parameter <span style="color:#e6db74">:sort</span>, <span style="color:#e6db74">'Sort output alphabetically'</span>, <span style="color:#e6db74">type</span>: <span style="color:#e6db74">:boolean</span>, <span style="color:#e6db74">default</span>: <span style="color:#66d9ef">false</span>, <span style="color:#e6db74">prompt</span>: <span style="color:#e6db74">"Sort output alphabetically?"</span>
|
817
817
|
</code></pre></div><p>Now, let’s run the tool while omitting the <code>--sort</code> parameter, as such:</p>
|
818
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool -c list -ad
|
818
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mytool -c list -ad
|
819
819
|
</code></pre></div><p>This should give you the prompt:</p>
|
820
|
-
<pre><code>Sort output alphabetically? (y/N):
|
820
|
+
<pre tabindex="0"><code>Sort output alphabetically? (y/N):
|
821
821
|
</code></pre><p>Because we set the parameter to default to <code>false</code> the default here is <code>N</code>, which is used if the user hits enter without entering a letter. If the default was set to <code>true</code>, then the <code>Y</code> would be capitalized and be the default.</p>
|
822
822
|
<p>For more information, see the documentation on <a href="/rbcli/advanced/interactive_commands/">Interactive Commands</a>.</p>
|
823
823
|
<h2 id="arguments">Arguments</h2>
|
824
824
|
<p>Lastly on the command line, there are arguments. Arguments are simply strings without the <code>-</code> character in front, and automatically get passed into an array in your applicaiton. Let’s take a look at how we can use them.</p>
|
825
825
|
<p>Unlike options and parameters, arguments require no setup. So let’s assume that we want any arguments passed to the <code>list</code> command to be filenames that you want to display, and that you can pass multiple ones. Since arguments aren’t listed automatically by the help function, this is a good example of what to put in your usage text. Let’s take a look at what our class looks like now:</p>
|
826
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">List</span> <span style="color:#f92672"><</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span>
|
826
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby"><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">List</span> <span style="color:#f92672"><</span> <span style="color:#66d9ef">Rbcli</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Command</span>
|
827
827
|
description <span style="color:#e6db74">%q{List files in current directory}</span>
|
828
828
|
usage <span style="color:#e6db74"><<-EOF
|
829
829
|
</span><span style="color:#e6db74"></span><span style="color:#66d9ef">To</span> list only specific files, you can enter filenames as arguments
|
@@ -880,12 +880,12 @@ parameter <span style="color:#e6db74">:directoriesfirst</span>, <span style="col
|
|
880
880
|
<span style="color:#66d9ef">end</span>
|
881
881
|
</code></pre></div><h2 id="simplified-reference-tldr">Simplified Reference (TLDR)</h2>
|
882
882
|
<p>RBCli enforces a CLI structure of:</p>
|
883
|
-
<pre><code>toolname [options] command [parameters] argument1 argument2...
|
883
|
+
<pre tabindex="0"><code>toolname [options] command [parameters] argument1 argument2...
|
884
884
|
</code></pre><p><strong>Options</strong> are declared in <code>application/options.rb</code> file.</p>
|
885
885
|
<p><strong>Parameters</strong> are declared in the respective command’s class declaration.</p>
|
886
886
|
<p><strong>Arguments</strong> don’t need to be declared, and are passed in as an array to your commands. It is helpful to describe the argument purpose in the <code>usage</code> text declaration so that the user can see what to do in the help.</p>
|
887
887
|
<p><strong>Options</strong> and <strong>parameters</strong> both use the same format:</p>
|
888
|
-
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">option <span style="color:#e6db74">:<</span>name<span style="color:#f92672">></span>, <span style="color:#e6db74">"<description_string>"</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'<character>'</span>, <span style="color:#e6db74">type</span>: <span style="color:#f92672"><</span>variable_type<span style="color:#f92672">></span>, <span style="color:#e6db74">default</span>: <span style="color:#f92672"><</span>default_value<span style="color:#f92672">></span>, <span style="color:#e6db74">permitted</span>: <span style="color:#f92672">[<</span>array_of_permitted_values<span style="color:#f92672">]</span>
|
888
|
+
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ruby" data-lang="ruby">option <span style="color:#e6db74">:<</span>name<span style="color:#f92672">></span>, <span style="color:#e6db74">"<description_string>"</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'<character>'</span>, <span style="color:#e6db74">type</span>: <span style="color:#f92672"><</span>variable_type<span style="color:#f92672">></span>, <span style="color:#e6db74">default</span>: <span style="color:#f92672"><</span>default_value<span style="color:#f92672">></span>, <span style="color:#e6db74">permitted</span>: <span style="color:#f92672">[<</span>array_of_permitted_values<span style="color:#f92672">]</span>
|
889
889
|
|
890
890
|
parameter <span style="color:#e6db74">:<</span>name<span style="color:#f92672">></span>, <span style="color:#e6db74">"<description_string>"</span>, <span style="color:#e6db74">short</span>: <span style="color:#e6db74">'<character>'</span>, <span style="color:#e6db74">type</span>: <span style="color:#f92672"><</span>variable_type<span style="color:#f92672">></span>, <span style="color:#e6db74">default</span>: <span style="color:#f92672"><</span>default_value<span style="color:#f92672">></span>, <span style="color:#e6db74">permitted</span>: <span style="color:#f92672">[<</span>array_of_permitted_values<span style="color:#f92672">]</span>
|
891
891
|
</code></pre></div><ul>
|
@@ -1361,19 +1361,19 @@ parameter <span style="color:#e6db74">:<</span>name<span style="color:#f92672
|
|
1361
1361
|
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
1362
1362
|
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
1363
1363
|
</div>
|
1364
|
-
<script src="/rbcli/js/clipboard.min.js?
|
1365
|
-
<script src="/rbcli/js/perfect-scrollbar.min.js?
|
1366
|
-
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?
|
1367
|
-
<script src="/rbcli/js/jquery.sticky.js?
|
1368
|
-
<script src="/rbcli/js/featherlight.min.js?
|
1369
|
-
<script src="/rbcli/js/highlight.pack.js?
|
1364
|
+
<script src="/rbcli/js/clipboard.min.js?1634703589"></script>
|
1365
|
+
<script src="/rbcli/js/perfect-scrollbar.min.js?1634703589"></script>
|
1366
|
+
<script src="/rbcli/js/perfect-scrollbar.jquery.min.js?1634703589"></script>
|
1367
|
+
<script src="/rbcli/js/jquery.sticky.js?1634703589"></script>
|
1368
|
+
<script src="/rbcli/js/featherlight.min.js?1634703589"></script>
|
1369
|
+
<script src="/rbcli/js/highlight.pack.js?1634703589"></script>
|
1370
1370
|
<script>hljs.initHighlightingOnLoad();</script>
|
1371
|
-
<script src="/rbcli/js/modernizr.custom-3.6.0.js?
|
1372
|
-
<script src="/rbcli/js/learn.js?
|
1373
|
-
<script src="/rbcli/js/hugo-learn.js?
|
1371
|
+
<script src="/rbcli/js/modernizr.custom-3.6.0.js?1634703589"></script>
|
1372
|
+
<script src="/rbcli/js/learn.js?1634703589"></script>
|
1373
|
+
<script src="/rbcli/js/hugo-learn.js?1634703589"></script>
|
1374
1374
|
|
1375
|
-
<link href="/rbcli/mermaid/mermaid.css?
|
1376
|
-
<script src="/rbcli/mermaid/mermaid.js?
|
1375
|
+
<link href="/rbcli/mermaid/mermaid.css?1634703589" rel="stylesheet" />
|
1376
|
+
<script src="/rbcli/mermaid/mermaid.js?1634703589"></script>
|
1377
1377
|
<script>
|
1378
1378
|
mermaid.initialize({ startOnLoad: true });
|
1379
1379
|
</script>
|