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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7361c36d1938a0cb6e0aef8e7ba478e23f8f4af0
4
- data.tar.gz: 828ffbb4779539427b3b40b1cb81db900e08820c
3
+ metadata.gz: 7385654fc89203332aded949b93497236f18253a
4
+ data.tar.gz: 04174f77b271cea7470bd00a4da3c3673ce4879e
5
5
  SHA512:
6
- metadata.gz: 11cf281c119c97541a028f364681fc00f7d93b86cb53123cec742b6530412bdf417d5bfc0f9a433e1a0eaf4ecdda1f857752d913a8df40e3fb59cf4c4a9675de
7
- data.tar.gz: 872579a93ddff382ce44d83973a6b0eb0971a5fd7adee80733b5b3284416246e00b17ec1907aa006557639e142f0484cac4cf4582b68df648986e02921b43e8e
6
+ metadata.gz: 919c57adf28c7307a908eada2d67e1fd80cc21866db371178c05a55f50cc1fa53eb9aaaf4e4a9893f77984dd3bc361042a4304eaf2b6426bc52b8f4b51fb1bc3
7
+ data.tar.gz: 878cfbc093dd78822103d4c09352c72384d3be46a0053702e5d7dfb1cc105eb74a9f336e114228c218bb068a9f903a82860d5639925225bf87f0032a58844a91
@@ -81,7 +81,7 @@ module Kafo
81
81
 
82
82
  def print_out
83
83
  @config.modules.sort.each do |mod|
84
- puts "Parameters for '#{mod}'\n:"
84
+ puts "Parameters for '#{mod.name}':\n\n"
85
85
  mod.params.sort.each do |param|
86
86
  puts "#{parametrize(param)}::"
87
87
  puts param.doc.join("\n")
@@ -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.yield(kafo)
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"
@@ -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 ARGV.select { |a| a =~ /([a-zA-Z0-9_-]*)([= ].*)?/ && allowed.include?($1) }
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
@@ -10,9 +10,9 @@ module Kafo
10
10
 
11
11
  def typecast(value)
12
12
  case value
13
- when '0', 'false', 'f', false
13
+ when '0', 'false', 'f', 'n', false
14
14
  false
15
- when '1', 'true', 't', true
15
+ when '1', 'true', 't', 'y', true
16
16
  true
17
17
  else
18
18
  value
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module Kafo
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
@@ -14,8 +14,9 @@ module Kafo
14
14
 
15
15
  def run
16
16
  message = "Welcome to the #{@name} installer!"
17
- say("<%= color('#{message}', :headline) %>")
18
- say("<%= color('#{'-' * message.size}', :horizontal_line) %>")
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<%= color('Main Config Menu', :headline) %>")
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 "<%= color('Save and run', :run) %>" do
50
+ menu.choice HighLine.color('Save and run', :run) do
50
51
  KafoConfigure.config
51
52
  finished = true
52
53
  end
53
- menu.choice "<%= color('Cancel run without Saving', :cancel) %>" do
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 "<%= color('#{YAML.dump data}', :info) %>"
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<%= color('Module #{mod.name} configuration', :headline) %>")
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: <%= color('#{mod.enabled?}', :info) %>") { turn_module(mod) }
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<%= color('Group #{group.formatted_name} (of module #{group.module.name})', :headline) %>"
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 <%= color('#{param.name}', :important) %>, current value: <%= color('#{param.value}', :info) %>" do
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<%= color('Parameter #{param.name} (of module #{param.module.name})', :headline) %>"
114
- say "<%= color(\"#{param.doc.join("\n").gsub('"', '\"')}\", :important) %>"
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<%= color('Invalid value for #{param.name}', :important) %>"
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: <%= color('#{param.value}', :info) %>"
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 "<%= color('every line is a separate value, blank line to quit', :info) %>"
134
- say "\ncurrent value: <%= color('#{param.value}', :info) %>"
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.0
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-08 00:00:00.000000000 Z
11
+ date: 2013-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler