tty-progressbar 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +492 -126
  5. data/lib/tty-progressbar.rb +2 -2
  6. data/lib/tty/progressbar.rb +168 -68
  7. data/lib/tty/progressbar/configuration.rb +121 -27
  8. data/lib/tty/progressbar/converter.rb +16 -19
  9. data/lib/tty/progressbar/formats.rb +120 -0
  10. data/lib/tty/progressbar/formatter.rb +33 -38
  11. data/lib/tty/progressbar/formatter/bar.rb +74 -27
  12. data/lib/tty/progressbar/formatter/byte_rate.rb +6 -20
  13. data/lib/tty/progressbar/formatter/current.rb +4 -19
  14. data/lib/tty/progressbar/formatter/current_byte.rb +9 -17
  15. data/lib/tty/progressbar/formatter/elapsed.rb +9 -18
  16. data/lib/tty/progressbar/formatter/estimated.rb +14 -18
  17. data/lib/tty/progressbar/formatter/estimated_time.rb +37 -0
  18. data/lib/tty/progressbar/formatter/mean_byte.rb +6 -20
  19. data/lib/tty/progressbar/formatter/mean_rate.rb +6 -20
  20. data/lib/tty/progressbar/formatter/percent.rb +10 -16
  21. data/lib/tty/progressbar/formatter/rate.rb +5 -19
  22. data/lib/tty/progressbar/formatter/total.rb +10 -16
  23. data/lib/tty/progressbar/formatter/total_byte.rb +14 -18
  24. data/lib/tty/progressbar/formatters.rb +53 -0
  25. data/lib/tty/progressbar/meter.rb +2 -2
  26. data/lib/tty/progressbar/multi.rb +61 -21
  27. data/lib/tty/progressbar/pipeline.rb +13 -6
  28. data/lib/tty/progressbar/timer.rb +89 -0
  29. data/lib/tty/progressbar/version.rb +1 -1
  30. metadata +44 -103
  31. data/Rakefile +0 -8
  32. data/examples/color.rb +0 -18
  33. data/examples/failure.rb +0 -12
  34. data/examples/iterator.rb +0 -5
  35. data/examples/lazy.rb +0 -6
  36. data/examples/multi/main_bar.rb +0 -13
  37. data/examples/multi/simple.rb +0 -13
  38. data/examples/multi/width.rb +0 -13
  39. data/examples/simple.rb +0 -7
  40. data/examples/slow_process.rb +0 -29
  41. data/examples/speed.rb +0 -11
  42. data/examples/threaded.rb +0 -14
  43. data/examples/tokens.rb +0 -12
  44. data/examples/unicode.rb +0 -7
  45. data/spec/spec_helper.rb +0 -53
  46. data/spec/unit/advance_spec.rb +0 -25
  47. data/spec/unit/clear_spec.rb +0 -17
  48. data/spec/unit/complete_spec.rb +0 -16
  49. data/spec/unit/converter/to_bytes_spec.rb +0 -47
  50. data/spec/unit/converter/to_seconds_spec.rb +0 -15
  51. data/spec/unit/converter/to_time_spec.rb +0 -19
  52. data/spec/unit/custom_formatter_spec.rb +0 -26
  53. data/spec/unit/custom_token_spec.rb +0 -14
  54. data/spec/unit/events_spec.rb +0 -33
  55. data/spec/unit/finish_spec.rb +0 -15
  56. data/spec/unit/formatter/bar_spec.rb +0 -33
  57. data/spec/unit/formatter/byte_rate_spec.rb +0 -32
  58. data/spec/unit/formatter/current_byte_spec.rb +0 -16
  59. data/spec/unit/formatter/current_spec.rb +0 -14
  60. data/spec/unit/formatter/elapsed_spec.rb +0 -58
  61. data/spec/unit/formatter/estimated_spec.rb +0 -27
  62. data/spec/unit/formatter/mean_byte_spec.rb +0 -32
  63. data/spec/unit/formatter/mean_rate_spec.rb +0 -31
  64. data/spec/unit/formatter/percent_spec.rb +0 -16
  65. data/spec/unit/formatter/rate_spec.rb +0 -31
  66. data/spec/unit/formatter/total_byte_spec.rb +0 -16
  67. data/spec/unit/formatter/total_spec.rb +0 -16
  68. data/spec/unit/frequency_spec.rb +0 -27
  69. data/spec/unit/head_spec.rb +0 -32
  70. data/spec/unit/hide_cursor_spec.rb +0 -27
  71. data/spec/unit/inspect_spec.rb +0 -11
  72. data/spec/unit/iterate_spec.rb +0 -79
  73. data/spec/unit/log_spec.rb +0 -29
  74. data/spec/unit/meter_spec.rb +0 -70
  75. data/spec/unit/multi/advance_spec.rb +0 -123
  76. data/spec/unit/multi/events_spec.rb +0 -115
  77. data/spec/unit/multi/finish_spec.rb +0 -41
  78. data/spec/unit/multi/line_inset_spec.rb +0 -65
  79. data/spec/unit/multi/register_spec.rb +0 -35
  80. data/spec/unit/multi/reset_spec.rb +0 -28
  81. data/spec/unit/multi/stop_spec.rb +0 -15
  82. data/spec/unit/multi/width_spec.rb +0 -118
  83. data/spec/unit/new_spec.rb +0 -76
  84. data/spec/unit/pipeline_spec.rb +0 -19
  85. data/spec/unit/ratio_spec.rb +0 -31
  86. data/spec/unit/render_spec.rb +0 -25
  87. data/spec/unit/reset_spec.rb +0 -31
  88. data/spec/unit/resize_spec.rb +0 -35
  89. data/spec/unit/set_current_spec.rb +0 -43
  90. data/spec/unit/start_spec.rb +0 -14
  91. data/spec/unit/stop_spec.rb +0 -19
  92. data/spec/unit/update_spec.rb +0 -22
  93. data/spec/unit/width_spec.rb +0 -86
  94. data/tasks/console.rake +0 -9
  95. data/tasks/coverage.rake +0 -9
  96. data/tasks/spec.rake +0 -27
  97. data/tty-progressbar.gemspec +0 -32
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TTY
4
+ class ProgressBar
5
+ # Used to measure the elapsed time for multiple time intervals
6
+ #
7
+ # @api private
8
+ class Timer
9
+ attr_reader :start_time
10
+
11
+ # Create Timer
12
+ #
13
+ # @api private
14
+ def initialize
15
+ reset
16
+ end
17
+
18
+ # Reset the start time to nil and elapsed time to zero
19
+ #
20
+ # @api public
21
+ def reset
22
+ @running = false
23
+ @offset = 0
24
+ @start_time = nil
25
+ end
26
+
27
+ # Check whether or not the timer is running
28
+ #
29
+ # @return [Boolean]
30
+ #
31
+ # @api public
32
+ def running?
33
+ @running
34
+ end
35
+
36
+ # Total elapsed time
37
+ #
38
+ # @return [Float]
39
+ # the elapsed time in seconds
40
+ #
41
+ # @api public
42
+ def elapsed_time
43
+ if running?
44
+ elapsed_until_now + @offset
45
+ else
46
+ @offset
47
+ end
48
+ end
49
+
50
+ # Measure current time interval
51
+ #
52
+ # @api public
53
+ def elapsed_until_now
54
+ time_so_far = Time.now - @start_time
55
+ # protect against negative time drifting
56
+ time_so_far > 0 ? time_so_far : 0
57
+ end
58
+
59
+ # Start measuring elapsed time for a new interval
60
+ #
61
+ # @return [Time]
62
+ # return the start time
63
+ #
64
+ # @api public
65
+ def start
66
+ return @start_time if running?
67
+
68
+ @running = true
69
+ @start_time = Time.now
70
+ end
71
+
72
+ # Stop measuring elapsed time for the current interval
73
+ #
74
+ # @return [Float]
75
+ # return elapsed time for the stopped interval
76
+ #
77
+ # @api public
78
+ def stop
79
+ return 0 unless running?
80
+
81
+ interval = elapsed_until_now
82
+ @offset += interval
83
+ @running = false
84
+ @start_time = nil
85
+ interval
86
+ end
87
+ end # Timer
88
+ end # ProgressBar
89
+ end # TTY
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  class ProgressBar
5
- VERSION = '0.17.0'
5
+ VERSION = "0.18.0"
6
6
  end # ProgressBar
7
7
  end # TTY
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-progressbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: strings-ansi
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: '0.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0
26
+ version: '0.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: tty-cursor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,54 +44,60 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.7'
47
+ version: '0.8'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.7'
54
+ version: '0.8'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: unicode-display_width
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.6'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '3.0'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: '1.6'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: bundler
76
+ name: rake
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - ">="
74
80
  - !ruby/object:Gem::Version
75
- version: 1.5.0
81
+ version: '0'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - ">="
81
87
  - !ruby/object:Gem::Version
82
- version: 1.5.0
88
+ version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: rspec
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - "~>"
93
+ - - ">="
88
94
  - !ruby/object:Gem::Version
89
95
  version: '3.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - "~>"
100
+ - - ">="
95
101
  - !ruby/object:Gem::Version
96
102
  version: '3.0'
97
103
  - !ruby/object:Gem::Dependency
@@ -100,56 +106,35 @@ dependencies:
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: 0.9.1
109
+ version: '0.9'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
114
  - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: 0.9.1
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- description: A flexible progress bars drawing in terminal emulators.
116
+ version: '0.9'
117
+ description: Display a single or multiple progress bars in the terminal. A progress
118
+ bar can show determinate or indeterminate progress that can be paused and resumed
119
+ at any time. A bar format supports many tokens for common information display like
120
+ elapsed time, estimated time to completion, mean rate and more.
126
121
  email:
127
- - me@piotrmurach.com
122
+ - piotr@piotrmurach.com
128
123
  executables: []
129
124
  extensions: []
130
- extra_rdoc_files: []
125
+ extra_rdoc_files:
126
+ - README.md
127
+ - CHANGELOG.md
128
+ - LICENSE.txt
131
129
  files:
132
130
  - CHANGELOG.md
133
131
  - LICENSE.txt
134
132
  - README.md
135
- - Rakefile
136
- - examples/color.rb
137
- - examples/failure.rb
138
- - examples/iterator.rb
139
- - examples/lazy.rb
140
- - examples/multi/main_bar.rb
141
- - examples/multi/simple.rb
142
- - examples/multi/width.rb
143
- - examples/simple.rb
144
- - examples/slow_process.rb
145
- - examples/speed.rb
146
- - examples/threaded.rb
147
- - examples/tokens.rb
148
- - examples/unicode.rb
149
133
  - lib/tty-progressbar.rb
150
134
  - lib/tty/progressbar.rb
151
135
  - lib/tty/progressbar/configuration.rb
152
136
  - lib/tty/progressbar/converter.rb
137
+ - lib/tty/progressbar/formats.rb
153
138
  - lib/tty/progressbar/formatter.rb
154
139
  - lib/tty/progressbar/formatter/bar.rb
155
140
  - lib/tty/progressbar/formatter/byte_rate.rb
@@ -157,73 +142,29 @@ files:
157
142
  - lib/tty/progressbar/formatter/current_byte.rb
158
143
  - lib/tty/progressbar/formatter/elapsed.rb
159
144
  - lib/tty/progressbar/formatter/estimated.rb
145
+ - lib/tty/progressbar/formatter/estimated_time.rb
160
146
  - lib/tty/progressbar/formatter/mean_byte.rb
161
147
  - lib/tty/progressbar/formatter/mean_rate.rb
162
148
  - lib/tty/progressbar/formatter/percent.rb
163
149
  - lib/tty/progressbar/formatter/rate.rb
164
150
  - lib/tty/progressbar/formatter/total.rb
165
151
  - lib/tty/progressbar/formatter/total_byte.rb
152
+ - lib/tty/progressbar/formatters.rb
166
153
  - lib/tty/progressbar/meter.rb
167
154
  - lib/tty/progressbar/multi.rb
168
155
  - lib/tty/progressbar/pipeline.rb
156
+ - lib/tty/progressbar/timer.rb
169
157
  - lib/tty/progressbar/version.rb
170
- - spec/spec_helper.rb
171
- - spec/unit/advance_spec.rb
172
- - spec/unit/clear_spec.rb
173
- - spec/unit/complete_spec.rb
174
- - spec/unit/converter/to_bytes_spec.rb
175
- - spec/unit/converter/to_seconds_spec.rb
176
- - spec/unit/converter/to_time_spec.rb
177
- - spec/unit/custom_formatter_spec.rb
178
- - spec/unit/custom_token_spec.rb
179
- - spec/unit/events_spec.rb
180
- - spec/unit/finish_spec.rb
181
- - spec/unit/formatter/bar_spec.rb
182
- - spec/unit/formatter/byte_rate_spec.rb
183
- - spec/unit/formatter/current_byte_spec.rb
184
- - spec/unit/formatter/current_spec.rb
185
- - spec/unit/formatter/elapsed_spec.rb
186
- - spec/unit/formatter/estimated_spec.rb
187
- - spec/unit/formatter/mean_byte_spec.rb
188
- - spec/unit/formatter/mean_rate_spec.rb
189
- - spec/unit/formatter/percent_spec.rb
190
- - spec/unit/formatter/rate_spec.rb
191
- - spec/unit/formatter/total_byte_spec.rb
192
- - spec/unit/formatter/total_spec.rb
193
- - spec/unit/frequency_spec.rb
194
- - spec/unit/head_spec.rb
195
- - spec/unit/hide_cursor_spec.rb
196
- - spec/unit/inspect_spec.rb
197
- - spec/unit/iterate_spec.rb
198
- - spec/unit/log_spec.rb
199
- - spec/unit/meter_spec.rb
200
- - spec/unit/multi/advance_spec.rb
201
- - spec/unit/multi/events_spec.rb
202
- - spec/unit/multi/finish_spec.rb
203
- - spec/unit/multi/line_inset_spec.rb
204
- - spec/unit/multi/register_spec.rb
205
- - spec/unit/multi/reset_spec.rb
206
- - spec/unit/multi/stop_spec.rb
207
- - spec/unit/multi/width_spec.rb
208
- - spec/unit/new_spec.rb
209
- - spec/unit/pipeline_spec.rb
210
- - spec/unit/ratio_spec.rb
211
- - spec/unit/render_spec.rb
212
- - spec/unit/reset_spec.rb
213
- - spec/unit/resize_spec.rb
214
- - spec/unit/set_current_spec.rb
215
- - spec/unit/start_spec.rb
216
- - spec/unit/stop_spec.rb
217
- - spec/unit/update_spec.rb
218
- - spec/unit/width_spec.rb
219
- - tasks/console.rake
220
- - tasks/coverage.rake
221
- - tasks/spec.rake
222
- - tty-progressbar.gemspec
223
- homepage: https://piotrmurach.github.io/tty/
158
+ homepage: https://ttytoolkit.org
224
159
  licenses:
225
160
  - MIT
226
- metadata: {}
161
+ metadata:
162
+ allowed_push_host: https://rubygems.org
163
+ bug_tracker_uri: https://github.com/piotrmurach/tty-progressbar/issues
164
+ changelog_uri: https://github.com/piotrmurach/tty-progressbar/blob/master/CHANGELOG.md
165
+ documentation_uri: https://www.rubydoc.info/gems/tty-progressbar
166
+ homepage_uri: https://ttytoolkit.org
167
+ source_code_uri: https://github.com/piotrmurach/tty-progressbar
227
168
  post_install_message:
228
169
  rdoc_options: []
229
170
  require_paths:
@@ -239,8 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
180
  - !ruby/object:Gem::Version
240
181
  version: '0'
241
182
  requirements: []
242
- rubygems_version: 3.0.3
183
+ rubygems_version: 3.1.2
243
184
  signing_key:
244
185
  specification_version: 4
245
- summary: A flexible progress bars drawing in terminal emulators.
186
+ summary: A flexible and extensible progress bar for terminal applications.
246
187
  test_files: []
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
3
- FileList['tasks/**/*.rake'].each(&method(:import))
4
-
5
- desc 'Run all specs'
6
- task ci: %w[ spec ]
7
-
8
- task default: :spec
@@ -1,18 +0,0 @@
1
- require 'pastel'
2
-
3
- require_relative '../lib/tty-progressbar'
4
-
5
- pastel = Pastel.new
6
- green = pastel.on_green(" ")
7
- red = pastel.on_red(" ")
8
-
9
- bar = TTY::ProgressBar.new("|:bar|",
10
- total: 30,
11
- complete: green,
12
- incomplete: red
13
- )
14
-
15
- 30.times do
16
- sleep(0.1)
17
- bar.advance
18
- end
@@ -1,12 +0,0 @@
1
- require_relative '../lib/tty-progressbar'
2
-
3
- bar = TTY::ProgressBar.new("downloading [:bar] :percent", head: '>', total: 30)
4
- 30.times do |i|
5
- if i == 15
6
- bar.update(head: 'x')
7
- bar.stop
8
- break
9
- end
10
- sleep(0.1)
11
- bar.advance
12
- end
@@ -1,5 +0,0 @@
1
- require_relative '../lib/tty-progressbar'
2
-
3
- bar = TTY::ProgressBar.new("[:bar]", total: 30)
4
-
5
- bar.iterate(30.times) { sleep(0.1) }
@@ -1,6 +0,0 @@
1
- require_relative '../lib/tty-progressbar'
2
-
3
- bar = TTY::ProgressBar.new("[:bar] :current", total: 10, width: 20)
4
-
5
- range = 1..Float::INFINITY
6
- bar.iterate(range.lazy.take(10)) { sleep(0.1) }
@@ -1,13 +0,0 @@
1
- require_relative '../../lib/tty-progressbar'
2
-
3
- bars = TTY::ProgressBar::Multi.new("main [:bar] :percent")
4
-
5
- bar1 = bars.register "foo [:bar] :percent", total: 15
6
- bar2 = bars.register "bar [:bar] :percent", total: 15
7
- bar3 = bars.register "baz [:bar] :percent", total: 45
8
-
9
- th1 = Thread.new { 15.times { sleep(0.1); bar1.advance } }
10
- th2 = Thread.new { 15.times { sleep(0.1); bar2.advance } }
11
- th3 = Thread.new { 45.times { sleep(0.1); bar3.advance } }
12
-
13
- [th1, th2, th3].each(&:join)
@@ -1,13 +0,0 @@
1
- require_relative '../../lib/tty-progressbar'
2
-
3
- bars = TTY::ProgressBar::Multi.new
4
-
5
- bar1 = bars.register "foo [:bar] :percent", total: 20
6
- bar2 = bars.register "bar [:bar] :percent", total: 30
7
- bar3 = bars.register "baz [:bar] :percent", total: 10
8
-
9
- th1 = Thread.new { 20.times { sleep(0.2); bar1.advance } }
10
- th2 = Thread.new { 30.times { sleep(0.1); bar2.advance } }
11
- th3 = Thread.new { 10.times { sleep(0.3); bar3.advance } }
12
-
13
- [th1, th2, th3].each(&:join)