rbcli 0.1.10 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/CODE_OF_CONDUCT.md +1 -1
  4. data/Gemfile.lock +12 -12
  5. data/LICENSE.txt +674 -21
  6. data/README.md +80 -443
  7. data/bin/console +19 -0
  8. data/bin/setup +20 -0
  9. data/docs/404.html +639 -0
  10. data/docs/advanced/automatic_updates/index.html +791 -0
  11. data/docs/advanced/command_types/index.html +946 -0
  12. data/docs/advanced/distributed_state_locking/index.html +777 -0
  13. data/docs/advanced/hooks/index.html +836 -0
  14. data/docs/advanced/state_storage/index.html +957 -0
  15. data/docs/advanced/user_config_files/index.html +818 -0
  16. data/docs/assets/fonts/font-awesome.css +4 -0
  17. data/docs/assets/fonts/material-icons.css +13 -0
  18. data/docs/assets/fonts/specimen/FontAwesome.ttf +0 -0
  19. data/docs/assets/fonts/specimen/FontAwesome.woff +0 -0
  20. data/docs/assets/fonts/specimen/FontAwesome.woff2 +0 -0
  21. data/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf +0 -0
  22. data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff +0 -0
  23. data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2 +0 -0
  24. data/docs/assets/images/favicon.png +0 -0
  25. data/docs/assets/images/icons/bitbucket.1b09e088.svg +20 -0
  26. data/docs/assets/images/icons/github.f0b8504a.svg +18 -0
  27. data/docs/assets/images/icons/gitlab.6dd19c00.svg +38 -0
  28. data/docs/assets/javascripts/application.a59e2a89.js +1 -0
  29. data/docs/assets/javascripts/lunr/lunr.da.js +1 -0
  30. data/docs/assets/javascripts/lunr/lunr.de.js +1 -0
  31. data/docs/assets/javascripts/lunr/lunr.du.js +1 -0
  32. data/docs/assets/javascripts/lunr/lunr.es.js +1 -0
  33. data/docs/assets/javascripts/lunr/lunr.fi.js +1 -0
  34. data/docs/assets/javascripts/lunr/lunr.fr.js +1 -0
  35. data/docs/assets/javascripts/lunr/lunr.hu.js +1 -0
  36. data/docs/assets/javascripts/lunr/lunr.it.js +1 -0
  37. data/docs/assets/javascripts/lunr/lunr.jp.js +1 -0
  38. data/docs/assets/javascripts/lunr/lunr.multi.js +1 -0
  39. data/docs/assets/javascripts/lunr/lunr.no.js +1 -0
  40. data/docs/assets/javascripts/lunr/lunr.pt.js +1 -0
  41. data/docs/assets/javascripts/lunr/lunr.ro.js +1 -0
  42. data/docs/assets/javascripts/lunr/lunr.ru.js +1 -0
  43. data/docs/assets/javascripts/lunr/lunr.stemmer.support.js +1 -0
  44. data/docs/assets/javascripts/lunr/lunr.sv.js +1 -0
  45. data/docs/assets/javascripts/lunr/lunr.tr.js +1 -0
  46. data/docs/assets/javascripts/lunr/tinyseg.js +1 -0
  47. data/docs/assets/javascripts/modernizr.1aa3b519.js +1 -0
  48. data/docs/assets/stylesheets/application-palette.6079476c.css +2 -0
  49. data/docs/assets/stylesheets/application.ba0fd1a6.css +2 -0
  50. data/docs/development/code_of_conduct/index.html +883 -0
  51. data/docs/development/contributing/index.html +744 -0
  52. data/docs/development/license/index.html +715 -0
  53. data/docs/imported/changelog/index.html +853 -0
  54. data/docs/imported/quick_reference/index.html +1057 -0
  55. data/docs/index.html +732 -0
  56. data/docs/search/search_index.json +569 -0
  57. data/docs/sitemap.xml +93 -0
  58. data/docs/tutorial/10-getting_started/index.html +806 -0
  59. data/docs/tutorial/20-project_layout/index.html +972 -0
  60. data/docs/tutorial/30-your_first_command/index.html +906 -0
  61. data/docs/tutorial/40-options_parameters_and_arguments/index.html +1049 -0
  62. data/docs/tutorial/50-publishing/index.html +838 -0
  63. data/docs/whoami/index.html +709 -0
  64. data/docs-src/docs/advanced/automatic_updates.md +42 -0
  65. data/docs-src/docs/advanced/command_types.md +144 -0
  66. data/docs-src/docs/advanced/distributed_state_locking.md +33 -0
  67. data/docs-src/docs/advanced/hooks.md +65 -0
  68. data/docs-src/docs/advanced/logging.md +35 -0
  69. data/docs-src/docs/advanced/state_storage.md +117 -0
  70. data/docs-src/docs/advanced/user_config_files.md +47 -0
  71. data/docs-src/docs/development/code_of_conduct.md +74 -0
  72. data/docs-src/docs/development/contributing.md +49 -0
  73. data/docs-src/docs/development/license.md +10 -0
  74. data/docs-src/docs/imported/changelog.md +31 -0
  75. data/docs-src/docs/imported/quick_reference.md +150 -0
  76. data/docs-src/docs/index.md +38 -0
  77. data/docs-src/docs/tutorial/10-getting_started.md +41 -0
  78. data/docs-src/docs/tutorial/20-project_layout.md +115 -0
  79. data/docs-src/docs/tutorial/30-your_first_command.md +126 -0
  80. data/docs-src/docs/tutorial/40-options_parameters_and_arguments.md +251 -0
  81. data/docs-src/docs/tutorial/50-publishing.md +47 -0
  82. data/docs-src/docs/whoami.md +28 -0
  83. data/docs-src/makesite.sh +14 -0
  84. data/docs-src/mkdocs.yml +76 -0
  85. data/docs-src/runsite.sh +3 -0
  86. data/exe/rbcli +76 -5
  87. data/lib/rbcli/autoupdate/autoupdate.rb +24 -4
  88. data/lib/rbcli/autoupdate/gem_updater.rb +23 -2
  89. data/lib/rbcli/autoupdate/github_updater.rb +22 -1
  90. data/lib/rbcli/configuration/config.rb +22 -1
  91. data/lib/rbcli/configuration/configurate.rb +24 -2
  92. data/lib/rbcli/engine/command.rb +26 -6
  93. data/lib/rbcli/engine/load_project.rb +29 -3
  94. data/lib/rbcli/engine/parser.rb +25 -4
  95. data/lib/rbcli/logging/logging.rb +21 -0
  96. data/lib/rbcli/scriptwrapping/scriptwrapper.rb +30 -11
  97. data/lib/rbcli/stateful_systems/configuratestorage.rb +20 -0
  98. data/lib/rbcli/stateful_systems/state_storage.rb +20 -0
  99. data/lib/rbcli/stateful_systems/storagetypes/localstate.rb +20 -0
  100. data/lib/rbcli/stateful_systems/storagetypes/remote_state_connectors/dynamodb.rb +20 -0
  101. data/lib/rbcli/stateful_systems/storagetypes/remotestate_dynamodb.rb +20 -0
  102. data/lib/rbcli/util/hash_deep_symbolize.rb +43 -22
  103. data/lib/rbcli/util/string_colorize.rb +20 -0
  104. data/lib/rbcli/version.rb +21 -1
  105. data/lib/rbcli-tool/generators.rb +20 -0
  106. data/lib/rbcli-tool/mdless_fix.rb +20 -0
  107. data/lib/rbcli-tool/project.rb +27 -2
  108. data/lib/rbcli-tool/util.rb +20 -0
  109. data/lib/rbcli-tool.rb +20 -0
  110. data/lib/rbcli.rb +20 -0
  111. data/lib-sh/lib-rbcli.sh +19 -0
  112. data/rbcli.gemspec +22 -3
  113. data/skeletons/project/CODE_OF_CONDUCT.md +1 -1
  114. data/skeletons/project/README.md +17 -2
  115. data/skeletons/project/application/commands/command.erb +10 -8
  116. data/skeletons/project/application/commands/script.erb +3 -1
  117. data/skeletons/project/application/commands/scripts/script.sh +2 -2
  118. data/skeletons/project/application/options.rb +12 -3
  119. data/skeletons/project/config/autoupdate.rb +5 -2
  120. data/skeletons/project/config/storage.rb +7 -6
  121. data/skeletons/project/config/userspace.rb +6 -1
  122. data/skeletons/project/exe/executable +1 -1
  123. data/skeletons/project/lib/.keep +0 -0
  124. data/skeletons/project/untitled.gemspec +4 -4
  125. data/skeletons/project/{default_user_configs → userconf}/user_defaults.yml +0 -0
  126. metadata +85 -9
  127. data/examples/defaults.yml +0 -4
  128. data/examples/myscript.sh +0 -23
  129. data/examples/mytool +0 -95
