commander 4.0.1 → 4.0.2

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.
@@ -1,4 +1,10 @@
1
1
 
2
+ 4.0.2 / 2010-01-19
3
+ ==================
4
+
5
+ * Added program(:int_block) to allow a block to be run on interrupt.
6
+ * Fixed; ProgressBar immediately shows, and doesn't die on empty lists.
7
+
2
8
  4.0.1 / 2010-01-14
3
9
  ==================
4
10
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{commander}
5
- s.version = "4.0.1"
5
+ s.version = "4.0.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["TJ Holowaychuk"]
9
- s.date = %q{2010-01-14}
9
+ s.date = %q{2010-01-19}
10
10
  s.default_executable = %q{commander}
11
11
  s.description = %q{The complete solution for Ruby command-line executables}
12
12
  s.email = %q{tj@vision-media.ca}
@@ -51,6 +51,7 @@ module Commander
51
51
  trace = false
52
52
  require_program :version, :description
53
53
  trap('INT') { abort program(:int_message) } if program(:int_message)
54
+ trap('INT') { program(:int_block).call } if program(:int_block)
54
55
  global_option('-h', '--help', 'Display help documentation') { command(:help).run *@args[1..-1]; return }
55
56
  global_option('-v', '--version', 'Display version information') { say version; return }
56
57
  global_option('-t', '--trace', 'Display backtrace when an error occurs') { trace = true }
@@ -109,12 +110,14 @@ module Commander
109
110
  # :int_message Message to display when interrupted (CTRL + C)
110
111
  #
111
112
 
112
- def program key, *args
113
+ def program key, *args, &block
113
114
  if key == :help and !args.empty?
114
115
  @program[:help] ||= {}
115
116
  @program[:help][args.first] = args.at(1)
116
117
  elsif key == :help_formatter && !args.empty?
117
118
  @program[key] = (@help_formatter_aliases[args.first] || args.first)
119
+ elsif block
120
+ @program[key] = block
118
121
  else
119
122
  @program[key] = *args unless args.empty?
120
123
  @program[key]
@@ -223,6 +223,7 @@ module Commander
223
223
 
224
224
  def progress arr, options = {}, &block
225
225
  bar = ProgressBar.new arr.length, options
226
+ bar.show
226
227
  arr.each { |v| bar.increment yield(v) }
227
228
  end
228
229
 
@@ -325,7 +326,11 @@ module Commander
325
326
  # Completion percentage.
326
327
 
327
328
  def percent_complete
328
- @step * 100 / @total_steps
329
+ if @total_steps.zero?
330
+ 100
331
+ else
332
+ @step * 100 / @total_steps
333
+ end
329
334
  end
330
335
 
331
336
  ##
@@ -368,7 +373,7 @@ module Commander
368
373
  :steps_remaining => steps_remaining,
369
374
  :total_steps => @total_steps,
370
375
  :time_elapsed => "%0.2fs" % time_elapsed,
371
- :time_remaining => "%0.2fs" % time_remaining,
376
+ :time_remaining => @step > 0 ? "%0.2fs" % time_remaining : '',
372
377
  }.
373
378
  merge! @tokens
374
379
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Commander
3
- VERSION = '4.0.1'
3
+ VERSION = '4.0.2'
4
4
  end
@@ -189,7 +189,7 @@ describe Commander do
189
189
  it "should return array of valid command names" do
190
190
  command('foo bar') {}
191
191
  command('foo bar foo') {}
192
- command_runner.valid_command_names_from('foo', 'bar', 'foo').should == ['foo bar', 'foo bar foo']
192
+ command_runner.valid_command_names_from('foo', 'bar', 'foo').sort.should == ['foo bar', 'foo bar foo']
193
193
  end
194
194
 
195
195
  it "should return empty array when no possible command names exist" do
@@ -10,4 +10,16 @@ describe Commander::UI do
10
10
  end
11
11
  end
12
12
 
13
- end
13
+ describe "progress" do
14
+ it "should not die on an empty list" do
15
+ exception = false
16
+ begin
17
+ progress([]) {}
18
+ rescue
19
+ exception = true
20
+ end
21
+ exception.should_not be_true
22
+ end
23
+ end
24
+
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commander
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - TJ Holowaychuk
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-14 00:00:00 -08:00
12
+ date: 2010-01-19 00:00:00 -08:00
13
13
  default_executable: commander
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency