cli_helper 0.1.2 → 0.1.3
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 +4 -4
- data/README.md +5 -0
- data/cli_helper.gemspec +1 -1
- data/example/cli_stub.rb +19 -2
- data/lib/cli_helper.rb +66 -51
- data/tests/cli_helper_test.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 970583c4a48a1bf449f0175963d74582823ee95f
|
4
|
+
data.tar.gz: c01c2f4fe14edc456ff6693434a725419b0f9e0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ca124bb2d25a1f8b11c6fc250542926ffa7e772fb1c6462865feee930bc9241016354bf49909a8e5c9aead7aea79fb38512c718e7ba9633d9a0e97df4ac54d2
|
7
|
+
data.tar.gz: acbbd43bbc7653fe5a0850b2fcc55c3be75cd7b888a2b4a9990cb1c8f82ace6dc1b71b9a18422a21d9791ffec204194dd9d00af08c3071943dcea89a2382f39c
|
data/README.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Most recent changes
|
4
4
|
|
5
|
+
### v0.1.3
|
6
|
+
|
7
|
+
* added ability to process a directory of config files
|
8
|
+
* added ability to process a default set of config files that could get over-written by specific config files specified on the command line
|
9
|
+
|
5
10
|
### v0.1.2
|
6
11
|
|
7
12
|
* replaced the parseconfig gem with the inifile gem -- this now enables the use of ERB in *.ini and *.txt config files
|
data/cli_helper.gemspec
CHANGED
data/example/cli_stub.rb
CHANGED
@@ -9,10 +9,10 @@
|
|
9
9
|
|
10
10
|
require 'awesome_print'
|
11
11
|
|
12
|
-
require 'cli_helper'
|
12
|
+
require '../lib/cli_helper'
|
13
13
|
include CliHelper
|
14
14
|
|
15
|
-
configatron.version = '0.0.
|
15
|
+
configatron.version = '0.0.2' # the version of this utility program
|
16
16
|
configatron.enable_config_files = true # default is false
|
17
17
|
configatron.disable_help = false # default is false set true to remove the option
|
18
18
|
configatron.disable_verbose = false # ditto
|
@@ -20,6 +20,23 @@ configatron.disable_debug = false # ditto
|
|
20
20
|
configatron.disable_version = false # ditto
|
21
21
|
configatron.suppress_errors = false # set to true to eat exceptions; unknown options added to arguments
|
22
22
|
|
23
|
+
|
24
|
+
# Sometimes you may have a few default config files that you
|
25
|
+
# want to apply before the command-line options. Do it like
|
26
|
+
# something like this:
|
27
|
+
%w[
|
28
|
+
../tests/config/sample.yml
|
29
|
+
../tests/config/sample.yml.erb
|
30
|
+
].each do |dcf|
|
31
|
+
cli_helper_process_config_file(dcf)
|
32
|
+
end
|
33
|
+
|
34
|
+
# OR just pass a directory and all of the config files in the
|
35
|
+
# directory will be processed:
|
36
|
+
|
37
|
+
cli_helper_process_config_file('../tests/config')
|
38
|
+
|
39
|
+
|
23
40
|
# HELP is extra stuff shown with usage. It is optional. You
|
24
41
|
# can put anything you want into it. Since it is optional, it
|
25
42
|
# can be completely left out of your program. This HELP text
|
data/lib/cli_helper.rb
CHANGED
@@ -108,6 +108,66 @@ module CliHelper
|
|
108
108
|
return an_ini_object.to_h
|
109
109
|
end
|
110
110
|
|
111
|
+
def cli_helper_process_config_file(a_cf)
|
112
|
+
cf = String == a_cf.class ? Pathname.new(a_cf) : a_cf
|
113
|
+
if cf.directory?
|
114
|
+
cf.children.each do |ccf|
|
115
|
+
cli_helper_process_config_file(ccf)
|
116
|
+
end
|
117
|
+
return
|
118
|
+
end
|
119
|
+
unless cf.exist?
|
120
|
+
error "Config file is missing: #{cf}"
|
121
|
+
else
|
122
|
+
file_type = case cf.extname.downcase
|
123
|
+
when '.rb'
|
124
|
+
:ruby
|
125
|
+
when '.yml', '.yaml'
|
126
|
+
:yaml
|
127
|
+
when '.ini', '.txt'
|
128
|
+
:ini
|
129
|
+
when '.erb'
|
130
|
+
extname = cf.basename.to_s.downcase.gsub('.erb','').split('.').last
|
131
|
+
if %w[ yml yaml].include? extname
|
132
|
+
:yaml
|
133
|
+
elsif %w[ ini txt ].include? extname
|
134
|
+
:ini
|
135
|
+
elsif 'rb' == extname
|
136
|
+
warning 'MakesNoSenseToMe: *.rb.erb is not supported'
|
137
|
+
:unknown
|
138
|
+
else
|
139
|
+
:unknown
|
140
|
+
end
|
141
|
+
else
|
142
|
+
:unknown
|
143
|
+
end
|
144
|
+
|
145
|
+
case file_type
|
146
|
+
when :ruby
|
147
|
+
load cf
|
148
|
+
when :yaml
|
149
|
+
configatron.configure_from_hash(
|
150
|
+
config_file_hash = configatron.configure_from_hash(
|
151
|
+
cli_helper_process_yaml(
|
152
|
+
cli_helper_process_erb(cf.read)
|
153
|
+
)
|
154
|
+
)
|
155
|
+
)
|
156
|
+
when :ini
|
157
|
+
configatron.configure_from_hash(
|
158
|
+
configatron.configure_from_hash(
|
159
|
+
cli_helper_process_ini(
|
160
|
+
cli_helper_process_erb(cf.read)
|
161
|
+
)
|
162
|
+
)
|
163
|
+
)
|
164
|
+
else
|
165
|
+
error "Do not know how to parse this file: #{cf}"
|
166
|
+
end # case type_type
|
167
|
+
end # unless cf.exist? || cf.directory?
|
168
|
+
end # def cli_helper_process_config_file(cf)
|
169
|
+
|
170
|
+
|
111
171
|
# Invoke Slop with common CLI parameters and custom
|
112
172
|
# parameters provided via a block. Create '?'
|
113
173
|
# for all boolean parameters that have a '--name' flag form.
|
@@ -157,64 +217,19 @@ module CliHelper
|
|
157
217
|
yield(param) if block_given?
|
158
218
|
|
159
219
|
if configatron.enable_config_files
|
160
|
-
param.paths '--config', 'read config file(s) [*.rb, *.yml, *.ini]'
|
220
|
+
param.paths '--config', 'read config file(s) [*.rb, *.yml, *.ini, *.erb]'
|
161
221
|
end
|
162
222
|
|
163
223
|
parser = Slop::Parser.new(param, suppress_errors: configatron.suppress_errors)
|
164
224
|
configatron.cli = parser.parse(ARGV)
|
165
225
|
|
166
|
-
#
|
226
|
+
# NOTE: The config files are being process before the
|
227
|
+
# command line options in order for the command
|
228
|
+
# line options to over-write the values from the
|
229
|
+
# config files.
|
167
230
|
if configatron.enable_config_files
|
168
|
-
|
169
231
|
configatron.cli[:config].each do |cf|
|
170
|
-
|
171
|
-
error "Config file is missing: #{cf}"
|
172
|
-
else
|
173
|
-
file_type = case cf.extname.downcase
|
174
|
-
when '.rb'
|
175
|
-
:ruby
|
176
|
-
when '.yml', '.yaml'
|
177
|
-
:yaml
|
178
|
-
when '.ini', '.txt'
|
179
|
-
:ini
|
180
|
-
when '.erb'
|
181
|
-
extname = cf.basename.to_s.downcase.gsub('.erb','').split('.').last
|
182
|
-
if %w[ yml yaml].include? extname
|
183
|
-
:yaml
|
184
|
-
elsif %w[ ini txt ].include? extname
|
185
|
-
:ini
|
186
|
-
elsif 'rb' == extname
|
187
|
-
raise 'MakesNoSenseToMe: *.rb.erb is not supported'
|
188
|
-
else
|
189
|
-
:unknown
|
190
|
-
end
|
191
|
-
else
|
192
|
-
:unknown
|
193
|
-
end
|
194
|
-
|
195
|
-
case file_type
|
196
|
-
when :ruby
|
197
|
-
load cf
|
198
|
-
when :yaml
|
199
|
-
configatron.configure_from_hash(
|
200
|
-
config_file_hash = configatron.configure_from_hash(
|
201
|
-
cli_helper_process_yaml(
|
202
|
-
cli_helper_process_erb(cf.read)
|
203
|
-
)
|
204
|
-
)
|
205
|
-
)
|
206
|
-
when :ini
|
207
|
-
configatron.configure_from_hash(
|
208
|
-
configatron.configure_from_hash(
|
209
|
-
cli_helper_process_ini(
|
210
|
-
cli_helper_process_erb(cf.read)
|
211
|
-
)
|
212
|
-
)
|
213
|
-
)
|
214
|
-
else
|
215
|
-
error "Do not know how to parse this file: #{cf}"
|
216
|
-
end # case type_type
|
217
|
-
end # unless cf.exist? || cf.directory?
|
232
|
+
cli_helper_process_config_file(cf)
|
218
233
|
end # configatron.cli.config.each do |cf|
|
219
234
|
end # if configatron.enable_config_files
|
220
235
|
|
data/tests/cli_helper_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cli_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dewayne VanHoozer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: configatron
|
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
201
|
version: '0'
|
202
202
|
requirements: []
|
203
203
|
rubyforge_project:
|
204
|
-
rubygems_version: 2.4.
|
204
|
+
rubygems_version: 2.4.4
|
205
205
|
signing_key:
|
206
206
|
specification_version: 4
|
207
207
|
summary: An encapsulation of an integration of slop, nenv, inifile and configatron.
|