kafo 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of kafo might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/kafo-export-params +1 -1
- data/lib/kafo/hooking.rb +1 -1
- data/lib/kafo/kafo_configure.rb +30 -4
- data/lib/kafo/params/boolean.rb +2 -2
- data/lib/kafo/version.rb +1 -1
- data/lib/kafo/wizard.rb +19 -17
- 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: 7385654fc89203332aded949b93497236f18253a
|
4
|
+
data.tar.gz: 04174f77b271cea7470bd00a4da3c3673ce4879e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 919c57adf28c7307a908eada2d67e1fd80cc21866db371178c05a55f50cc1fa53eb9aaaf4e4a9893f77984dd3bc361042a4304eaf2b6426bc52b8f4b51fb1bc3
|
7
|
+
data.tar.gz: 878cfbc093dd78822103d4c09352c72384d3be46a0053702e5d7dfb1cc105eb74a9f336e114228c218bb068a9f903a82860d5639925225bf87f0032a58844a91
|
data/bin/kafo-export-params
CHANGED
data/lib/kafo/hooking.rb
CHANGED
@@ -14,7 +14,7 @@ module Kafo
|
|
14
14
|
def execute(group)
|
15
15
|
logger.info "Executing hooks in group #{group}"
|
16
16
|
self.hooks[group].each_pair do |name, hook|
|
17
|
-
result = hook.
|
17
|
+
result = hook.call(kafo)
|
18
18
|
logger.debug "Hook #{name} returned #{result.inspect}"
|
19
19
|
end
|
20
20
|
logger.info "All hooks in group #{group} finished"
|
data/lib/kafo/kafo_configure.rb
CHANGED
@@ -43,11 +43,9 @@ module Kafo
|
|
43
43
|
super
|
44
44
|
|
45
45
|
set_app_options
|
46
|
-
allowed = self.class.app_options.map(&:switches).flatten
|
47
|
-
allowed.map! { |s| s.include?('[no-]') ? [s.sub('[no-]', ''), s.sub('[no-]', 'no-')] : s }.flatten!
|
48
46
|
# we need to parse app config params using clamp even before run method does it
|
49
47
|
# so we limit parsing only to app config options (because of --help and later defined params)
|
50
|
-
parse
|
48
|
+
parse clamp_app_arguments
|
51
49
|
parse_app_arguments
|
52
50
|
Logger.setup
|
53
51
|
|
@@ -55,7 +53,6 @@ module Kafo
|
|
55
53
|
set_options
|
56
54
|
end
|
57
55
|
|
58
|
-
|
59
56
|
def config
|
60
57
|
self.class.config
|
61
58
|
end
|
@@ -223,6 +220,35 @@ module Kafo
|
|
223
220
|
end
|
224
221
|
end
|
225
222
|
|
223
|
+
# ARGV can contain values for attributes e.g. ['-l', 'info']
|
224
|
+
# so we accept either allowed args or those that does not start with '-' and are right after
|
225
|
+
# accepted argument
|
226
|
+
def clamp_app_arguments
|
227
|
+
@allowed_clamp_app_arguments = self.class.app_options.map do |option|
|
228
|
+
option.switches.map { |s| is_yes_no_flag?(s) ? build_yes_no_variants(s) : s }
|
229
|
+
end
|
230
|
+
@allowed_clamp_app_arguments.flatten!
|
231
|
+
|
232
|
+
last_was_accepted = false
|
233
|
+
ARGV.select { |arg| last_was_accepted = is_allowed_attribute_name?(arg) || (last_was_accepted && is_value?(arg)) }
|
234
|
+
end
|
235
|
+
|
236
|
+
def is_yes_no_flag?(s)
|
237
|
+
s.include?('[no-]')
|
238
|
+
end
|
239
|
+
|
240
|
+
def build_yes_no_variants(s)
|
241
|
+
[ s.sub('[no-]', ''), s.sub('[no-]', 'no-') ]
|
242
|
+
end
|
243
|
+
|
244
|
+
def is_allowed_attribute_name?(str)
|
245
|
+
str =~ /([a-zA-Z0-9_-]*)([= ].*)?/ && @allowed_clamp_app_arguments.include?($1)
|
246
|
+
end
|
247
|
+
|
248
|
+
def is_value?(str)
|
249
|
+
!str.start_with?('-')
|
250
|
+
end
|
251
|
+
|
226
252
|
def parse_app_arguments
|
227
253
|
self.class.app_options.each do |option|
|
228
254
|
name = option.attribute_name
|
data/lib/kafo/params/boolean.rb
CHANGED
data/lib/kafo/version.rb
CHANGED
data/lib/kafo/wizard.rb
CHANGED
@@ -14,8 +14,9 @@ module Kafo
|
|
14
14
|
|
15
15
|
def run
|
16
16
|
message = "Welcome to the #{@name} installer!"
|
17
|
-
|
18
|
-
say(
|
17
|
+
HighLine.color(message, :important)
|
18
|
+
say(HighLine.color(message, :headline))
|
19
|
+
say(HighLine.color('-' * message.size, :horizontal_line))
|
19
20
|
say(<<END)
|
20
21
|
|
21
22
|
This wizard will gather all required information. You can change any parameter to your needs.
|
@@ -35,22 +36,22 @@ END
|
|
35
36
|
def main_menu
|
36
37
|
finished = false
|
37
38
|
until finished
|
38
|
-
say("\n
|
39
|
+
say("\n" + HighLine.color('Main Config Menu', :headline))
|
39
40
|
choose do |menu|
|
40
41
|
menu.prompt = 'Choose an option from the menu... '
|
41
42
|
@config.modules.each do |mod|
|
42
|
-
menu.choice "[#{mod.enabled? ? '✓' : '✗'}] Configure #{mod.name}" do
|
43
|
+
menu.choice "[#{mod.enabled? ? HighLine.color('✓', :run) : HighLine.color('✗', :cancel)}] Configure #{mod.name}" do
|
43
44
|
configure_module(mod)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
menu.choice "Display current config" do
|
47
48
|
display_hash
|
48
49
|
end
|
49
|
-
menu.choice
|
50
|
+
menu.choice HighLine.color('Save and run', :run) do
|
50
51
|
KafoConfigure.config
|
51
52
|
finished = true
|
52
53
|
end
|
53
|
-
menu.choice
|
54
|
+
menu.choice HighLine.color('Cancel run without Saving', :cancel) do
|
54
55
|
say("Bye!"); exit 0
|
55
56
|
end
|
56
57
|
end
|
@@ -59,16 +60,16 @@ END
|
|
59
60
|
|
60
61
|
def display_hash
|
61
62
|
data = Hash[@config.modules.map { |mod| [mod.name, mod.enabled? ? mod.params_hash : false] }]
|
62
|
-
say
|
63
|
+
say HighLine.color(YAML.dump(data), :info)
|
63
64
|
end
|
64
65
|
|
65
66
|
def configure_module(mod)
|
66
67
|
go_back = false
|
67
68
|
until go_back
|
68
|
-
say("\n
|
69
|
+
say("\n" + HighLine.color("Module #{mod.name} configuration", :headline))
|
69
70
|
choose do |menu|
|
70
71
|
menu.prompt = 'Choose an option from the menu... '
|
71
|
-
menu.choice("Enable/disable #{mod.name} module, current value:
|
72
|
+
menu.choice("Enable/disable #{mod.name} module, current value: #{HighLine.color(mod.enabled?.to_s, :info)}") { turn_module(mod) }
|
72
73
|
if mod.enabled?
|
73
74
|
render_params(mod.primary_parameter_group.params, menu)
|
74
75
|
|
@@ -85,7 +86,7 @@ END
|
|
85
86
|
def configure_group(group)
|
86
87
|
go_back = false
|
87
88
|
until go_back
|
88
|
-
say "\n
|
89
|
+
say "\n" + HighLine.color("Group #{group.formatted_name} (of module #{group.module.name})", :headline)
|
89
90
|
choose do |menu|
|
90
91
|
|
91
92
|
render_params(group.params, menu)
|
@@ -102,7 +103,7 @@ END
|
|
102
103
|
def render_params(params, menu)
|
103
104
|
params.each do |param|
|
104
105
|
if param.visible?(@kafo.params)
|
105
|
-
menu.choice "Set
|
106
|
+
menu.choice "Set #{HighLine.color(param.name, :important)}, current value: #{HighLine.color(param.value.to_s, :info)}" do
|
106
107
|
configure(param)
|
107
108
|
end
|
108
109
|
end
|
@@ -110,28 +111,28 @@ END
|
|
110
111
|
end
|
111
112
|
|
112
113
|
def configure(param)
|
113
|
-
say "\n
|
114
|
-
say
|
114
|
+
say "\n" + HighLine.color("Parameter #{param.name} (of module #{param.module.name})", :headline)
|
115
|
+
say HighLine.color(param.doc.join("\n").gsub('"', '\"'), :important)
|
115
116
|
value = param.multivalued? ? configure_multi(param) : configure_single(param)
|
116
117
|
value_was = param.value
|
117
118
|
param.value = value unless value.empty?
|
118
119
|
|
119
120
|
until param.valid?
|
120
121
|
param.value = value_was
|
121
|
-
say "\n
|
122
|
+
say "\n" + HighLine.color("Invalid value for #{param.name}", :important)
|
122
123
|
value = param.multivalued? ? configure_multi(param) : configure_single(param)
|
123
124
|
param.value = value unless value.empty?
|
124
125
|
end
|
125
126
|
end
|
126
127
|
|
127
128
|
def configure_single(param)
|
128
|
-
say "\ncurrent value:
|
129
|
+
say "\ncurrent value: #{HighLine.color(param.value.to_s, :info)}"
|
129
130
|
ask("new value:")
|
130
131
|
end
|
131
132
|
|
132
133
|
def configure_multi(param)
|
133
|
-
say
|
134
|
-
say "\ncurrent value:
|
134
|
+
say HighLine.color('every line is a separate value, blank line to quit', :info)
|
135
|
+
say "\ncurrent value: #{HighLine.color(param.value.to_s, :info)} %>"
|
135
136
|
ask("new value:") do |q|
|
136
137
|
q.gather = ""
|
137
138
|
end
|
@@ -167,5 +168,6 @@ END
|
|
167
168
|
|
168
169
|
HighLine.color_scheme = @config.app[:colors] ? colors : nocolors
|
169
170
|
end
|
171
|
+
|
170
172
|
end
|
171
173
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kafo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marek Hulan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|