rbcli 0.1.10 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/Gemfile.lock +12 -12
- data/LICENSE.txt +674 -21
- data/README.md +80 -443
- data/bin/console +19 -0
- data/bin/setup +20 -0
- data/docs/404.html +639 -0
- data/docs/advanced/automatic_updates/index.html +791 -0
- data/docs/advanced/command_types/index.html +946 -0
- data/docs/advanced/distributed_state_locking/index.html +777 -0
- data/docs/advanced/hooks/index.html +836 -0
- data/docs/advanced/state_storage/index.html +957 -0
- data/docs/advanced/user_config_files/index.html +818 -0
- data/docs/assets/fonts/font-awesome.css +4 -0
- data/docs/assets/fonts/material-icons.css +13 -0
- data/docs/assets/fonts/specimen/FontAwesome.ttf +0 -0
- data/docs/assets/fonts/specimen/FontAwesome.woff +0 -0
- data/docs/assets/fonts/specimen/FontAwesome.woff2 +0 -0
- data/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf +0 -0
- data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff +0 -0
- data/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2 +0 -0
- data/docs/assets/images/favicon.png +0 -0
- data/docs/assets/images/icons/bitbucket.1b09e088.svg +20 -0
- data/docs/assets/images/icons/github.f0b8504a.svg +18 -0
- data/docs/assets/images/icons/gitlab.6dd19c00.svg +38 -0
- data/docs/assets/javascripts/application.a59e2a89.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.da.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.de.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.du.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.es.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.fi.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.fr.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.hu.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.it.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.jp.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.multi.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.no.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.pt.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.ro.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.ru.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.stemmer.support.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.sv.js +1 -0
- data/docs/assets/javascripts/lunr/lunr.tr.js +1 -0
- data/docs/assets/javascripts/lunr/tinyseg.js +1 -0
- data/docs/assets/javascripts/modernizr.1aa3b519.js +1 -0
- data/docs/assets/stylesheets/application-palette.6079476c.css +2 -0
- data/docs/assets/stylesheets/application.ba0fd1a6.css +2 -0
- data/docs/development/code_of_conduct/index.html +883 -0
- data/docs/development/contributing/index.html +744 -0
- data/docs/development/license/index.html +715 -0
- data/docs/imported/changelog/index.html +853 -0
- data/docs/imported/quick_reference/index.html +1057 -0
- data/docs/index.html +732 -0
- data/docs/search/search_index.json +569 -0
- data/docs/sitemap.xml +93 -0
- data/docs/tutorial/10-getting_started/index.html +806 -0
- data/docs/tutorial/20-project_layout/index.html +972 -0
- data/docs/tutorial/30-your_first_command/index.html +906 -0
- data/docs/tutorial/40-options_parameters_and_arguments/index.html +1049 -0
- data/docs/tutorial/50-publishing/index.html +838 -0
- data/docs/whoami/index.html +709 -0
- data/docs-src/docs/advanced/automatic_updates.md +42 -0
- data/docs-src/docs/advanced/command_types.md +144 -0
- data/docs-src/docs/advanced/distributed_state_locking.md +33 -0
- data/docs-src/docs/advanced/hooks.md +65 -0
- data/docs-src/docs/advanced/logging.md +35 -0
- data/docs-src/docs/advanced/state_storage.md +117 -0
- data/docs-src/docs/advanced/user_config_files.md +47 -0
- data/docs-src/docs/development/code_of_conduct.md +74 -0
- data/docs-src/docs/development/contributing.md +49 -0
- data/docs-src/docs/development/license.md +10 -0
- data/docs-src/docs/imported/changelog.md +31 -0
- data/docs-src/docs/imported/quick_reference.md +150 -0
- data/docs-src/docs/index.md +38 -0
- data/docs-src/docs/tutorial/10-getting_started.md +41 -0
- data/docs-src/docs/tutorial/20-project_layout.md +115 -0
- data/docs-src/docs/tutorial/30-your_first_command.md +126 -0
- data/docs-src/docs/tutorial/40-options_parameters_and_arguments.md +251 -0
- data/docs-src/docs/tutorial/50-publishing.md +47 -0
- data/docs-src/docs/whoami.md +28 -0
- data/docs-src/makesite.sh +14 -0
- data/docs-src/mkdocs.yml +76 -0
- data/docs-src/runsite.sh +3 -0
- data/exe/rbcli +76 -5
- data/lib/rbcli/autoupdate/autoupdate.rb +24 -4
- data/lib/rbcli/autoupdate/gem_updater.rb +23 -2
- data/lib/rbcli/autoupdate/github_updater.rb +22 -1
- data/lib/rbcli/configuration/config.rb +22 -1
- data/lib/rbcli/configuration/configurate.rb +24 -2
- data/lib/rbcli/engine/command.rb +26 -6
- data/lib/rbcli/engine/load_project.rb +29 -3
- data/lib/rbcli/engine/parser.rb +25 -4
- data/lib/rbcli/logging/logging.rb +21 -0
- data/lib/rbcli/scriptwrapping/scriptwrapper.rb +30 -11
- data/lib/rbcli/stateful_systems/configuratestorage.rb +20 -0
- data/lib/rbcli/stateful_systems/state_storage.rb +20 -0
- data/lib/rbcli/stateful_systems/storagetypes/localstate.rb +20 -0
- data/lib/rbcli/stateful_systems/storagetypes/remote_state_connectors/dynamodb.rb +20 -0
- data/lib/rbcli/stateful_systems/storagetypes/remotestate_dynamodb.rb +20 -0
- data/lib/rbcli/util/hash_deep_symbolize.rb +43 -22
- data/lib/rbcli/util/string_colorize.rb +20 -0
- data/lib/rbcli/version.rb +21 -1
- data/lib/rbcli-tool/generators.rb +20 -0
- data/lib/rbcli-tool/mdless_fix.rb +20 -0
- data/lib/rbcli-tool/project.rb +27 -2
- data/lib/rbcli-tool/util.rb +20 -0
- data/lib/rbcli-tool.rb +20 -0
- data/lib/rbcli.rb +20 -0
- data/lib-sh/lib-rbcli.sh +19 -0
- data/rbcli.gemspec +22 -3
- data/skeletons/project/CODE_OF_CONDUCT.md +1 -1
- data/skeletons/project/README.md +17 -2
- data/skeletons/project/application/commands/command.erb +10 -8
- data/skeletons/project/application/commands/script.erb +3 -1
- data/skeletons/project/application/commands/scripts/script.sh +2 -2
- data/skeletons/project/application/options.rb +12 -3
- data/skeletons/project/config/autoupdate.rb +5 -2
- data/skeletons/project/config/storage.rb +7 -6
- data/skeletons/project/config/userspace.rb +6 -1
- data/skeletons/project/exe/executable +1 -1
- data/skeletons/project/lib/.keep +0 -0
- data/skeletons/project/untitled.gemspec +4 -4
- data/skeletons/project/{default_user_configs → userconf}/user_defaults.yml +0 -0
- metadata +85 -9
- data/examples/defaults.yml +0 -4
- data/examples/myscript.sh +0 -23
- data/examples/mytool +0 -95
@@ -0,0 +1,838 @@
|
|
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>Publishing and Distribution - 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="#publishing-your-application" 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
|
+
Publishing and Distribution
|
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
|
+

|
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="../10-getting_started/" 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
|
+
<li class="md-nav__item">
|
350
|
+
<a href="../10-getting_started/" title="Getting Started" class="md-nav__link">
|
351
|
+
Getting Started
|
352
|
+
</a>
|
353
|
+
</li>
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
<li class="md-nav__item">
|
362
|
+
<a href="../20-project_layout/" title="The Project Layout" class="md-nav__link">
|
363
|
+
The Project Layout
|
364
|
+
</a>
|
365
|
+
</li>
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
<li class="md-nav__item">
|
374
|
+
<a href="../30-your_first_command/" title="Your First Command" class="md-nav__link">
|
375
|
+
Your First Command
|
376
|
+
</a>
|
377
|
+
</li>
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
<li class="md-nav__item">
|
386
|
+
<a href="../40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="md-nav__link">
|
387
|
+
Options, Parameters, and Arguments
|
388
|
+
</a>
|
389
|
+
</li>
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
<li class="md-nav__item md-nav__item--active">
|
400
|
+
|
401
|
+
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
|
406
|
+
<label class="md-nav__link md-nav__link--active" for="__toc">
|
407
|
+
Publishing and Distribution
|
408
|
+
</label>
|
409
|
+
|
410
|
+
<a href="./" title="Publishing and Distribution" class="md-nav__link md-nav__link--active">
|
411
|
+
Publishing and Distribution
|
412
|
+
</a>
|
413
|
+
|
414
|
+
|
415
|
+
<nav class="md-nav md-nav--secondary">
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
<label class="md-nav__title" for="__toc">Table of contents</label>
|
422
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
423
|
+
|
424
|
+
<li class="md-nav__item">
|
425
|
+
<a href="#common-tasks" title="Common Tasks" class="md-nav__link">
|
426
|
+
Common Tasks
|
427
|
+
</a>
|
428
|
+
|
429
|
+
</li>
|
430
|
+
|
431
|
+
<li class="md-nav__item">
|
432
|
+
<a href="#source-control-distribution" title="Source Control Distribution" class="md-nav__link">
|
433
|
+
Source Control Distribution
|
434
|
+
</a>
|
435
|
+
|
436
|
+
</li>
|
437
|
+
|
438
|
+
<li class="md-nav__item">
|
439
|
+
<a href="#rubygemsorg-distribution" title="Rubygems.org Distribution" class="md-nav__link">
|
440
|
+
Rubygems.org Distribution
|
441
|
+
</a>
|
442
|
+
|
443
|
+
</li>
|
444
|
+
|
445
|
+
<li class="md-nav__item">
|
446
|
+
<a href="#recommended-platforms" title="Recommended Platforms" class="md-nav__link">
|
447
|
+
Recommended Platforms
|
448
|
+
</a>
|
449
|
+
|
450
|
+
</li>
|
451
|
+
|
452
|
+
<li class="md-nav__item">
|
453
|
+
<a href="#next-steps" title="Next Steps" class="md-nav__link">
|
454
|
+
Next Steps
|
455
|
+
</a>
|
456
|
+
|
457
|
+
</li>
|
458
|
+
|
459
|
+
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
</ul>
|
464
|
+
|
465
|
+
</nav>
|
466
|
+
|
467
|
+
</li>
|
468
|
+
|
469
|
+
|
470
|
+
</ul>
|
471
|
+
</nav>
|
472
|
+
</li>
|
473
|
+
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
|
480
|
+
<li class="md-nav__item md-nav__item--nested">
|
481
|
+
|
482
|
+
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
|
483
|
+
|
484
|
+
<label class="md-nav__link" for="nav-4">
|
485
|
+
Advanced Features
|
486
|
+
</label>
|
487
|
+
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
|
488
|
+
<label class="md-nav__title" for="nav-4">
|
489
|
+
Advanced Features
|
490
|
+
</label>
|
491
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
492
|
+
|
493
|
+
|
494
|
+
|
495
|
+
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
<li class="md-nav__item">
|
500
|
+
<a href="../../advanced/command_types/" title="Command Types" class="md-nav__link">
|
501
|
+
Command Types
|
502
|
+
</a>
|
503
|
+
</li>
|
504
|
+
|
505
|
+
|
506
|
+
|
507
|
+
|
508
|
+
|
509
|
+
|
510
|
+
|
511
|
+
<li class="md-nav__item">
|
512
|
+
<a href="../../advanced/user_config_files/" title="User Config Files" class="md-nav__link">
|
513
|
+
User Config Files
|
514
|
+
</a>
|
515
|
+
</li>
|
516
|
+
|
517
|
+
|
518
|
+
|
519
|
+
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
<li class="md-nav__item">
|
524
|
+
<a href="../../advanced/hooks/" title="Hooks" class="md-nav__link">
|
525
|
+
Hooks
|
526
|
+
</a>
|
527
|
+
</li>
|
528
|
+
|
529
|
+
|
530
|
+
|
531
|
+
|
532
|
+
|
533
|
+
|
534
|
+
|
535
|
+
<li class="md-nav__item">
|
536
|
+
<a href="../../advanced/automatic_updates/" title="Automatic Updates" class="md-nav__link">
|
537
|
+
Automatic Updates
|
538
|
+
</a>
|
539
|
+
</li>
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
<li class="md-nav__item">
|
548
|
+
<a href="../../advanced/state_storage/" title="State Storage" class="md-nav__link">
|
549
|
+
State Storage
|
550
|
+
</a>
|
551
|
+
</li>
|
552
|
+
|
553
|
+
|
554
|
+
|
555
|
+
|
556
|
+
|
557
|
+
|
558
|
+
|
559
|
+
<li class="md-nav__item">
|
560
|
+
<a href="../../advanced/distributed_state_locking/" title="Distributed State Locking" class="md-nav__link">
|
561
|
+
Distributed State Locking
|
562
|
+
</a>
|
563
|
+
</li>
|
564
|
+
|
565
|
+
|
566
|
+
</ul>
|
567
|
+
</nav>
|
568
|
+
</li>
|
569
|
+
|
570
|
+
|
571
|
+
|
572
|
+
|
573
|
+
|
574
|
+
|
575
|
+
|
576
|
+
<li class="md-nav__item md-nav__item--nested">
|
577
|
+
|
578
|
+
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
|
579
|
+
|
580
|
+
<label class="md-nav__link" for="nav-5">
|
581
|
+
Development
|
582
|
+
</label>
|
583
|
+
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
|
584
|
+
<label class="md-nav__title" for="nav-5">
|
585
|
+
Development
|
586
|
+
</label>
|
587
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
588
|
+
|
589
|
+
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
|
594
|
+
|
595
|
+
<li class="md-nav__item">
|
596
|
+
<a href="../../development/contributing/" title="Contribution Guide" class="md-nav__link">
|
597
|
+
Contribution Guide
|
598
|
+
</a>
|
599
|
+
</li>
|
600
|
+
|
601
|
+
|
602
|
+
|
603
|
+
|
604
|
+
|
605
|
+
|
606
|
+
|
607
|
+
<li class="md-nav__item">
|
608
|
+
<a href="../../development/license/" title="License Info" class="md-nav__link">
|
609
|
+
License Info
|
610
|
+
</a>
|
611
|
+
</li>
|
612
|
+
|
613
|
+
|
614
|
+
|
615
|
+
|
616
|
+
|
617
|
+
|
618
|
+
|
619
|
+
<li class="md-nav__item">
|
620
|
+
<a href="../../development/code_of_conduct/" title="Code of Conduct" class="md-nav__link">
|
621
|
+
Code of Conduct
|
622
|
+
</a>
|
623
|
+
</li>
|
624
|
+
|
625
|
+
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
|
630
|
+
|
631
|
+
<li class="md-nav__item">
|
632
|
+
<a href="../../imported/changelog/" title="Changelog" class="md-nav__link">
|
633
|
+
Changelog
|
634
|
+
</a>
|
635
|
+
</li>
|
636
|
+
|
637
|
+
|
638
|
+
</ul>
|
639
|
+
</nav>
|
640
|
+
</li>
|
641
|
+
|
642
|
+
|
643
|
+
|
644
|
+
|
645
|
+
|
646
|
+
|
647
|
+
|
648
|
+
<li class="md-nav__item">
|
649
|
+
<a href="../../whoami/" title="$ whoami" class="md-nav__link">
|
650
|
+
$ whoami
|
651
|
+
</a>
|
652
|
+
</li>
|
653
|
+
|
654
|
+
|
655
|
+
</ul>
|
656
|
+
</nav>
|
657
|
+
</div>
|
658
|
+
</div>
|
659
|
+
</div>
|
660
|
+
|
661
|
+
|
662
|
+
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
|
663
|
+
<div class="md-sidebar__scrollwrap">
|
664
|
+
<div class="md-sidebar__inner">
|
665
|
+
|
666
|
+
<nav class="md-nav md-nav--secondary">
|
667
|
+
|
668
|
+
|
669
|
+
|
670
|
+
|
671
|
+
|
672
|
+
<label class="md-nav__title" for="__toc">Table of contents</label>
|
673
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
674
|
+
|
675
|
+
<li class="md-nav__item">
|
676
|
+
<a href="#common-tasks" title="Common Tasks" class="md-nav__link">
|
677
|
+
Common Tasks
|
678
|
+
</a>
|
679
|
+
|
680
|
+
</li>
|
681
|
+
|
682
|
+
<li class="md-nav__item">
|
683
|
+
<a href="#source-control-distribution" title="Source Control Distribution" class="md-nav__link">
|
684
|
+
Source Control Distribution
|
685
|
+
</a>
|
686
|
+
|
687
|
+
</li>
|
688
|
+
|
689
|
+
<li class="md-nav__item">
|
690
|
+
<a href="#rubygemsorg-distribution" title="Rubygems.org Distribution" class="md-nav__link">
|
691
|
+
Rubygems.org Distribution
|
692
|
+
</a>
|
693
|
+
|
694
|
+
</li>
|
695
|
+
|
696
|
+
<li class="md-nav__item">
|
697
|
+
<a href="#recommended-platforms" title="Recommended Platforms" class="md-nav__link">
|
698
|
+
Recommended Platforms
|
699
|
+
</a>
|
700
|
+
|
701
|
+
</li>
|
702
|
+
|
703
|
+
<li class="md-nav__item">
|
704
|
+
<a href="#next-steps" title="Next Steps" class="md-nav__link">
|
705
|
+
Next Steps
|
706
|
+
</a>
|
707
|
+
|
708
|
+
</li>
|
709
|
+
|
710
|
+
|
711
|
+
|
712
|
+
|
713
|
+
|
714
|
+
</ul>
|
715
|
+
|
716
|
+
</nav>
|
717
|
+
</div>
|
718
|
+
</div>
|
719
|
+
</div>
|
720
|
+
|
721
|
+
|
722
|
+
<div class="md-content">
|
723
|
+
<article class="md-content__inner md-typeset">
|
724
|
+
|
725
|
+
|
726
|
+
|
727
|
+
<h1 id="publishing-your-application">Publishing Your Application</h1>
|
728
|
+
<p>RBCli creates projects designed to be easily distributed via either source control or as a gem. We'll go over both methods.</p>
|
729
|
+
<h2 id="common-tasks">Common Tasks</h2>
|
730
|
+
<p>Regardless of where you are publishing, certain tasks need to be accomplished. Namely, preparing the gemspec and the README.</p>
|
731
|
+
<p>In both files the items that need changing are pretty obvious -- you'll need to fill out your name, email, etc, and replace the placeholder text in the README with something useful to your users.</p>
|
732
|
+
<p>Then, for every release, you'll need to update the version number in <code>config/version.rb</code>. This number is automatically used by the <code>gemspec</code> when versioning the gem in the system, and by RBCli when displaying help to the user and checking for automatic updates if you enable that feature (see <a href="../../advanced/automatic_updates/">Automatic Updates</a> for more information).</p>
|
733
|
+
<h2 id="source-control-distribution">Source Control Distribution</h2>
|
734
|
+
<p>With Source Control distribution your users will be cloning the source code directly from your repository, and building and installing the gem locally. Thankfully, the process is pretty simple:</p>
|
735
|
+
<pre><code class="bash">git clone <your_repo_here>
|
736
|
+
gem build mytool.gemspec
|
737
|
+
gem install mytool-*.gem
|
738
|
+
</code></pre>
|
739
|
+
|
740
|
+
<p>Note that he README's placeholder text has these commands already listed for your users, which you can leave as instructions.</p>
|
741
|
+
<p>When using this method, we highly recommend using a git flow where you only merge to master when you are ready to release, this way your users don't inadvertently download a buggy commit.</p>
|
742
|
+
<h2 id="rubygemsorg-distribution">Rubygems.org Distribution</h2>
|
743
|
+
<p>If you're distributing as a gem via Rubygems.org, you'll need to follow a specific release process.</p>
|
744
|
+
<ol>
|
745
|
+
<li>Update the version number in <code>config/version.rb</code></li>
|
746
|
+
<li>Commit the change locally</li>
|
747
|
+
<li>Run <code>bundle exec rake release</code></li>
|
748
|
+
</ol>
|
749
|
+
<p>This will create a git tag for the version, push git commits and tags, and push the <code>.gem</code> file to <a href="https://rubygems.org">rubygems.org</a>.</p>
|
750
|
+
<h2 id="recommended-platforms">Recommended Platforms</h2>
|
751
|
+
<p>As far as RBCli is concerned, all Git hosts and gem platforms work equally well, and as long as the code reaches your users in one piece it's all the same. That said, if you'd like to take advantage of automatic update notifications for your users, please see the documentation for <a href="../../advanced/automatic_updates/">Automatic Updates</a> for a list of supported platforms for that feature. </p>
|
752
|
+
<h2 id="next-steps">Next Steps</h2>
|
753
|
+
<p>Congratulations! You've completed the tutorial on RBCli and should be able to make all sorts of CLI applications and tools with what you learned. That said, there are still many features in RBCli that we didn't explore, which you can find in the <strong>Advanced</strong> section of this site. If you aren't sure where to start, we recommend looking at <a href="../../advanced/user_config_files/">User Config Files</a> and going from there.</p>
|
754
|
+
|
755
|
+
|
756
|
+
|
757
|
+
|
758
|
+
|
759
|
+
|
760
|
+
|
761
|
+
|
762
|
+
|
763
|
+
</article>
|
764
|
+
</div>
|
765
|
+
</div>
|
766
|
+
</main>
|
767
|
+
|
768
|
+
|
769
|
+
<footer class="md-footer">
|
770
|
+
|
771
|
+
<div class="md-footer-nav">
|
772
|
+
<nav class="md-footer-nav__inner md-grid">
|
773
|
+
|
774
|
+
<a href="../40-options_parameters_and_arguments/" title="Options, Parameters, and Arguments" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
|
775
|
+
<div class="md-flex__cell md-flex__cell--shrink">
|
776
|
+
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
|
777
|
+
</div>
|
778
|
+
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
|
779
|
+
<span class="md-flex__ellipsis">
|
780
|
+
<span class="md-footer-nav__direction">
|
781
|
+
Previous
|
782
|
+
</span>
|
783
|
+
Options, Parameters, and Arguments
|
784
|
+
</span>
|
785
|
+
</div>
|
786
|
+
</a>
|
787
|
+
|
788
|
+
|
789
|
+
<a href="../../advanced/command_types/" title="Command Types" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
|
790
|
+
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
|
791
|
+
<span class="md-flex__ellipsis">
|
792
|
+
<span class="md-footer-nav__direction">
|
793
|
+
Next
|
794
|
+
</span>
|
795
|
+
Command Types
|
796
|
+
</span>
|
797
|
+
</div>
|
798
|
+
<div class="md-flex__cell md-flex__cell--shrink">
|
799
|
+
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
|
800
|
+
</div>
|
801
|
+
</a>
|
802
|
+
|
803
|
+
</nav>
|
804
|
+
</div>
|
805
|
+
|
806
|
+
<div class="md-footer-meta md-typeset">
|
807
|
+
<div class="md-footer-meta__inner md-grid">
|
808
|
+
<div class="md-footer-copyright">
|
809
|
+
|
810
|
+
<div class="md-footer-copyright__highlight">
|
811
|
+
Copyright © 2018 Andrew Khoury
|
812
|
+
</div>
|
813
|
+
|
814
|
+
powered by
|
815
|
+
<a href="https://www.mkdocs.org">MkDocs</a>
|
816
|
+
and
|
817
|
+
<a href="https://squidfunk.github.io/mkdocs-material/">
|
818
|
+
Material for MkDocs</a>
|
819
|
+
</div>
|
820
|
+
|
821
|
+
|
822
|
+
|
823
|
+
</div>
|
824
|
+
</div>
|
825
|
+
</footer>
|
826
|
+
|
827
|
+
</div>
|
828
|
+
|
829
|
+
<script src="../../assets/javascripts/application.a59e2a89.js"></script>
|
830
|
+
|
831
|
+
<script>app.initialize({version:"0.17.5",url:{base:"../.."}})</script>
|
832
|
+
|
833
|
+
|
834
|
+
|
835
|
+
|
836
|
+
|
837
|
+
</body>
|
838
|
+
</html>
|