thunder-1.8.7 0.5.3 → 0.6.0

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.
data/bin/thunder-spec CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $:.unshift File.expand_path("../../lib", __FILE__)
4
+
3
5
  require 'thunder'
4
6
  require 'pp'
5
7
 
data/lib/thunder.rb CHANGED
@@ -27,14 +27,30 @@ module Thunder
27
27
  options.merge!(parsed_options) if parsed_options
28
28
  if command_spec[:subcommand]
29
29
  return command_spec[:subcommand].start(args, options)
30
- elsif parsed_options
31
- #TODO: do arity check
30
+ end
31
+ if parsed_options
32
32
  args << options
33
- return send command_spec[:name], *args
34
- else
35
- #TODO: do arity check
36
- return send command_spec[:name], *args
37
33
  end
34
+
35
+ if command_spec[:params]
36
+ min = command_spec[:params].count { |param| param.first == :req}
37
+ if args.size < min
38
+ ARGV.insert((ARGV.size - args.size) - 1, "help")
39
+ puts help_command(command_spec)
40
+ return
41
+ end
42
+ max = if command_spec[:params].map(&:first).include?(:rest)
43
+ nil
44
+ else
45
+ command_spec[:params].size
46
+ end
47
+ if !max.nil? && args.size > max
48
+ ARGV.insert((ARGV.size - args.size) - 1, "help")
49
+ puts help_command(command_spec)
50
+ return
51
+ end
52
+ end
53
+ return send command_spec[:name], *args
38
54
  end
39
55
 
40
56
  protected
@@ -77,10 +93,6 @@ module Thunder
77
93
  # @param args [<String>] the arguments list
78
94
  # @param options [Hash] any included options
79
95
  def get_help(args, options)
80
- unless self.class.thunder[:help_formatter]
81
- require 'thunder/help/default'
82
- self.class.thunder[:help_formatter] = Thunder::DefaultHelp
83
- end
84
96
  if args.size == 0
85
97
  puts help_list(self.class.thunder[:commands])
86
98
  else
@@ -93,6 +105,10 @@ module Thunder
93
105
  # @param commands [<Hash>] the commands to list
94
106
  # @return [String] the rendered help
95
107
  def help_list(commands)
108
+ unless self.class.thunder[:help_formatter]
109
+ require 'thunder/help/default'
110
+ self.class.thunder[:help_formatter] = Thunder::DefaultHelp
111
+ end
96
112
  self.class.thunder[:help_formatter].help_list(commands)
97
113
  end
98
114
 
@@ -101,6 +117,10 @@ module Thunder
101
117
  # @param command_spec [Hash] the command to render detailed help for
102
118
  # @return [String] the rendered help
103
119
  def help_command(command_spec)
120
+ unless self.class.thunder[:help_formatter]
121
+ require 'thunder/help/default'
122
+ self.class.thunder[:help_formatter] = Thunder::DefaultHelp
123
+ end
104
124
  self.class.thunder[:help_formatter].help_command(command_spec)
105
125
  end
106
126
 
@@ -1,4 +1,4 @@
1
1
  module Thunder
2
2
  # Version string for gemspec
3
- VERSION = "0.5.3"
3
+ VERSION = "0.6.0"
4
4
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thunder-1.8.7
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 3
10
- version: 0.5.3
8
+ - 6
9
+ - 0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Steven Karas