cliutils 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +48 -0
- data/LICENSE.txt +22 -0
- data/README.md +288 -0
- data/README.rdoc +19 -0
- data/Rakefile +45 -0
- data/bin/cliutils +38 -0
- data/cliutils.gemspec +28 -0
- data/features/cli_manager.feature +13 -0
- data/features/step_definitions/cli_manager_steps.rb +1 -0
- data/features/support/env.rb +16 -0
- data/html/CLIUtils/Configuration.html +271 -0
- data/html/CLIUtils/Configurator.html +504 -0
- data/html/CLIUtils/LoggerDelegator.html +344 -0
- data/html/CLIUtils/Messenging.html +284 -0
- data/html/CLIUtils/Prefs.html +330 -0
- data/html/CLIUtils/PrettyIO.html +799 -0
- data/html/CLIUtils.html +112 -0
- data/html/Hash.html +453 -0
- data/html/Logger.html +183 -0
- data/html/Object.html +120 -0
- data/html/README_md.html +454 -0
- data/html/String.html +413 -0
- data/html/created.rid +13 -0
- data/html/fonts/Lato-Light.ttf +0 -0
- data/html/fonts/Lato-LightItalic.ttf +0 -0
- data/html/fonts/Lato-Regular.ttf +0 -0
- data/html/fonts/Lato-RegularItalic.ttf +0 -0
- data/html/fonts/SourceCodePro-Bold.ttf +0 -0
- data/html/fonts/SourceCodePro-Regular.ttf +0 -0
- data/html/fonts.css +167 -0
- data/html/images/add.png +0 -0
- data/html/images/arrow_up.png +0 -0
- data/html/images/brick.png +0 -0
- data/html/images/brick_link.png +0 -0
- data/html/images/bug.png +0 -0
- data/html/images/bullet_black.png +0 -0
- data/html/images/bullet_toggle_minus.png +0 -0
- data/html/images/bullet_toggle_plus.png +0 -0
- data/html/images/date.png +0 -0
- data/html/images/delete.png +0 -0
- data/html/images/find.png +0 -0
- data/html/images/loadingAnimation.gif +0 -0
- data/html/images/macFFBgHack.png +0 -0
- data/html/images/package.png +0 -0
- data/html/images/page_green.png +0 -0
- data/html/images/page_white_text.png +0 -0
- data/html/images/page_white_width.png +0 -0
- data/html/images/plugin.png +0 -0
- data/html/images/ruby.png +0 -0
- data/html/images/tag_blue.png +0 -0
- data/html/images/tag_green.png +0 -0
- data/html/images/transparent.png +0 -0
- data/html/images/wrench.png +0 -0
- data/html/images/wrench_orange.png +0 -0
- data/html/images/zoom.png +0 -0
- data/html/index.html +455 -0
- data/html/js/darkfish.js +140 -0
- data/html/js/jquery.js +18 -0
- data/html/js/navigation.js +142 -0
- data/html/js/search.js +109 -0
- data/html/js/search_index.js +1 -0
- data/html/js/searcher.js +228 -0
- data/html/rdoc.css +580 -0
- data/html/table_of_contents.html +399 -0
- data/lib/.DS_Store +0 -0
- data/lib/cliutils/configuration.rb +48 -0
- data/lib/cliutils/configurator.rb +119 -0
- data/lib/cliutils/ext/Hash+Extensions.rb +145 -0
- data/lib/cliutils/ext/Logger+Extensions.rb +27 -0
- data/lib/cliutils/ext/String+Extensions.rb +26 -0
- data/lib/cliutils/logger-delegator.rb +66 -0
- data/lib/cliutils/messenging.rb +51 -0
- data/lib/cliutils/prefs.rb +116 -0
- data/lib/cliutils/pretty-io.rb +255 -0
- data/lib/cliutils/version.rb +3 -0
- data/lib/cliutils.rb +15 -0
- data/res/readme-images/messenger-types-1.png +0 -0
- data/res/readme-images/messenger-warn.png +0 -0
- data/res/readme-images/multi-logger.png +0 -0
- data/res/readme-images/prettyio-color-chart.png +0 -0
- data/res/readme-images/prettyio-gnarly-text.png +0 -0
- data/res/readme-images/prettyio-red-text.png +0 -0
- data/res/readme-images/prompting.png +0 -0
- data/res/readme-images/wrapping.png +0 -0
- data/test/configurator_test.rb +50 -0
- data/test/hash_extensions_test.rb +50 -0
- data/test/logger_extensions_test.rb +16 -0
- data/test/messenging_test.rb +53 -0
- data/test/prefs_test.rb +29 -0
- data/test/string_extesions_test.rb +14 -0
- data/test/test_files/prefstest.yaml +33 -0
- metadata +199 -0
@@ -0,0 +1,399 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>Table of Contents - CLIUtils</title>
|
8
|
+
|
9
|
+
<link href="./fonts.css" rel="stylesheet">
|
10
|
+
<link href="./rdoc.css" rel="stylesheet">
|
11
|
+
|
12
|
+
<script type="text/javascript">
|
13
|
+
var rdoc_rel_prefix = "./";
|
14
|
+
</script>
|
15
|
+
|
16
|
+
<script src="./js/jquery.js"></script>
|
17
|
+
<script src="./js/navigation.js"></script>
|
18
|
+
<script src="./js/search_index.js"></script>
|
19
|
+
<script src="./js/search.js"></script>
|
20
|
+
<script src="./js/searcher.js"></script>
|
21
|
+
<script src="./js/darkfish.js"></script>
|
22
|
+
|
23
|
+
|
24
|
+
<body id="top" class="table-of-contents">
|
25
|
+
<main role="main">
|
26
|
+
<h1 class="class">Table of Contents - CLIUtils</h1>
|
27
|
+
|
28
|
+
<h2 id="pages">Pages</h2>
|
29
|
+
<ul>
|
30
|
+
<li class="file">
|
31
|
+
<a href="README_md.html">README</a>
|
32
|
+
|
33
|
+
<ul>
|
34
|
+
<li><a href="README_md.html#label-CLIUtils">CLIUtils</a>
|
35
|
+
<li><a href="README_md.html#label-Why%3F">Why?</a>
|
36
|
+
<li><a href="README_md.html#label-Installation">Installation</a>
|
37
|
+
<li><a href="README_md.html#label-Usage">Usage</a>
|
38
|
+
<li><a href="README_md.html#label-Libraries">Libraries</a>
|
39
|
+
<li><a href="README_md.html#label-PrettyIO">PrettyIO</a>
|
40
|
+
<li><a href="README_md.html#label-Messenging">Messenging</a>
|
41
|
+
<li><a href="README_md.html#label-Messenging+Methods">Messenging Methods</a>
|
42
|
+
<li><a href="README_md.html#label-Message+Wrapping">Message Wrapping</a>
|
43
|
+
<li><a href="README_md.html#label-Prompting">Prompting</a>
|
44
|
+
<li><a href="README_md.html#label-Logging">Logging</a>
|
45
|
+
<li><a href="README_md.html#label-Configuration">Configuration</a>
|
46
|
+
<li><a href="README_md.html#label-Loading+a+Configuration+File">Loading a Configuration File</a>
|
47
|
+
<li><a href="README_md.html#label-Adding%2FRemoving+Sections">Adding/Removing Sections</a>
|
48
|
+
<li><a href="README_md.html#label-Adding+Data+to+Sections">Adding Data to Sections</a>
|
49
|
+
<li><a href="README_md.html#label-Saving+to+a+File">Saving to a File</a>
|
50
|
+
<li><a href="README_md.html#label-Known+Issues">Known Issues</a>
|
51
|
+
<li><a href="README_md.html#label-Bugs+and+Feature+Requests">Bugs and Feature Requests</a>
|
52
|
+
<li><a href="README_md.html#label-Contributing">Contributing</a>
|
53
|
+
<li><a href="README_md.html#label-License">License</a>
|
54
|
+
</ul>
|
55
|
+
</li>
|
56
|
+
|
57
|
+
</ul>
|
58
|
+
|
59
|
+
<h2 id="classes">Classes and Modules</h2>
|
60
|
+
<ul>
|
61
|
+
<li class="module">
|
62
|
+
<a href="CLIUtils.html">CLIUtils</a>
|
63
|
+
</li>
|
64
|
+
<li class="module">
|
65
|
+
<a href="CLIUtils/Configuration.html">CLIUtils::Configuration</a>
|
66
|
+
|
67
|
+
<ul>
|
68
|
+
<li><a href="CLIUtils/Configuration.html#label-"></a>
|
69
|
+
<li><a href="CLIUtils/Configuration.html#label-"></a>
|
70
|
+
</ul>
|
71
|
+
</li>
|
72
|
+
<li class="class">
|
73
|
+
<a href="CLIUtils/Configurator.html">CLIUtils::Configurator</a>
|
74
|
+
|
75
|
+
<ul>
|
76
|
+
<li><a href="CLIUtils/Configurator.html#label-"></a>
|
77
|
+
<li><a href="CLIUtils/Configurator.html#label-"></a>
|
78
|
+
</ul>
|
79
|
+
</li>
|
80
|
+
<li class="class">
|
81
|
+
<a href="CLIUtils/LoggerDelegator.html">CLIUtils::LoggerDelegator</a>
|
82
|
+
|
83
|
+
<ul>
|
84
|
+
<li><a href="CLIUtils/LoggerDelegator.html#label-"></a>
|
85
|
+
<li><a href="CLIUtils/LoggerDelegator.html#label-"></a>
|
86
|
+
</ul>
|
87
|
+
</li>
|
88
|
+
<li class="module">
|
89
|
+
<a href="CLIUtils/Messenging.html">CLIUtils::Messenging</a>
|
90
|
+
|
91
|
+
<ul>
|
92
|
+
<li><a href="CLIUtils/Messenging.html#label-"></a>
|
93
|
+
<li><a href="CLIUtils/Messenging.html#label-"></a>
|
94
|
+
</ul>
|
95
|
+
</li>
|
96
|
+
<li class="class">
|
97
|
+
<a href="CLIUtils/Prefs.html">CLIUtils::Prefs</a>
|
98
|
+
|
99
|
+
<ul>
|
100
|
+
<li><a href="CLIUtils/Prefs.html#label-"></a>
|
101
|
+
<li><a href="CLIUtils/Prefs.html#label-"></a>
|
102
|
+
</ul>
|
103
|
+
</li>
|
104
|
+
<li class="module">
|
105
|
+
<a href="CLIUtils/PrettyIO.html">CLIUtils::PrettyIO</a>
|
106
|
+
|
107
|
+
<ul>
|
108
|
+
<li><a href="CLIUtils/PrettyIO.html#label-"></a>
|
109
|
+
<li><a href="CLIUtils/PrettyIO.html#label-"></a>
|
110
|
+
</ul>
|
111
|
+
</li>
|
112
|
+
<li class="class">
|
113
|
+
<a href="Hash.html">Hash</a>
|
114
|
+
|
115
|
+
<ul>
|
116
|
+
<li><a href="Hash.html#label-"></a>
|
117
|
+
<li><a href="Hash.html#label-"></a>
|
118
|
+
</ul>
|
119
|
+
</li>
|
120
|
+
<li class="class">
|
121
|
+
<a href="Logger.html">Logger</a>
|
122
|
+
|
123
|
+
<ul>
|
124
|
+
<li><a href="Logger.html#label-"></a>
|
125
|
+
<li><a href="Logger.html#label-"></a>
|
126
|
+
</ul>
|
127
|
+
</li>
|
128
|
+
<li class="class">
|
129
|
+
<a href="String.html">String</a>
|
130
|
+
|
131
|
+
<ul>
|
132
|
+
<li><a href="String.html#label-"></a>
|
133
|
+
<li><a href="String.html#label-"></a>
|
134
|
+
</ul>
|
135
|
+
</li>
|
136
|
+
</ul>
|
137
|
+
|
138
|
+
<h2 id="methods">Methods</h2>
|
139
|
+
<ul>
|
140
|
+
|
141
|
+
<li class="method">
|
142
|
+
<a href="Logger.html#method-c-custom_level">::custom_level</a>
|
143
|
+
—
|
144
|
+
<span class="container">Logger</span>
|
145
|
+
|
146
|
+
<li class="method">
|
147
|
+
<a href="CLIUtils/LoggerDelegator.html#method-c-delegate">::delegate</a>
|
148
|
+
—
|
149
|
+
<span class="container">CLIUtils::LoggerDelegator</span>
|
150
|
+
|
151
|
+
<li class="method">
|
152
|
+
<a href="CLIUtils/PrettyIO.html#method-c-included">::included</a>
|
153
|
+
—
|
154
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
155
|
+
|
156
|
+
<li class="method">
|
157
|
+
<a href="CLIUtils/Configuration.html#method-c-included">::included</a>
|
158
|
+
—
|
159
|
+
<span class="container">CLIUtils::Configuration</span>
|
160
|
+
|
161
|
+
<li class="method">
|
162
|
+
<a href="CLIUtils/Messenging.html#method-c-included">::included</a>
|
163
|
+
—
|
164
|
+
<span class="container">CLIUtils::Messenging</span>
|
165
|
+
|
166
|
+
<li class="method">
|
167
|
+
<a href="CLIUtils/Configurator.html#method-c-new">::new</a>
|
168
|
+
—
|
169
|
+
<span class="container">CLIUtils::Configurator</span>
|
170
|
+
|
171
|
+
<li class="method">
|
172
|
+
<a href="CLIUtils/Prefs.html#method-c-new">::new</a>
|
173
|
+
—
|
174
|
+
<span class="container">CLIUtils::Prefs</span>
|
175
|
+
|
176
|
+
<li class="method">
|
177
|
+
<a href="CLIUtils/LoggerDelegator.html#method-c-new">::new</a>
|
178
|
+
—
|
179
|
+
<span class="container">CLIUtils::LoggerDelegator</span>
|
180
|
+
|
181
|
+
<li class="method">
|
182
|
+
<a href="CLIUtils/PrettyIO.html#method-c-wrap">::wrap</a>
|
183
|
+
—
|
184
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
185
|
+
|
186
|
+
<li class="method">
|
187
|
+
<a href="CLIUtils/PrettyIO.html#method-c-wrap_at">::wrap_at</a>
|
188
|
+
—
|
189
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
190
|
+
|
191
|
+
<li class="method">
|
192
|
+
<a href="CLIUtils/PrettyIO.html#method-c-wrap_limit">::wrap_limit</a>
|
193
|
+
—
|
194
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
195
|
+
|
196
|
+
<li class="method">
|
197
|
+
<a href="CLIUtils/Configurator.html#method-i-add_section">#add_section</a>
|
198
|
+
—
|
199
|
+
<span class="container">CLIUtils::Configurator</span>
|
200
|
+
|
201
|
+
<li class="method">
|
202
|
+
<a href="CLIUtils/Prefs.html#method-i-ask">#ask</a>
|
203
|
+
—
|
204
|
+
<span class="container">CLIUtils::Prefs</span>
|
205
|
+
|
206
|
+
<li class="method">
|
207
|
+
<a href="CLIUtils/LoggerDelegator.html#method-i-attach">#attach</a>
|
208
|
+
—
|
209
|
+
<span class="container">CLIUtils::LoggerDelegator</span>
|
210
|
+
|
211
|
+
<li class="method">
|
212
|
+
<a href="String.html#method-i-blue">#blue</a>
|
213
|
+
—
|
214
|
+
<span class="container">String</span>
|
215
|
+
|
216
|
+
<li class="method">
|
217
|
+
<a href="CLIUtils/PrettyIO.html#method-i-color_chart">#color_chart</a>
|
218
|
+
—
|
219
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
220
|
+
|
221
|
+
<li class="method">
|
222
|
+
<a href="String.html#method-i-colorize">#colorize</a>
|
223
|
+
—
|
224
|
+
<span class="container">String</span>
|
225
|
+
|
226
|
+
<li class="method">
|
227
|
+
<a href="CLIUtils/Configuration.html#method-i-configuration">#configuration</a>
|
228
|
+
—
|
229
|
+
<span class="container">CLIUtils::Configuration</span>
|
230
|
+
|
231
|
+
<li class="method">
|
232
|
+
<a href="String.html#method-i-cyan">#cyan</a>
|
233
|
+
—
|
234
|
+
<span class="container">String</span>
|
235
|
+
|
236
|
+
<li class="method">
|
237
|
+
<a href="CLIUtils/PrettyIO.html#method-i-debug">#debug</a>
|
238
|
+
—
|
239
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
240
|
+
|
241
|
+
<li class="method">
|
242
|
+
<a href="Hash.html#method-i-deep_merge-21">#deep_merge!</a>
|
243
|
+
—
|
244
|
+
<span class="container">Hash</span>
|
245
|
+
|
246
|
+
<li class="method">
|
247
|
+
<a href="Hash.html#method-i-deep_stringify_keys">#deep_stringify_keys</a>
|
248
|
+
—
|
249
|
+
<span class="container">Hash</span>
|
250
|
+
|
251
|
+
<li class="method">
|
252
|
+
<a href="Hash.html#method-i-deep_stringify_keys-21">#deep_stringify_keys!</a>
|
253
|
+
—
|
254
|
+
<span class="container">Hash</span>
|
255
|
+
|
256
|
+
<li class="method">
|
257
|
+
<a href="Hash.html#method-i-deep_symbolize_keys">#deep_symbolize_keys</a>
|
258
|
+
—
|
259
|
+
<span class="container">Hash</span>
|
260
|
+
|
261
|
+
<li class="method">
|
262
|
+
<a href="Hash.html#method-i-deep_symbolize_keys-21">#deep_symbolize_keys!</a>
|
263
|
+
—
|
264
|
+
<span class="container">Hash</span>
|
265
|
+
|
266
|
+
<li class="method">
|
267
|
+
<a href="Hash.html#method-i-deep_transform_keys">#deep_transform_keys</a>
|
268
|
+
—
|
269
|
+
<span class="container">Hash</span>
|
270
|
+
|
271
|
+
<li class="method">
|
272
|
+
<a href="Hash.html#method-i-deep_transform_keys-21">#deep_transform_keys!</a>
|
273
|
+
—
|
274
|
+
<span class="container">Hash</span>
|
275
|
+
|
276
|
+
<li class="method">
|
277
|
+
<a href="CLIUtils/Messenging.html#method-i-default_instance">#default_instance</a>
|
278
|
+
—
|
279
|
+
<span class="container">CLIUtils::Messenging</span>
|
280
|
+
|
281
|
+
<li class="method">
|
282
|
+
<a href="CLIUtils/Configurator.html#method-i-delete_section">#delete_section</a>
|
283
|
+
—
|
284
|
+
<span class="container">CLIUtils::Configurator</span>
|
285
|
+
|
286
|
+
<li class="method">
|
287
|
+
<a href="CLIUtils/LoggerDelegator.html#method-i-detach">#detach</a>
|
288
|
+
—
|
289
|
+
<span class="container">CLIUtils::LoggerDelegator</span>
|
290
|
+
|
291
|
+
<li class="method">
|
292
|
+
<a href="CLIUtils/PrettyIO.html#method-i-error">#error</a>
|
293
|
+
—
|
294
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
295
|
+
|
296
|
+
<li class="method">
|
297
|
+
<a href="String.html#method-i-green">#green</a>
|
298
|
+
—
|
299
|
+
<span class="container">String</span>
|
300
|
+
|
301
|
+
<li class="method">
|
302
|
+
<a href="CLIUtils/PrettyIO.html#method-i-info">#info</a>
|
303
|
+
—
|
304
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
305
|
+
|
306
|
+
<li class="method">
|
307
|
+
<a href="CLIUtils/PrettyIO.html#method-i-info_block">#info_block</a>
|
308
|
+
—
|
309
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
310
|
+
|
311
|
+
<li class="method">
|
312
|
+
<a href="CLIUtils/Configurator.html#method-i-ingest_prefs">#ingest_prefs</a>
|
313
|
+
—
|
314
|
+
<span class="container">CLIUtils::Configurator</span>
|
315
|
+
|
316
|
+
<li class="method">
|
317
|
+
<a href="CLIUtils/Configuration.html#method-i-load_configuration">#load_configuration</a>
|
318
|
+
—
|
319
|
+
<span class="container">CLIUtils::Configuration</span>
|
320
|
+
|
321
|
+
<li class="method">
|
322
|
+
<a href="CLIUtils/PrettyIO.html#method-i-log">#log</a>
|
323
|
+
—
|
324
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
325
|
+
|
326
|
+
<li class="method">
|
327
|
+
<a href="CLIUtils/Messenging.html#method-i-messenger">#messenger</a>
|
328
|
+
—
|
329
|
+
<span class="container">CLIUtils::Messenging</span>
|
330
|
+
|
331
|
+
<li class="method">
|
332
|
+
<a href="CLIUtils/Configurator.html#method-i-method_missing">#method_missing</a>
|
333
|
+
—
|
334
|
+
<span class="container">CLIUtils::Configurator</span>
|
335
|
+
|
336
|
+
<li class="method">
|
337
|
+
<a href="CLIUtils/PrettyIO.html#method-i-prompt">#prompt</a>
|
338
|
+
—
|
339
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
340
|
+
|
341
|
+
<li class="method">
|
342
|
+
<a href="String.html#method-i-purple">#purple</a>
|
343
|
+
—
|
344
|
+
<span class="container">String</span>
|
345
|
+
|
346
|
+
<li class="method">
|
347
|
+
<a href="String.html#method-i-red">#red</a>
|
348
|
+
—
|
349
|
+
<span class="container">String</span>
|
350
|
+
|
351
|
+
<li class="method">
|
352
|
+
<a href="CLIUtils/Configurator.html#method-i-reset">#reset</a>
|
353
|
+
—
|
354
|
+
<span class="container">CLIUtils::Configurator</span>
|
355
|
+
|
356
|
+
<li class="method">
|
357
|
+
<a href="CLIUtils/Configurator.html#method-i-save">#save</a>
|
358
|
+
—
|
359
|
+
<span class="container">CLIUtils::Configurator</span>
|
360
|
+
|
361
|
+
<li class="method">
|
362
|
+
<a href="CLIUtils/PrettyIO.html#method-i-section">#section</a>
|
363
|
+
—
|
364
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
365
|
+
|
366
|
+
<li class="method">
|
367
|
+
<a href="CLIUtils/PrettyIO.html#method-i-section_block">#section_block</a>
|
368
|
+
—
|
369
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
370
|
+
|
371
|
+
<li class="method">
|
372
|
+
<a href="CLIUtils/PrettyIO.html#method-i-success">#success</a>
|
373
|
+
—
|
374
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
375
|
+
|
376
|
+
<li class="method">
|
377
|
+
<a href="CLIUtils/PrettyIO.html#method-i-warn">#warn</a>
|
378
|
+
—
|
379
|
+
<span class="container">CLIUtils::PrettyIO</span>
|
380
|
+
|
381
|
+
<li class="method">
|
382
|
+
<a href="String.html#method-i-white">#white</a>
|
383
|
+
—
|
384
|
+
<span class="container">String</span>
|
385
|
+
|
386
|
+
<li class="method">
|
387
|
+
<a href="String.html#method-i-yellow">#yellow</a>
|
388
|
+
—
|
389
|
+
<span class="container">String</span>
|
390
|
+
</ul>
|
391
|
+
</main>
|
392
|
+
|
393
|
+
|
394
|
+
<footer id="validator-badges" role="contentinfo">
|
395
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
396
|
+
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
|
397
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
398
|
+
</footer>
|
399
|
+
|
data/lib/.DS_Store
ADDED
Binary file
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module CLIUtils
|
4
|
+
# ======================================================
|
5
|
+
# Configuration Class
|
6
|
+
#
|
7
|
+
# Manages any configuration values and the flat YAML file
|
8
|
+
# into which they get stored.
|
9
|
+
# ======================================================
|
10
|
+
module Configuration
|
11
|
+
# ====================================================
|
12
|
+
# Methods
|
13
|
+
# ====================================================
|
14
|
+
# ----------------------------------------------------
|
15
|
+
# included method
|
16
|
+
#
|
17
|
+
# Hook called when this module gets mixed in; extends
|
18
|
+
# the includer with the methods defined here.
|
19
|
+
# @param k The includer
|
20
|
+
# @return Void
|
21
|
+
# ----------------------------------------------------
|
22
|
+
def self.included(k)
|
23
|
+
k.extend(self)
|
24
|
+
end
|
25
|
+
|
26
|
+
# ----------------------------------------------------
|
27
|
+
# configuration method
|
28
|
+
#
|
29
|
+
# Singleton method to return (or initialize, if needed)
|
30
|
+
# a Configurator.
|
31
|
+
# @return Configurator
|
32
|
+
# ----------------------------------------------------
|
33
|
+
def configuration
|
34
|
+
@configuration ||= Configurator.new('~/.default-cliutils')
|
35
|
+
end
|
36
|
+
|
37
|
+
# ----------------------------------------------------
|
38
|
+
# load_configuration method
|
39
|
+
#
|
40
|
+
# Initializes a Configurator with the passed filepath.
|
41
|
+
# @param path The path to the config file
|
42
|
+
# @return Void
|
43
|
+
# ----------------------------------------------------
|
44
|
+
def load_configuration(path)
|
45
|
+
@configuration = Configurator.new(path)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module CLIUtils
|
4
|
+
# ======================================================
|
5
|
+
# Configuration Class
|
6
|
+
#
|
7
|
+
# Manages any configuration values and the flat YAML file
|
8
|
+
# into which they get stored.
|
9
|
+
# ======================================================
|
10
|
+
class Configurator
|
11
|
+
# ====================================================
|
12
|
+
# Attributes
|
13
|
+
# ====================================================
|
14
|
+
attr_reader :config_path, :data
|
15
|
+
|
16
|
+
# ====================================================
|
17
|
+
# Methods
|
18
|
+
# ====================================================
|
19
|
+
# ----------------------------------------------------
|
20
|
+
# initialize method
|
21
|
+
#
|
22
|
+
# Initializes configuration from a flat file.
|
23
|
+
# @param path The filepath to the config YAML
|
24
|
+
# @return void
|
25
|
+
# ----------------------------------------------------
|
26
|
+
def initialize(path)
|
27
|
+
_path = File.expand_path(path)
|
28
|
+
@config_path = _path
|
29
|
+
@data = {}
|
30
|
+
|
31
|
+
if File.exists?(_path)
|
32
|
+
data = YAML::load_file(_path)
|
33
|
+
@data.deep_merge!(data).deep_symbolize_keys!
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# ----------------------------------------------------
|
38
|
+
# add_section method
|
39
|
+
#
|
40
|
+
# Adds a new section to the config file (if it doesn't
|
41
|
+
# already exist).
|
42
|
+
# @param section_name The section to add
|
43
|
+
# @return Void
|
44
|
+
# ----------------------------------------------------
|
45
|
+
def add_section(section_name)
|
46
|
+
if !@data.key?(section_name)
|
47
|
+
@data[section_name] = {}
|
48
|
+
else
|
49
|
+
fail "Section already exists: #{ section_name }"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# ----------------------------------------------------
|
54
|
+
# delete_section method
|
55
|
+
#
|
56
|
+
# Removes a section to the config file (if it exists).
|
57
|
+
# @param section_name The section to remove
|
58
|
+
# @return Void
|
59
|
+
# ----------------------------------------------------
|
60
|
+
def delete_section(section_name)
|
61
|
+
if @data.key?(section_name)
|
62
|
+
@data.delete(section_name)
|
63
|
+
else
|
64
|
+
fail "Cannot delete nonexistent section: #{ section_name }"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# ----------------------------------------------------
|
69
|
+
# ingest_prefs method
|
70
|
+
#
|
71
|
+
# Ingests a Prefs class and adds its answers to the
|
72
|
+
# configuration data.
|
73
|
+
# @param prefs The Prefs class to examine
|
74
|
+
# @return Void
|
75
|
+
# ----------------------------------------------------
|
76
|
+
def ingest_prefs(prefs)
|
77
|
+
fail 'Invaid Prefs class' if !prefs.kind_of?(Prefs) || prefs.answers.nil?
|
78
|
+
prefs.answers.each do |p|
|
79
|
+
add_section(p[:section]) unless @data.key?(p[:section])
|
80
|
+
@data[p[:section]].merge!(p[:key] => p[:answer])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# ----------------------------------------------------
|
85
|
+
# method_missing method
|
86
|
+
#
|
87
|
+
# Allows this module to return data from the config
|
88
|
+
# Hash when given a method name that matches a key.
|
89
|
+
# @param name
|
90
|
+
# @param *args
|
91
|
+
# @param &block
|
92
|
+
# @return Hash
|
93
|
+
# ----------------------------------------------------
|
94
|
+
def method_missing(name, *args, &block)
|
95
|
+
@data[name.to_sym] || @data.merge!(name.to_sym => {})
|
96
|
+
end
|
97
|
+
|
98
|
+
# ----------------------------------------------------
|
99
|
+
# reset method
|
100
|
+
#
|
101
|
+
# Clears the configuration data.
|
102
|
+
# @return Void
|
103
|
+
# ----------------------------------------------------
|
104
|
+
def reset
|
105
|
+
@data = {}
|
106
|
+
end
|
107
|
+
|
108
|
+
# ----------------------------------------------------
|
109
|
+
# save method
|
110
|
+
#
|
111
|
+
# Saves the configuration data to the previously
|
112
|
+
# stored flat file.
|
113
|
+
# @return Void
|
114
|
+
# ----------------------------------------------------
|
115
|
+
def save
|
116
|
+
File.open(@config_path, 'w') { |f| f.write(@data.deep_stringify_keys.to_yaml) }
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|