@@ -0,0 +1,806 @@
1
+
2
+
3
+
4
+
5
+ <!DOCTYPE html>
6
+ <html lang="en" class="no-js">
7
+ <head>
8
+
9
+ <meta charset="utf-8">
10
+ <meta name="viewport" content="width=device-width,initial-scale=1">
11
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
12
+
13
+ <meta name="description" content="Description">
14
+
15
+
16
+
17
+ <meta name="author" content="Andrew Khoury">
18
+
19
+
20
+ <meta name="lang:clipboard.copy" content="Copy to clipboard">
21
+
22
+ <meta name="lang:clipboard.copied" content="Copied to clipboard">
23
+
24
+ <meta name="lang:search.language" content="en">
25
+
26
+ <meta name="lang:search.pipeline.stopwords" content="True">
27
+
28
+ <meta name="lang:search.pipeline.trimmer" content="True">
29
+
30
+ <meta name="lang:search.result.none" content="No matching documents">
31
+
32
+ <meta name="lang:search.result.one" content="1 matching document">
33
+
34
+ <meta name="lang:search.result.other" content="# matching documents">
35
+
36
+ <meta name="lang:search.tokenizer" content="[\s\-]+">
37
+
38
+ <link rel="shortcut icon" href="../../assets/images/favicon.png">
39
+ <meta name="generator" content="mkdocs-0.17.5, mkdocs-material-2.9.2">
40
+
41
+
42
+
43
+ <title>Getting Started - RBCli Documentation</title>
44
+
45
+
46
+
47
+ <link rel="stylesheet" href="../../assets/stylesheets/application.ba0fd1a6.css">
48
+
49
+
50
+
51
+
52
+ <script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
53
+
54
+
55
+ <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
56
+
57
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
58
+ <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
59
+
60
+
61
+ <link rel="stylesheet" href="../../assets/fonts/material-icons.css">
62
+
63
+
64
+ </head>
65
+
66
+ <body dir="ltr">
67
+
68
+ <svg class="md-svg">
69
+ <defs>
70
+
71
+
72
+ <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448"
73
+ viewBox="0 0 416 448" id="__github">
74
+ <path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19-18.125
75
+ 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19 18.125-8.5
76
+ 18.125 8.5 10.75 19 3.125 20.5zM320 304q0 10-3.125 20.5t-10.75
77
+ 19-18.125 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19
78
+ 18.125-8.5 18.125 8.5 10.75 19 3.125 20.5zM360
79
+ 304q0-30-17.25-51t-46.75-21q-10.25 0-48.75 5.25-17.75 2.75-39.25
80
+ 2.75t-39.25-2.75q-38-5.25-48.75-5.25-29.5 0-46.75 21t-17.25 51q0 22 8
81
+ 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0
82
+ 37.25-1.75t35-7.375 30.5-15 20.25-25.75 8-38.375zM416 260q0 51.75-15.25
83
+ 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5-41.75
84
+ 1.125q-19.5 0-35.5-0.75t-36.875-3.125-38.125-7.5-34.25-12.875-30.25-20.25-21.5-28.75q-15.5-30.75-15.5-82.75
85
+ 0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25
86
+ 30.875q36.75-8.75 77.25-8.75 37 0 70 8 26.25-20.5
87
+ 46.75-30.25t47.25-9.75q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34
88
+ 99.5z" />
89
+ </svg>
90
+
91
+ </defs>
92
+ </svg>
93
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
94
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
95
+ <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
96
+
97
+ <a href="#getting-started" tabindex="1" class="md-skip">
98
+ Skip to content
99
+ </a>
100
+
101
+
102
+ <header class="md-header" data-md-component="header">
103
+ <nav class="md-header-nav md-grid">
104
+ <div class="md-flex">
105
+ <div class="md-flex__cell md-flex__cell--shrink">
106
+ <a href="../.." title="RBCli Documentation" class="md-header-nav__button md-logo">
107
+
108
+ <i class="md-icon">devices</i>
109
+
110
+ </a>
111
+ </div>
112
+ <div class="md-flex__cell md-flex__cell--shrink">
113
+ <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
114
+ </div>
115
+ <div class="md-flex__cell md-flex__cell--stretch">
116
+ <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
117
+
118
+
119
+ <span class="md-header-nav__topic">
120
+ RBCli Documentation
121
+ </span>
122
+ <span class="md-header-nav__topic">
123
+ Getting Started
124
+ </span>
125
+
126
+
127
+ </div>
128
+ </div>
129
+ <div class="md-flex__cell md-flex__cell--shrink">
130
+
131
+
132
+ <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
133
+
134
+ <div class="md-search" data-md-component="search" role="dialog">
135
+ <label class="md-search__overlay" for="__search"></label>
136
+ <div class="md-search__inner" role="search">
137
+ <form class="md-search__form" name="search">
138
+ <input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
139
+ <label class="md-icon md-search__icon" for="__search"></label>
140
+ <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
141
+ &#xE5CD;
142
+ </button>
143
+ </form>
144
+ <div class="md-search__output">
145
+ <div class="md-search__scrollwrap" data-md-scrollfix>
146
+ <div class="md-search-result" data-md-component="result">
147
+ <div class="md-search-result__meta">
148
+ Type to start searching
149
+ </div>
150
+ <ol class="md-search-result__list"></ol>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ </div>
156
+
157
+
158
+ </div>
159
+
160
+ <div class="md-flex__cell md-flex__cell--shrink">
161
+ <div class="md-header-nav__source">
162
+
163
+
164
+
165
+
166
+
167
+
168
+ <a href="https://github.com/akhoury6/rbcli/" title="Go to repository" class="md-source" data-md-source="github">
169
+
170
+ <div class="md-source__icon">
171
+ <svg viewBox="0 0 24 24" width="24" height="24">
172
+ <use xlink:href="#__github" width="24" height="24"></use>
173
+ </svg>
174
+ </div>
175
+
176
+ <div class="md-source__repository">
177
+ GitHub
178
+ </div>
179
+ </a>
180
+
181
+ </div>
182
+ </div>
183
+
184
+ </div>
185
+ </nav>
186
+ </header>
187
+
188
+ <div class="md-container">
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+ <nav class="md-tabs md-tabs--active" data-md-component="tabs">
198
+ <div class="md-tabs__inner md-grid">
199
+ <ul class="md-tabs__list">
200
+
201
+
202
+ <li class="md-tabs__item">
203
+
204
+ <a href="../.." title="Home" class="md-tabs__link">
205
+ Home
206
+ </a>
207
+
208
+ </li>
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+ <li class="md-tabs__item">
217
+
218
+ <a href="./" title="Tutorial" class="md-tabs__link md-tabs__link--active">
219
+ Tutorial
220
+ </a>
221
+
222
+ </li>
223
+
224
+
225
+
226
+
227
+
228
+
229
+ <li class="md-tabs__item">
230
+
231
+ <a href="../../advanced/command_types/" title="Advanced Features" class="md-tabs__link">
232
+ Advanced Features
233
+ </a>
234
+
235
+ </li>
236
+
237
+
238
+
239
+
240
+
241
+
242
+ <li class="md-tabs__item">
243
+
244
+ <a href="../../development/contributing/" title="Development" class="md-tabs__link">
245
+ Development
246
+ </a>
247
+
248
+ </li>
249
+
250
+
251
+
252
+
253
+
254
+ </ul>
255
+ </div>
256
+ </nav>
257
+
258
+ <main class="md-main">
259
+ <div class="md-main__inner md-grid" data-md-component="container">
260
+
261
+
262
+ <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
263
+ <div class="md-sidebar__scrollwrap">
264
+ <div class="md-sidebar__inner">
265
+ <nav class="md-nav md-nav--primary" data-md-level="0">
266
+ <label class="md-nav__title md-nav__title--site" for="__drawer">
267
+ <span class="md-nav__button md-logo">
268
+
269
+ <i class="md-icon">devices</i>
270
+
271
+ </span>
272
+ RBCli Documentation
273
+ </label>
274
+
275
+ <div class="md-nav__source">
276
+
277
+
278
+
279
+
280
+
281
+
282
+ <a href="https://github.com/akhoury6/rbcli/" title="Go to repository" class="md-source" data-md-source="github">
283
+
284
+ <div class="md-source__icon">
285
+ <svg viewBox="0 0 24 24" width="24" height="24">
286
+ <use xlink:href="#__github" width="24" height="24"></use>
287
+ </svg>
288
+ </div>
289
+
290
+ <div class="md-source__repository">
291
+ GitHub
292
+ </div>
293
+ </a>
294
+
295
+ </div>
296
+
297
+ <ul class="md-nav__list" data-md-scrollfix>
298
+
299
+
300
+
301
+
302
+
303
+
304
+ <li class="md-nav__item">
305
+ <a href="../.." title="Home" class="md-nav__link">
306
+ Home
307
+ </a>
308
+ </li>
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+ <li class="md-nav__item">
317
+ <a href="../../imported/quick_reference/" title="Quick Reference" class="md-nav__link">
318
+ Quick Reference
319
+ </a>
320
+ </li>
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+ <li class="md-nav__item md-nav__item--active md-nav__item--nested">
331
+
332
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3" checked>
333
+
334
+ <label class="md-nav__link" for="nav-3">
335
+ Tutorial
336
+ </label>
337
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
338
+ <label class="md-nav__title" for="nav-3">
339
+ Tutorial
340
+ </label>
341
+ <ul class="md-nav__list" data-md-scrollfix>
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+ <li class="md-nav__item md-nav__item--active">
352
+
353
+ <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
354
+
355
+
356
+
357
+
358
+ <label class="md-nav__link md-nav__link--active" for="__toc">
359
+ Getting Started
360
+ </label>
361
+
362
+ <a href="./" title="Getting Started" class="md-nav__link md-nav__link--active">
363
+ Getting Started
364
+ </a>
365
+
366
+
367
+ <nav class="md-nav md-nav--secondary">
368
+
369
+
370
+
371
+
372
+
373
+ <label class="md-nav__title" for="__toc">Table of contents</label>
374
+ <ul class="md-nav__list" data-md-scrollfix>
375
+
376
+ <li class="md-nav__item">
377
+ <a href="#supported-ruby-versions" title="Supported Ruby Versions" class="md-nav__link">
378
+ Supported Ruby Versions
379
+ </a>
380
+
381
+ </li>
382
+
383
+ <li class="md-nav__item">
384
+ <a href="#installation" title="Installation" class="md-nav__link">
385
+ Installation
386
+ </a>
387
+
388
+ </li>
389
+
390
+ <li class="md-nav__item">
391
+ <a href="#next-steps" title="Next Steps" class="md-nav__link">
392
+ Next Steps
393
+ </a>
394
+
395
+ </li>
396
+
397
+
398
+
399
+
400
+
401
+ </ul>
402
+
403
+ </nav>
404
+
405
+ </li>
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+ <li class="md-nav__item">
414
+ <a href="../20-project_layout/" title="The Project Layout" class="md-nav__link">
415
+ The Project Layout
416
+ </a>
417
+ </li>
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+ <li class="md-nav__item">
426
+ <a href="../30-your_first_command/" title="Your First Command" class="md-nav__link">
427
+ Your First Command
428
+ </a>
429
+ </li>
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+ <li class="md-nav__item">
438
+ <a href="../40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="md-nav__link">
439
+ Options, Parameters, and Arguments
440
+ </a>
441
+ </li>
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+ <li class="md-nav__item">
450
+ <a href="../50-publishing/" title="Publishing and Distribution" class="md-nav__link">
451
+ Publishing and Distribution
452
+ </a>
453
+ </li>
454
+
455
+
456
+ </ul>
457
+ </nav>
458
+ </li>
459
+
460
+
461
+
462
+
463
+
464
+
465
+
466
+ <li class="md-nav__item md-nav__item--nested">
467
+
468
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
469
+
470
+ <label class="md-nav__link" for="nav-4">
471
+ Advanced Features
472
+ </label>
473
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
474
+ <label class="md-nav__title" for="nav-4">
475
+ Advanced Features
476
+ </label>
477
+ <ul class="md-nav__list" data-md-scrollfix>
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+ <li class="md-nav__item">
486
+ <a href="../../advanced/command_types/" title="Command Types" class="md-nav__link">
487
+ Command Types
488
+ </a>
489
+ </li>
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+ <li class="md-nav__item">
498
+ <a href="../../advanced/user_config_files/" title="User Config Files" class="md-nav__link">
499
+ User Config Files
500
+ </a>
501
+ </li>
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+ <li class="md-nav__item">
510
+ <a href="../../advanced/hooks/" title="Hooks" class="md-nav__link">
511
+ Hooks
512
+ </a>
513
+ </li>
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+ <li class="md-nav__item">
522
+ <a href="../../advanced/automatic_updates/" title="Automatic Updates" class="md-nav__link">
523
+ Automatic Updates
524
+ </a>
525
+ </li>
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+ <li class="md-nav__item">
534
+ <a href="../../advanced/state_storage/" title="State Storage" class="md-nav__link">
535
+ State Storage
536
+ </a>
537
+ </li>
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+ <li class="md-nav__item">
546
+ <a href="../../advanced/distributed_state_locking/" title="Distributed State Locking" class="md-nav__link">
547
+ Distributed State Locking
548
+ </a>
549
+ </li>
550
+
551
+
552
+ </ul>
553
+ </nav>
554
+ </li>
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+ <li class="md-nav__item md-nav__item--nested">
563
+
564
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
565
+
566
+ <label class="md-nav__link" for="nav-5">
567
+ Development
568
+ </label>
569
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
570
+ <label class="md-nav__title" for="nav-5">
571
+ Development
572
+ </label>
573
+ <ul class="md-nav__list" data-md-scrollfix>
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+ <li class="md-nav__item">
582
+ <a href="../../development/contributing/" title="Contribution Guide" class="md-nav__link">
583
+ Contribution Guide
584
+ </a>
585
+ </li>
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+ <li class="md-nav__item">
594
+ <a href="../../development/license/" title="License Info" class="md-nav__link">
595
+ License Info
596
+ </a>
597
+ </li>
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+ <li class="md-nav__item">
606
+ <a href="../../development/code_of_conduct/" title="Code of Conduct" class="md-nav__link">
607
+ Code of Conduct
608
+ </a>
609
+ </li>
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+ <li class="md-nav__item">
618
+ <a href="../../imported/changelog/" title="Changelog" class="md-nav__link">
619
+ Changelog
620
+ </a>
621
+ </li>
622
+
623
+
624
+ </ul>
625
+ </nav>
626
+ </li>
627
+
628
+
629
+
630
+
631
+
632
+
633
+
634
+ <li class="md-nav__item">
635
+ <a href="../../whoami/" title="$ whoami" class="md-nav__link">
636
+ $ whoami
637
+ </a>
638
+ </li>
639
+
640
+
641
+ </ul>
642
+ </nav>
643
+ </div>
644
+ </div>
645
+ </div>
646
+
647
+
648
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
649
+ <div class="md-sidebar__scrollwrap">
650
+ <div class="md-sidebar__inner">
651
+
652
+ <nav class="md-nav md-nav--secondary">
653
+
654
+
655
+
656
+
657
+
658
+ <label class="md-nav__title" for="__toc">Table of contents</label>
659
+ <ul class="md-nav__list" data-md-scrollfix>
660
+
661
+ <li class="md-nav__item">
662
+ <a href="#supported-ruby-versions" title="Supported Ruby Versions" class="md-nav__link">
663
+ Supported Ruby Versions
664
+ </a>
665
+
666
+ </li>
667
+
668
+ <li class="md-nav__item">
669
+ <a href="#installation" title="Installation" class="md-nav__link">
670
+ Installation
671
+ </a>
672
+
673
+ </li>
674
+
675
+ <li class="md-nav__item">
676
+ <a href="#next-steps" title="Next Steps" class="md-nav__link">
677
+ Next Steps
678
+ </a>
679
+
680
+ </li>
681
+
682
+
683
+
684
+
685
+
686
+ </ul>
687
+
688
+ </nav>
689
+ </div>
690
+ </div>
691
+ </div>
692
+
693
+
694
+ <div class="md-content">
695
+ <article class="md-content__inner md-typeset">
696
+
697
+
698
+
699
+ <h1 id="getting-started">Getting Started</h1>
700
+ <p>Welcome to the RBCli getting started tutorial! In this tutorial we're going to cover the basics of RBCli and get a simple application up and running. It should take you between 30-60 minutes to complete, depending on your skill level with Ruby.</p>
701
+ <p>As you go throught the tutorial, you can either use the <strong>Next</strong> and <strong>Back</strong> buttons on the page to navigate, or use the menu directly.</p>
702
+ <h2 id="supported-ruby-versions">Supported Ruby Versions</h2>
703
+ <p>You'll need Ruby installed before you can use RBCli. If you don't know how to install it, we recommend using either <a href="https://github.com/rbenv/rbenv">rbenv</a> (our favorite) or <a href="https://rvm.io">rvm</a>.</p>
704
+ <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>
705
+ <h2 id="installation">Installation</h2>
706
+ <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>
707
+ <pre><code class="bash">gem install rbcli
708
+ </code></pre>
709
+
710
+ <p>Then, <code>cd</code> to the folder you'd like to create your project under and run:</p>
711
+ <pre><code class="bash">rbcli init -n mytool -d &quot;A simple CLI tool&quot;
712
+ </code></pre>
713
+
714
+ <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>
715
+ <pre><code class="bash">cd mytool
716
+ ls -ahl
717
+ </code></pre>
718
+
719
+ <p>Congratulations! This is the beginning of your first project.</p>
720
+ <h2 id="next-steps">Next Steps</h2>
721
+ <p>Next, you will learn about the layout of an RBCli project and how to code with it.</p>
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+ </article>
732
+ </div>
733
+ </div>
734
+ </main>
735
+
736
+
737
+ <footer class="md-footer">
738
+
739
+ <div class="md-footer-nav">
740
+ <nav class="md-footer-nav__inner md-grid">
741
+
742
+ <a href="../../imported/quick_reference/" title="Quick Reference" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
743
+ <div class="md-flex__cell md-flex__cell--shrink">
744
+ <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
745
+ </div>
746
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
747
+ <span class="md-flex__ellipsis">
748
+ <span class="md-footer-nav__direction">
749
+ Previous
750
+ </span>
751
+ Quick Reference
752
+ </span>
753
+ </div>
754
+ </a>
755
+
756
+
757
+ <a href="../20-project_layout/" title="The Project Layout" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
758
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
759
+ <span class="md-flex__ellipsis">
760
+ <span class="md-footer-nav__direction">
761
+ Next
762
+ </span>
763
+ The Project Layout
764
+ </span>
765
+ </div>
766
+ <div class="md-flex__cell md-flex__cell--shrink">
767
+ <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
768
+ </div>
769
+ </a>
770
+
771
+ </nav>
772
+ </div>
773
+
774
+ <div class="md-footer-meta md-typeset">
775
+ <div class="md-footer-meta__inner md-grid">
776
+ <div class="md-footer-copyright">
777
+
778
+ <div class="md-footer-copyright__highlight">
779
+ Copyright © 2018 Andrew Khoury
780
+ </div>
781
+
782
+ powered by
783
+ <a href="https://www.mkdocs.org">MkDocs</a>
784
+ and
785
+ <a href="https://squidfunk.github.io/mkdocs-material/">
786
+ Material for MkDocs</a>
787
+ </div>
788
+
789
+
790
+
791
+ </div>
792
+ </div>
793
+ </footer>
794
+
795
+ </div>
796
+
797
+ <script src="../../assets/javascripts/application.a59e2a89.js"></script>
798
+
799
+ <script>app.initialize({version:"0.17.5",url:{base:"../.."}})</script>
800
+
801
+
802
+
803
+
804
+
805
+ </body>
806
+ </html>