console_runner 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -4
- data/lib/cmd_parser.rb +20 -10
- data/lib/console_runner.rb +9 -2
- data/lib/console_runner/version.rb +1 -1
- data/lib/file_parser.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46251b514ee3ff2c6fe6d1805b58bb7bc8740ebb
|
4
|
+
data.tar.gz: 7781c2c0188af33e49ab7bec3e99be229bb756ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ca1cf2617736897556652cfa6de3c7a894349359d3ab2472f759c7a8def9a0b617e77138e48dbab8e9c77c805451b52ff4aef38fca6ffb8187b9ddc2d62c4cc
|
7
|
+
data.tar.gz: 64c9e1747574c79f5ee1b863a7e26ba4a2dd9f98ecd10d8f4cfbab133b02350c34354ef73b5bf451487ea69c7b0dbb875cd597a857d7dae68bb5b68a7705e1f8
|
data/README.md
CHANGED
@@ -100,8 +100,7 @@ Finish Time: 2017-04-11 21:39:40 +0300 (Duration: 0.0 minutes)
|
|
100
100
|
```
|
101
101
|
|
102
102
|
## ToDo
|
103
|
-
- fix help menu for action: action help text should be displayed
|
104
|
-
- add tests for same methods naming
|
103
|
+
- fix help menu for action: action help text should be displayed, list of available actions should be displayed
|
105
104
|
- write good readme
|
106
105
|
|
107
106
|
## Development
|
@@ -114,12 +113,10 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
114
113
|
|
115
114
|
Bug reports and pull requests are welcome on GitHub at https://github.com/yuri-karpovich/console_runner.
|
116
115
|
|
117
|
-
|
118
116
|
## License
|
119
117
|
|
120
118
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
121
119
|
|
122
|
-
|
123
120
|
[Gem Version]: https://rubygems.org/gems/console_runner
|
124
121
|
[Build Status]: https://travis-ci.org/yuri-karpovich/console_runner
|
125
122
|
[travis pull requests]: https://travis-ci.org/yuri-karpovich/console_runner/pull_requests
|
data/lib/cmd_parser.rb
CHANGED
@@ -26,9 +26,14 @@ class CmdParser
|
|
26
26
|
|
27
27
|
if init_method
|
28
28
|
@init_method = MethodParser.new init_method
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
same_params = @init_method.param_tags_names & @init_method.option_tags_names
|
30
|
+
if same_params.count > 0
|
31
|
+
raise(
|
32
|
+
ConsoleRunnerError,
|
33
|
+
"You have the same name for @param and @option attribute(s): #{same_params.join(', ')}.
|
34
|
+
Use different names to `console_runner` be able to run #{@init_method.name} method."
|
35
|
+
)
|
36
|
+
end
|
32
37
|
|
33
38
|
|
34
39
|
@init_method.param_tags.each do |tag|
|
@@ -57,7 +62,7 @@ Use different names to `console_runner` be able to run #{@init_method.name} meth
|
|
57
62
|
begin
|
58
63
|
@parser.parse ARGV
|
59
64
|
rescue Trollop::CommandlineError => e
|
60
|
-
raise "You must provide one of available actions: #{sub_commands.join ', '}" unless sub_commands.include?(ARGV[0])
|
65
|
+
raise ConsoleRunnerError, "You must provide one of available actions: #{sub_commands.join ', '}" unless sub_commands.include?(ARGV[0])
|
61
66
|
raise e
|
62
67
|
end
|
63
68
|
end
|
@@ -71,10 +76,15 @@ Use different names to `console_runner` be able to run #{@init_method.name} meth
|
|
71
76
|
# Parse method and configure #Trollop
|
72
77
|
def parse_method(method)
|
73
78
|
ARGV.shift
|
74
|
-
@method
|
75
|
-
|
76
|
-
|
77
|
-
|
79
|
+
@method = MethodParser.new method
|
80
|
+
same_params = @method.param_tags_names & @method.option_tags_names
|
81
|
+
if same_params.count > 0
|
82
|
+
raise(
|
83
|
+
ConsoleRunnerError,
|
84
|
+
"You have the same name for @param and @option attribute(s): #{same_params.join(', ')}.
|
85
|
+
Use different names to `console_runner` be able to run #{@method.name} method."
|
86
|
+
)
|
87
|
+
end
|
78
88
|
method_params_tags = @method.param_tags
|
79
89
|
|
80
90
|
method_params_tags.each do |tag|
|
@@ -113,14 +123,14 @@ Use different names to `console_runner` be able to run #{@method.name} method."
|
|
113
123
|
method_params_tags.select { |t| t.tag_name == 'param' }.map(&:name).each do |required_param|
|
114
124
|
next if @method.options_group? required_param
|
115
125
|
unless @method.cmd_opts[required_param.to_sym]
|
116
|
-
raise "You must specify required parameter: #{required_param}"
|
126
|
+
raise ConsoleRunnerError, "You must specify required parameter: #{required_param}"
|
117
127
|
end
|
118
128
|
end
|
119
129
|
end
|
120
130
|
|
121
131
|
def self.parse_type(yard_type)
|
122
132
|
result = TYPES_MAPPINGS[yard_type]
|
123
|
-
raise "Unsupported YARD type: #{yard_type}" unless result
|
133
|
+
raise ConsoleRunnerError, "Unsupported YARD type: #{yard_type}" unless result
|
124
134
|
result
|
125
135
|
end
|
126
136
|
|
data/lib/console_runner.rb
CHANGED
@@ -24,8 +24,15 @@ Runnable class should be marked with @#{FileParser::RUNNABLE_TAG} tag"
|
|
24
24
|
run_method = all_methods.find { |m| m.name == :run }
|
25
25
|
|
26
26
|
|
27
|
-
cmd
|
28
|
-
|
27
|
+
cmd = ARGV[0]
|
28
|
+
action_methods = runnable_methods.select { |m| m.name.to_s == cmd }
|
29
|
+
if action_methods.count > 1
|
30
|
+
raise(
|
31
|
+
ConsoleRunnerError,
|
32
|
+
"Class and Instance methods have the same name (#{cmd}). Action name should be unique"
|
33
|
+
)
|
34
|
+
end
|
35
|
+
action_method = action_methods.first
|
29
36
|
action_method ||= run_method
|
30
37
|
cmd_parser = CmdParser.new(runnable_methods, initialize_method)
|
31
38
|
raise ConsoleRunnerError, "Cannot run! You haven't specify any method to run." unless action_method
|
data/lib/file_parser.rb
CHANGED
@@ -5,12 +5,12 @@ require 'console_runner_error'
|
|
5
5
|
class FileParser
|
6
6
|
RUNNABLE_TAG = :runnable
|
7
7
|
|
8
|
+
# array of #YARD::CodeObjects
|
8
9
|
attr_reader :all_objects
|
9
10
|
|
10
11
|
# Parse file with #YARD::CLI::Stats
|
11
12
|
#
|
12
13
|
# @param [String] file_path path to the file to be parsed
|
13
|
-
# @return[Array(YARD::CodeObjects)] array of #YARD::CodeObjects classes
|
14
14
|
def initialize(file_path)
|
15
15
|
raise ConsoleRunnerError "Cannot find file #{file_path}" unless File.exist?(file_path)
|
16
16
|
code = YARD::CLI::Stats.new
|