console_runner 0.1.14 → 0.1.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39d8e37c222218501547763179826453d99b5208
4
- data.tar.gz: 2cdc022889b7ce2bfa05ed217b4fa77a333ec5a4
3
+ metadata.gz: b185a9456da7ae30b9968451c2c4e83f2ede4072
4
+ data.tar.gz: e3cf2221df5e63c8908ff1ca84870a3ffa0a23d0
5
5
  SHA512:
6
- metadata.gz: 581eca4768176a9458c70cde0e670b187cb0462215ef7d94cf9165f88efc7bac233a5d87e8a1b1c8b922d5d67acd1e389c8d9185c440392dfc35567ebae90044
7
- data.tar.gz: 6127da22aeeb5bf37d8b0a65e697d5b82325e7be977683274f9c927aede4198fc18177256ecb41e95642b228d5a24912eeb447cdcd5e7abf1d0fcab328f2a6df
6
+ metadata.gz: 77c2ade30c51ab89a515ca54151ae4d84b7e20e3f7ce85a5a92664c68ceb0e5f03ea8ad3e3cde51051f0925642725b49dd548984edd698b4164db4cb3195f77f
7
+ data.tar.gz: 133b07c51e0a3bc846725a45ed4b8ba09d40b62656f6c96b9474dcae9161dbbd3d06e7cce1a4412794c74a1af77f2f08ba0cfc72881a412c305e0bd3e4b06e3a
@@ -17,12 +17,11 @@ class CommandLineParser
17
17
  ]
18
18
  end.to_h
19
19
  @parser = Trollop::Parser.new
20
- @banner = generate_banner
21
20
  @parser.stop_on @sub_commands
22
21
  @init_method = nil
23
22
  end
24
23
 
25
- def generate_banner
24
+ def tool_banner
26
25
  result = FileParser.select_runnable_tags(@file_parser.clazz).map(&:text).join("\n")
27
26
  result += "\n\n\tAvailable actions:\n"
28
27
  result += @sub_commands_text.map do |c, text|
@@ -30,31 +29,37 @@ class CommandLineParser
30
29
  t += "\n\t\t\t#{text}" if text != ''
31
30
  t
32
31
  end.join("\n")
33
- @parser.banner(result)
34
32
  result
35
33
  end
36
34
 
37
- def raise_help
38
- if %w(-h --help).include?(ARGV[0].to_s.strip)
39
- Trollop::with_standard_exception_handling(@parser) { raise Trollop::HelpNeeded }
35
+ def maybe_help(banner, action_name = nil)
36
+ action = action_name
37
+ scope = ARGV
38
+ if action_name
39
+ action_index = ARGV.index(action)
40
+ scope = ARGV[0..action_index] if action_index
40
41
  end
41
- return if @sub_commands.include?(ARGV[0].to_s.strip)
42
- raise ConsoleRunnerError, "You must provide one of available actions: #{@sub_commands.join ', '}"
42
+ return unless scope.any?{|a| %w(-h --help).include? a }
43
+ @parser.banner(banner)
44
+ Trollop::with_standard_exception_handling(@parser) { raise Trollop::HelpNeeded }
45
+ end
46
+
47
+ def raise_on_action_absence(sub_commands)
48
+ return if ARGV.any? {|a| sub_commands.include? a }
49
+ raise ConsoleRunnerError, "You must provide one of available actions: #{sub_commands.join ', '}"
43
50
  end
44
51
 
45
52
  def run(action)
46
- raise_help
53
+ maybe_help(tool_banner, action ? action.name.to_s : nil )
54
+ raise ConsoleRunnerError, 'Cannot find any @runnable action' unless action
55
+ raise_on_action_absence @sub_commands
47
56
  @init_method ||= MethodParser.new(@file_parser.initialize_method) if @file_parser.initialize_method
48
57
  @method = MethodParser.new action
49
58
  [@init_method, @method].each do |method|
50
59
  next unless method
51
60
  method.trollop_opts.each { |a| @parser.opt(*a) }
52
- cmd_opts = Trollop::with_standard_exception_handling @parser do
53
- unless method.parameters.count.zero?
54
- raise Trollop::HelpNeeded if ARGV.empty?
55
- end
56
- @parser.parse ARGV
57
- end
61
+ maybe_help(method.text, action.name.to_s)
62
+ cmd_opts = @parser.parse ARGV
58
63
  given_attrs = cmd_opts.keys.select { |k| k.to_s.include? '_given' }.map { |k| k.to_s.gsub('_given', '').to_sym }
59
64
  method.cmd_opts = cmd_opts.select { |k, _| given_attrs.include? k }
60
65
  method.default_values.each do |k, v|
@@ -1,3 +1,3 @@
1
1
  module ConsoleRunner
2
- VERSION = '0.1.14'
2
+ VERSION = '0.1.15'
3
3
  end
data/lib/method_parser.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  class MethodParser
3
3
  attr_reader :method,
4
4
  :name,
5
+ :text,
5
6
  :parameters,
6
7
  :param_tags, # All method parameters tags
7
8
  :option_tags, # Only options tags
@@ -28,6 +29,7 @@ class MethodParser
28
29
  def initialize(method)
29
30
  @method = method
30
31
  @name = @method.name
32
+ @text = FileParser.select_runnable_tags(@method).map(&:text).join("\n")
31
33
  @parameters = @method.parameters
32
34
  @default_values = default_params
33
35
  @param_tags = FileParser.select_param_tags @method
@@ -83,8 +85,8 @@ Use different names to `console_runner` be able to run #{@name} method."
83
85
  end
84
86
 
85
87
  def params_array
86
- options_groups = {}
87
- get_params = {}
88
+ options_groups = {}
89
+ get_params = {}
88
90
  @parameters.map(&:first).map.with_index { |p, i| [i, p] }.to_h.each do |index, name|
89
91
  if options_group?(name)
90
92
  options_groups[index] = name
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Karpovich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-14 00:00:00.000000000 Z
11
+ date: 2017-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler