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,836 @@
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>Hooks - 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="#execution-hooks" 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
+ Hooks
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="../../tutorial/10-getting_started/" title="Tutorial" class="md-tabs__link">
219
+ Tutorial
220
+ </a>
221
+
222
+ </li>
223
+
224
+
225
+
226
+
227
+
228
+
229
+ <li class="md-tabs__item">
230
+
231
+ <a href="../command_types/" title="Advanced Features" class="md-tabs__link md-tabs__link--active">
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
+ <li class="md-nav__item md-nav__item--nested">
329
+
330
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
331
+
332
+ <label class="md-nav__link" for="nav-3">
333
+ Tutorial
334
+ </label>
335
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
336
+ <label class="md-nav__title" for="nav-3">
337
+ Tutorial
338
+ </label>
339
+ <ul class="md-nav__list" data-md-scrollfix>
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+ <li class="md-nav__item">
348
+ <a href="../../tutorial/10-getting_started/" title="Getting Started" class="md-nav__link">
349
+ Getting Started
350
+ </a>
351
+ </li>
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+ <li class="md-nav__item">
360
+ <a href="../../tutorial/20-project_layout/" title="The Project Layout" class="md-nav__link">
361
+ The Project Layout
362
+ </a>
363
+ </li>
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+ <li class="md-nav__item">
372
+ <a href="../../tutorial/30-your_first_command/" title="Your First Command" class="md-nav__link">
373
+ Your First Command
374
+ </a>
375
+ </li>
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+ <li class="md-nav__item">
384
+ <a href="../../tutorial/40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="md-nav__link">
385
+ Options, Parameters, and Arguments
386
+ </a>
387
+ </li>
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+ <li class="md-nav__item">
396
+ <a href="../../tutorial/50-publishing/" title="Publishing and Distribution" class="md-nav__link">
397
+ Publishing and Distribution
398
+ </a>
399
+ </li>
400
+
401
+
402
+ </ul>
403
+ </nav>
404
+ </li>
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+ <li class="md-nav__item md-nav__item--active md-nav__item--nested">
415
+
416
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" checked>
417
+
418
+ <label class="md-nav__link" for="nav-4">
419
+ Advanced Features
420
+ </label>
421
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
422
+ <label class="md-nav__title" for="nav-4">
423
+ Advanced Features
424
+ </label>
425
+ <ul class="md-nav__list" data-md-scrollfix>
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+ <li class="md-nav__item">
434
+ <a href="../command_types/" title="Command Types" class="md-nav__link">
435
+ Command Types
436
+ </a>
437
+ </li>
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+ <li class="md-nav__item">
446
+ <a href="../user_config_files/" title="User Config Files" class="md-nav__link">
447
+ User Config Files
448
+ </a>
449
+ </li>
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+ <li class="md-nav__item md-nav__item--active">
460
+
461
+ <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
462
+
463
+
464
+
465
+
466
+ <label class="md-nav__link md-nav__link--active" for="__toc">
467
+ Hooks
468
+ </label>
469
+
470
+ <a href="./" title="Hooks" class="md-nav__link md-nav__link--active">
471
+ Hooks
472
+ </a>
473
+
474
+
475
+ <nav class="md-nav md-nav--secondary">
476
+
477
+
478
+
479
+
480
+
481
+ <label class="md-nav__title" for="__toc">Table of contents</label>
482
+ <ul class="md-nav__list" data-md-scrollfix>
483
+
484
+ <li class="md-nav__item">
485
+ <a href="#the-defailt-action-hook" title="The Defailt Action Hook" class="md-nav__link">
486
+ The Defailt Action Hook
487
+ </a>
488
+
489
+ </li>
490
+
491
+ <li class="md-nav__item">
492
+ <a href="#the-pre-execution-hook" title="The Pre-Execution Hook" class="md-nav__link">
493
+ The Pre-Execution Hook
494
+ </a>
495
+
496
+ </li>
497
+
498
+ <li class="md-nav__item">
499
+ <a href="#the-post-execution-hook" title="The Post-Execution Hook" class="md-nav__link">
500
+ The Post-Execution Hook
501
+ </a>
502
+
503
+ </li>
504
+
505
+ <li class="md-nav__item">
506
+ <a href="#the-first-run-hook" title="The First-Run Hook" class="md-nav__link">
507
+ The First-Run Hook
508
+ </a>
509
+
510
+ </li>
511
+
512
+
513
+
514
+
515
+
516
+ </ul>
517
+
518
+ </nav>
519
+
520
+ </li>
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+ <li class="md-nav__item">
529
+ <a href="../automatic_updates/" title="Automatic Updates" class="md-nav__link">
530
+ Automatic Updates
531
+ </a>
532
+ </li>
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+ <li class="md-nav__item">
541
+ <a href="../state_storage/" title="State Storage" class="md-nav__link">
542
+ State Storage
543
+ </a>
544
+ </li>
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+ <li class="md-nav__item">
553
+ <a href="../distributed_state_locking/" title="Distributed State Locking" class="md-nav__link">
554
+ Distributed State Locking
555
+ </a>
556
+ </li>
557
+
558
+
559
+ </ul>
560
+ </nav>
561
+ </li>
562
+
563
+
564
+
565
+
566
+
567
+
568
+
569
+ <li class="md-nav__item md-nav__item--nested">
570
+
571
+ <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
572
+
573
+ <label class="md-nav__link" for="nav-5">
574
+ Development
575
+ </label>
576
+ <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
577
+ <label class="md-nav__title" for="nav-5">
578
+ Development
579
+ </label>
580
+ <ul class="md-nav__list" data-md-scrollfix>
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+ <li class="md-nav__item">
589
+ <a href="../../development/contributing/" title="Contribution Guide" class="md-nav__link">
590
+ Contribution Guide
591
+ </a>
592
+ </li>
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+ <li class="md-nav__item">
601
+ <a href="../../development/license/" title="License Info" class="md-nav__link">
602
+ License Info
603
+ </a>
604
+ </li>
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+ <li class="md-nav__item">
613
+ <a href="../../development/code_of_conduct/" title="Code of Conduct" class="md-nav__link">
614
+ Code of Conduct
615
+ </a>
616
+ </li>
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+ <li class="md-nav__item">
625
+ <a href="../../imported/changelog/" title="Changelog" class="md-nav__link">
626
+ Changelog
627
+ </a>
628
+ </li>
629
+
630
+
631
+ </ul>
632
+ </nav>
633
+ </li>
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+ <li class="md-nav__item">
642
+ <a href="../../whoami/" title="$ whoami" class="md-nav__link">
643
+ $ whoami
644
+ </a>
645
+ </li>
646
+
647
+
648
+ </ul>
649
+ </nav>
650
+ </div>
651
+ </div>
652
+ </div>
653
+
654
+
655
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
656
+ <div class="md-sidebar__scrollwrap">
657
+ <div class="md-sidebar__inner">
658
+
659
+ <nav class="md-nav md-nav--secondary">
660
+
661
+
662
+
663
+
664
+
665
+ <label class="md-nav__title" for="__toc">Table of contents</label>
666
+ <ul class="md-nav__list" data-md-scrollfix>
667
+
668
+ <li class="md-nav__item">
669
+ <a href="#the-defailt-action-hook" title="The Defailt Action Hook" class="md-nav__link">
670
+ The Defailt Action Hook
671
+ </a>
672
+
673
+ </li>
674
+
675
+ <li class="md-nav__item">
676
+ <a href="#the-pre-execution-hook" title="The Pre-Execution Hook" class="md-nav__link">
677
+ The Pre-Execution Hook
678
+ </a>
679
+
680
+ </li>
681
+
682
+ <li class="md-nav__item">
683
+ <a href="#the-post-execution-hook" title="The Post-Execution Hook" class="md-nav__link">
684
+ The Post-Execution Hook
685
+ </a>
686
+
687
+ </li>
688
+
689
+ <li class="md-nav__item">
690
+ <a href="#the-first-run-hook" title="The First-Run Hook" class="md-nav__link">
691
+ The First-Run Hook
692
+ </a>
693
+
694
+ </li>
695
+
696
+
697
+
698
+
699
+
700
+ </ul>
701
+
702
+ </nav>
703
+ </div>
704
+ </div>
705
+ </div>
706
+
707
+
708
+ <div class="md-content">
709
+ <article class="md-content__inner md-typeset">
710
+
711
+
712
+
713
+ <h1 id="execution-hooks">Execution Hooks</h1>
714
+ <p>RBCli provides you with hooks that can be used to have code execute at certain places in the execution chain. These hooks are optional, and do not have to be defined for your application to run.</p>
715
+ <p>All hooks will be created in the <code>hooks/</code> folder in your project.</p>
716
+ <h2 id="the-defailt-action-hook">The Defailt Action Hook</h2>
717
+ <p>The Default hook is called when a user calls your application without providing a command. If the hook is not provided, the application will automatically display the help text (the same as running it with <code>-h</code>).</p>
718
+ <p>To create it in your project, run:</p>
719
+ <pre><code class="bash">rbcli hook --default
720
+ # or
721
+ rbcli hook -d
722
+ </code></pre>
723
+
724
+ <p>You will then find the hook under <code>hooks/default_action.rb</code>.</p>
725
+ <h2 id="the-pre-execution-hook">The Pre-Execution Hook</h2>
726
+ <p>The Pre-Execution hook is called after the global command line options are parsed and before a command is executed.</p>
727
+ <p>To create it in your project, run:</p>
728
+ <pre><code class="bash">rbcli hook --pre
729
+ # or
730
+ rbcli hook -p
731
+ </code></pre>
732
+
733
+ <p>You will then find the hook under <code>hooks/pre_execution.rb</code>.</p>
734
+ <h2 id="the-post-execution-hook">The Post-Execution Hook</h2>
735
+ <p>The Pre-Execution hook is called after a command is executed.</p>
736
+ <p>To create it in your project, run:</p>
737
+ <pre><code class="bash">rbcli hook --post
738
+ # or
739
+ rbcli hook -o
740
+ </code></pre>
741
+
742
+ <p>You will then find the hook under <code>hooks/post_execution.rb</code>.</p>
743
+ <h2 id="the-first-run-hook">The First-Run Hook</h2>
744
+ <p>The First-Run hook is called the first time a user executes your application. Using the first-run hook requires enabling <a href="../state_storage/">Local State Storage</a> for persistence.</p>
745
+ <p>To create it in your project, run:</p>
746
+ <pre><code class="bash">rbcli hook --firstrun
747
+ # or
748
+ rbcli hook -f
749
+ </code></pre>
750
+
751
+ <p>You will then find the hook under <code>hooks/first_run.rb</code>.</p>
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+ </article>
762
+ </div>
763
+ </div>
764
+ </main>
765
+
766
+
767
+ <footer class="md-footer">
768
+
769
+ <div class="md-footer-nav">
770
+ <nav class="md-footer-nav__inner md-grid">
771
+
772
+ <a href="../user_config_files/" title="User Config Files" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
773
+ <div class="md-flex__cell md-flex__cell--shrink">
774
+ <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
775
+ </div>
776
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
777
+ <span class="md-flex__ellipsis">
778
+ <span class="md-footer-nav__direction">
779
+ Previous
780
+ </span>
781
+ User Config Files
782
+ </span>
783
+ </div>
784
+ </a>
785
+
786
+
787
+ <a href="../automatic_updates/" title="Automatic Updates" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
788
+ <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
789
+ <span class="md-flex__ellipsis">
790
+ <span class="md-footer-nav__direction">
791
+ Next
792
+ </span>
793
+ Automatic Updates
794
+ </span>
795
+ </div>
796
+ <div class="md-flex__cell md-flex__cell--shrink">
797
+ <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
798
+ </div>
799
+ </a>
800
+
801
+ </nav>
802
+ </div>
803
+
804
+ <div class="md-footer-meta md-typeset">
805
+ <div class="md-footer-meta__inner md-grid">
806
+ <div class="md-footer-copyright">
807
+
808
+ <div class="md-footer-copyright__highlight">
809
+ Copyright © 2018 Andrew Khoury
810
+ </div>
811
+
812
+ powered by
813
+ <a href="https://www.mkdocs.org">MkDocs</a>
814
+ and
815
+ <a href="https://squidfunk.github.io/mkdocs-material/">
816
+ Material for MkDocs</a>
817
+ </div>
818
+
819
+
820
+
821
+ </div>
822
+ </div>
823
+ </footer>
824
+
825
+ </div>
826
+
827
+ <script src="../../assets/javascripts/application.a59e2a89.js"></script>
828
+
829
+ <script>app.initialize({version:"0.17.5",url:{base:"../.."}})</script>
830
+
831
+
832
+
833
+
834
+
835
+ </body>
836
+ </html>