bumbler 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab97915f8334bea25f27ce07a76f771b733cb661
4
- data.tar.gz: 1e2ba9e115d82440c8bb20fce2584e0e4c82d1f3
3
+ metadata.gz: fdafd8de66c8e6e9fecbc41654d7408d1f8ab1af
4
+ data.tar.gz: e56cae51bb0e6a97aec7a3e4f9ac5fc7145ab38b
5
5
  SHA512:
6
- metadata.gz: b4bdc0ac8e2a6209bda3bfa915f74701591afd4690005a41010967dd642b2d96cdcdb659db6dbf1d7d2bf091fafab696bdf594ee411283f915598b687e44fb81
7
- data.tar.gz: 13e3f8e5f252a030ed8d0347d214aae41c693afa893ce6d9c456cb96b11d46c481ce4206d01ee5446156b5b65a59f3bd35170622ad4afaf232aeb4dbbb3df786
6
+ metadata.gz: 242b08d8a00f098058d1d387498581a45c8f7748100120fe86d8796bb23fb6455136d128836a9f845bcf8743858f6542ba5e719f58865b27c0ceabdb3976be95
7
+ data.tar.gz: 857dc10735d0cc90f34fec7e4b8d8ddae9647347b7dc6181152a1334e2f2b5d3602be89ff236fea0356b636666dad84b3b966a8764546df200805a4ea2a54520
data/bin/bumbler CHANGED
@@ -1,5 +1,22 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
3
+
4
+ require 'optparse'
5
+ require 'bumbler'
6
+
7
+ OptionParser.new do |parser|
8
+ parser.banner = <<BANNER
9
+ Bumbler shows how long loading your bundle components take.
10
+
11
+ Usage:
12
+ bumbler
13
+
14
+ Options:
15
+ BANNER
16
+ parser.on("-h", "--help","Show this.") { puts parser; exit }
17
+ parser.on('-v', '--version','Show Version'){ puts Bumbler::VERSION; exit}
18
+ end.parse!
19
+
3
20
  require 'bumbler/go'
4
21
  require './config/environment'
5
22
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib') # bundler kicks us out
@@ -2,92 +2,91 @@ module Bumbler
2
2
  module Progress
3
3
  @item_count = 0
4
4
  @loaded_items = 0
5
-
5
+
6
6
  # registry[item_type][item_name] = {:time => 123.45}
7
7
  @registry = Hash.new { |h,k| h[k] = {} }
8
-
8
+
9
9
  class << self
10
10
  def registry
11
11
  @registry
12
12
  end
13
-
13
+
14
14
  def register_item(type, name)
15
15
  # Build a blank key for the item
16
16
  unless @registry[type][name]
17
17
  @item_count += 1
18
18
  end
19
-
19
+
20
20
  @registry[type][name] = {}
21
21
  end
22
-
22
+
23
23
  def item_started(type, name)
24
24
  @curr_item = {:type => type, :name => name}
25
-
25
+
26
26
  self.render_progress
27
27
  end
28
-
28
+
29
29
  def item_finished(type, name, time)
30
30
  @registry[type][name] = {:time => time}
31
-
31
+
32
32
  @loaded_items += 1
33
-
33
+
34
34
  @prev_item = {:type => type, :name => name, :time => time}
35
35
  @curr_item = nil if @curr_item && @curr_item[:name] == @prev_item[:name] && @curr_item[:type] == @prev_item[:type]
36
-
36
+
37
37
  self.render_progress
38
38
  end
39
-
39
+
40
40
  def start!
41
41
  # No-op for now.
42
42
  end
43
-
43
+
44
44
  def tty_width
45
45
  `tput cols`.to_i || 80
46
46
  end
47
-
47
+
48
48
  def bar(width)
49
49
  inner_size = width - 2
50
-
50
+
51
51
  fill_size = [((@loaded_items.to_f / @item_count.to_f) * inner_size).to_i, inner_size].min
52
52
  fill = '#' * fill_size
53
53
  empty = ' ' * (inner_size - fill_size)
54
-
54
+
55
55
  return "[#{fill}#{empty}]"
56
56
  end
57
-
57
+
58
58
  def render_progress
59
- unless $stdout.tty?
60
- puts '(%s/%d) %s' % [@loaded_items.to_s.rjust(@item_count.to_s.size), @item_count, message]
61
- return
62
- end
63
-
64
59
  # Do nothing if we don't have any items to load
65
60
  return if @item_count == 0
66
-
67
- width = self.tty_width
68
-
69
- print "\r\e[A\r\e[A" if @outputted_once
70
- @outputted_once = true
71
-
61
+
72
62
  # Output components:
73
63
  # [#######################################]
74
64
  # (##/##) <current>... <prev> (####.##ms)
75
- #
65
+ #
76
66
  # Skip the current if there isn't enough room
77
67
  count = '(%s/%d) ' % [@loaded_items.to_s.rjust(@item_count.to_s.size), @item_count]
78
68
  current = @curr_item ? "#{@curr_item[:name]}... " : ''
79
69
  prev = @prev_item ? '%s (%sms)' % [@prev_item[:name], ('%.2f' % @prev_item[:time]).rjust(7)] : ''
80
-
81
- # Align the bottom row
82
- space_for_current = width - (count.length + prev.length)
83
-
84
- # Render the progress
85
- puts self.bar(width)
86
-
87
- if space_for_current >= current.length
88
- puts count + current + prev.rjust(width - count.length - current.length)
89
- else
90
- puts count + prev.rjust(width - count.length)
70
+
71
+ if $stdout.tty?
72
+ width = self.tty_width
73
+
74
+ print "\r\e[A\r\e[A" if @outputted_once
75
+ @outputted_once = true
76
+
77
+ # Align the bottom row
78
+ space_for_current = width - (count.length + prev.length)
79
+
80
+ # Render the progress
81
+ puts self.bar(width)
82
+
83
+ if space_for_current >= current.length
84
+ puts count + current + prev.rjust(width - count.length - current.length)
85
+ else
86
+ puts count + prev.rjust(width - count.length)
87
+ end
88
+ elsif @curr_item
89
+ puts '%s %s' % [count, @curr_item[:name]]
91
90
  end
92
91
  end
93
92
  end
@@ -1,3 +1,3 @@
1
1
  module Bumbler
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bumbler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian MacLeod
@@ -24,6 +24,48 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest-rg
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-around
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
27
69
  description: Why stare blankly at your terminal window when you can clutter it up
28
70
  with awesome progress bars?
29
71
  email: