bogo-cli 0.1.24 → 0.1.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/bogo-cli/command.rb +49 -9
- data/lib/bogo-cli/setup.rb +5 -1
- data/lib/bogo-cli/version.rb +1 -1
- data/lib/bogo-cli.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 733cb704c0dbee10eeecbee3b8ef8e82c240f37a
|
4
|
+
data.tar.gz: 7e8277e7ce4ad6d6db726580e9514ff4b2ba5921
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bef3ad2a370a30934ee4ceb7ab598cd09b3395cfad5dc55b635ea1d33472520901d5569faf21b78e83334cfe979588ae284a6cc752716df16e60622b7f66a4bc
|
7
|
+
data.tar.gz: ae66cbe20d18884bf2763923147bc9d74b2134b72b4be37968b16817b80b0a810bfc50516a3c5d03768eaec1724626533552634de893462e63ada7a9d14594ea
|
data/CHANGELOG.md
CHANGED
data/lib/bogo-cli/command.rb
CHANGED
@@ -11,6 +11,8 @@ module Bogo
|
|
11
11
|
|
12
12
|
# @return [Hash] options
|
13
13
|
attr_reader :options
|
14
|
+
# @return [Hash] default options
|
15
|
+
attr_reader :defaults
|
14
16
|
# @return [Array] cli arguments
|
15
17
|
attr_reader :arguments
|
16
18
|
# @return [Ui]
|
@@ -20,10 +22,15 @@ module Bogo
|
|
20
22
|
#
|
21
23
|
# @return [self]
|
22
24
|
def initialize(cli_opts, args)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
if(cli_opts.is_a?(Slop))
|
26
|
+
process_cli_options(cli_opts)
|
27
|
+
else
|
28
|
+
@defaults = Smash.new
|
29
|
+
@options = cli_opts.to_hash.to_smash(:snake)
|
30
|
+
[@options, *@options.values].compact.each do |hsh|
|
31
|
+
next unless hsh.is_a?(Hash)
|
32
|
+
hsh.delete_if{|k,v| v.nil?}
|
33
|
+
end
|
27
34
|
end
|
28
35
|
@arguments = args
|
29
36
|
ui_args = Smash.new(
|
@@ -84,12 +91,21 @@ module Bogo
|
|
84
91
|
end
|
85
92
|
config_inst = config_class.new(path) if path
|
86
93
|
end
|
87
|
-
new_opts = config_class.new(options)
|
88
|
-
@options = new_opts.to_smash
|
89
94
|
if(config_inst)
|
90
|
-
|
91
|
-
|
92
|
-
|
95
|
+
options.delete(:config)
|
96
|
+
@options = config_class.new(
|
97
|
+
defaults.to_smash.deep_merge(
|
98
|
+
config_inst.to_smash.deep_merge(
|
99
|
+
options.to_smash
|
100
|
+
)
|
101
|
+
)
|
102
|
+
).to_smash
|
103
|
+
else
|
104
|
+
@options = config_class.new(
|
105
|
+
default.to_smash.deep_merge(
|
106
|
+
options.to_smash
|
107
|
+
)
|
108
|
+
).to_smash
|
93
109
|
end
|
94
110
|
options
|
95
111
|
end
|
@@ -129,6 +145,30 @@ module Bogo
|
|
129
145
|
true
|
130
146
|
end
|
131
147
|
|
148
|
+
# Process the given CLI options and isolate default values from
|
149
|
+
# user provided values
|
150
|
+
#
|
151
|
+
# @param cli_opts [Slop]
|
152
|
+
# @return [NilClass]
|
153
|
+
def process_cli_options(cli_opts)
|
154
|
+
unless(cli_opts.is_a?(Slop))
|
155
|
+
raise TypeError.new "Expecting type `Slop` but received type `#{cli_opts.class}`"
|
156
|
+
end
|
157
|
+
@options = Smash.new
|
158
|
+
@defaults = Smash.new
|
159
|
+
cli_opts.each do |cli_opt|
|
160
|
+
unless(cli_opt.value.nil?)
|
161
|
+
opt_key = Bogo::Utility.snake(cli_opt.key)
|
162
|
+
if(cli_opt.default?)
|
163
|
+
@defaults[opt_key] = cli_opt.value
|
164
|
+
else
|
165
|
+
@options[opt_key] = cli_opt.value
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
nil
|
170
|
+
end
|
171
|
+
|
132
172
|
end
|
133
173
|
|
134
174
|
end
|
data/lib/bogo-cli/setup.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
Signal.trap('INT'){ exit -1 }
|
2
2
|
|
3
|
-
require 'slop'
|
4
3
|
require 'bogo-cli'
|
5
4
|
|
6
5
|
class Slop
|
@@ -11,6 +10,11 @@ class Slop
|
|
11
10
|
end
|
12
11
|
alias_method :slop_run, :run
|
13
12
|
alias_method :run, :bogo_cli_run
|
13
|
+
class Option
|
14
|
+
def default?
|
15
|
+
@value.nil?
|
16
|
+
end
|
17
|
+
end
|
14
18
|
end
|
15
19
|
|
16
20
|
module Bogo
|
data/lib/bogo-cli/version.rb
CHANGED
data/lib/bogo-cli.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bogo-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bogo
|