progress 3.4.0 → 3.5.0

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
- SHA1:
3
- metadata.gz: ed83a839d83aa17fc079ed2a5d16c5fa2b9c4d07
4
- data.tar.gz: 419b4c459474fd7b8f73c325006bc9d33a30c25d
2
+ SHA256:
3
+ metadata.gz: 88486a9fc4ddbe22b0ba6c4d398c71827a2dca05ac9fee01a4a715a72e8a1ddc
4
+ data.tar.gz: ff8bd4245c78217409212fb60bdc0b3e205604290ffd2005371e0c38cf7c7eee
5
5
  SHA512:
6
- metadata.gz: c98e8c3477ca6a71b7de133afec93bf1fcfeaa53924f7dca5369b1b808f2aca9b5ce14faf19a889677245b21d8deeea9d9d0f29e9770f3eac9f2d211a0a9c944
7
- data.tar.gz: 9ea259515c34274950bbc5916035ded346837f5f36d7af6cdbf4fa31ce589b186c07d6ab0d0aa4b98121dea43ddb42948ce65243cf9af1249362a08011a1274e
6
+ metadata.gz: a52da0e1033be9ca9069c62c92aa7936c95d4f45df94cbacfb6de439d96fd441a2c59a72750b9728136f11c08ad4e8ade9b51549ee17a3f3da47e915a25cb3a7
7
+ data.tar.gz: 1a413c2310ae732d1a3bfbe53e86b1a55dbb6677920e6d2cd3307ec59e67a028de5cafa83e53fb728b76ccdbd9b8bbddc2dcf4b5660887837d1fbc5ac77f26e7
@@ -11,17 +11,21 @@ Layout/CaseIndentation:
11
11
  Layout/DotPosition:
12
12
  EnforcedStyle: trailing
13
13
 
14
+ Layout/EndAlignment:
15
+ EnforcedStyleAlignWith: variable
16
+
14
17
  Layout/IndentHash:
15
18
  EnforcedStyle: consistent
16
19
 
17
20
  Layout/SpaceBeforeBlockBraces:
18
21
  EnforcedStyle: no_space
22
+ EnforcedStyleForEmptyBraces: no_space
19
23
 
20
24
  Layout/SpaceInsideHashLiteralBraces:
21
25
  EnforcedStyle: no_space
22
26
 
23
- Lint/EndAlignment:
24
- EnforcedStyleAlignWith: variable
27
+ Lint/UnneededRequireStatement:
28
+ Enabled: false
25
29
 
26
30
  Metrics/AbcSize:
27
31
  Max: 30
@@ -61,7 +65,7 @@ Style/Encoding:
61
65
  Enabled: false
62
66
 
63
67
  Style/IfUnlessModifier:
64
- MaxLineLength: 40
68
+ Enabled: false
65
69
 
66
70
  Style/NumericPredicate:
67
71
  Enabled: false
@@ -75,5 +79,8 @@ Style/Semicolon:
75
79
  Style/TrailingCommaInArguments:
76
80
  EnforcedStyleForMultiline: no_comma
77
81
 
78
- Style/TrailingCommaInLiteral:
82
+ Style/TrailingCommaInArrayLiteral:
83
+ EnforcedStyleForMultiline: comma
84
+
85
+ Style/TrailingCommaInHashLiteral:
79
86
  EnforcedStyleForMultiline: comma
@@ -6,17 +6,18 @@ rvm:
6
6
  - '1.9.3-p551'
7
7
  - '2.0.0-p648'
8
8
  - '2.1.10'
9
- - '2.2.8'
10
- - '2.3.5'
11
- - '2.4.2'
9
+ - '2.2.10'
10
+ - '2.3.8'
11
+ - '2.4.5'
12
+ - '2.5.3'
12
13
  - 'jruby-9.0.5.0'
13
14
  - 'jruby-9.1.9.0'
14
15
  script: bundle exec rspec
15
16
  matrix:
16
17
  include:
17
18
  - env: RUBOCOP=✓
18
- rvm: '2.4.2'
19
+ rvm: '2.4.5'
19
20
  script: bundle exec rubocop
20
21
  - env: CHECK_RUBIES=✓
21
- rvm: '2.4.2'
22
+ rvm: '2.4.5'
22
23
  script: bundle exec travis_check_rubies
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## unreleased
4
4
 
5
+ ## v3.5.0 (2018-10-19)
6
+
7
+ * Add `Progress.without_beeper` for stopping periodical refresh of progress/eta for the duration of the block [@toy](https://github.com/toy)
8
+
5
9
  ## v3.4.0 (2017-10-11)
6
10
 
7
11
  * Remove special handling for CSV in ruby 1.8 [@toy](https://github.com/toy)
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008-2017 Ivan Kuchin
1
+ Copyright (c) 2008-2018 Ivan Kuchin
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -1,7 +1,7 @@
1
1
  [![Gem Version](https://img.shields.io/gem/v/progress.svg?style=flat)](https://rubygems.org/gems/progress)
2
2
  [![Build Status](https://img.shields.io/travis/toy/progress/master.svg?style=flat)](https://travis-ci.org/toy/progress)
3
- [![Code Climate](https://img.shields.io/codeclimate/github/toy/progress.svg?style=flat)](https://codeclimate.com/github/toy/progress)
4
- [![Dependency Status](https://img.shields.io/gemnasium/toy/progress.svg?style=flat)](https://gemnasium.com/toy/progress)
3
+ [![Code Climate](https://img.shields.io/codeclimate/maintainability/toy/progress.svg?style=flat)](https://codeclimate.com/github/toy/progress)
4
+ [![Depfu](https://badges.depfu.com/badges/528142fc3202e4bd89680832bfc713d7/overview.svg)](https://depfu.com/github/toy/progress)
5
5
  [![Inch CI](https://inch-ci.org/github/toy/progress.svg?branch=master&style=flat)](https://inch-ci.org/github/toy/progress)
6
6
 
7
7
  # progress
@@ -137,4 +137,4 @@ Or if you know that B runs 9 times faster than C:
137
137
 
138
138
  ## Copyright
139
139
 
140
- Copyright (c) 2008-2017 Ivan Kuchin. See LICENSE.txt for details.
140
+ Copyright (c) 2008-2018 Ivan Kuchin. See LICENSE.txt for details.
@@ -12,6 +12,7 @@ class Progress
12
12
  init(total, title)
13
13
  print_message force: true
14
14
  return unless block_given?
15
+
15
16
  begin
16
17
  yield
17
18
  ensure
@@ -44,6 +45,7 @@ class Progress
44
45
  # stop progress
45
46
  def stop
46
47
  return unless running?
48
+
47
49
  if @levels.length == 1
48
50
  print_message force: true, finish: true
49
51
  stop_beeper
@@ -59,6 +61,7 @@ class Progress
59
61
  # set note
60
62
  def note=(note)
61
63
  return unless running?
64
+
62
65
  @levels.last.note = note
63
66
  end
64
67
 
@@ -82,7 +85,7 @@ class Progress
82
85
  @highlight = true && value
83
86
  end
84
87
 
85
- # show progerss in terminal title
88
+ # show progress in terminal title
86
89
  def terminal_title?
87
90
  @terminal_title.nil? ? io_tty? : @terminal_title
88
91
  end
@@ -102,6 +105,15 @@ class Progress
102
105
  io.tty? || ENV['PROGRESS_TTY']
103
106
  end
104
107
 
108
+ # don't refresh progress (eta) periodically for the duration of the block
109
+ def without_beeper
110
+ old_state = @without_beeper
111
+ @without_beeper = true
112
+ yield
113
+ ensure
114
+ @without_beeper = old_state
115
+ end
116
+
105
117
  private
106
118
 
107
119
  attr_reader :eta
@@ -139,7 +151,7 @@ class Progress
139
151
 
140
152
  def start_beeper
141
153
  @beeper = Beeper.new(10) do
142
- print_message
154
+ print_message unless @without_beeper
143
155
  end
144
156
  end
145
157
 
@@ -188,7 +200,7 @@ class Progress
188
200
 
189
201
  def build_message(options)
190
202
  current = 0
191
- message = @levels.reverse.map do |level|
203
+ reverse_parts = @levels.reverse.map do |level|
192
204
  current = level.to_f(current)
193
205
 
194
206
  part = current.zero? ? '......' : format('%5.1f%%', current * 100.0)
@@ -198,7 +210,8 @@ class Progress
198
210
  end
199
211
 
200
212
  level.title ? "#{level.title}: #{part}" : part
201
- end.reverse * ' > '
213
+ end
214
+ message = reverse_parts.reverse * ' > '
202
215
 
203
216
  if options[:finish]
204
217
  message << " (elapsed: #{eta.elapsed})"
@@ -8,6 +8,7 @@ class Progress
8
8
  def left(completed)
9
9
  seconds = seconds_left(completed)
10
10
  return unless seconds && seconds > 0
11
+
11
12
  seconds_to_string(seconds)
12
13
  end
13
14
 
@@ -19,6 +20,7 @@ class Progress
19
20
 
20
21
  def seconds_to_string(seconds)
21
22
  return unless seconds
23
+
22
24
  case seconds
23
25
  when 0...60
24
26
  format '%.0fs', seconds
@@ -34,6 +36,7 @@ class Progress
34
36
  def seconds_left(completed)
35
37
  now = Time.now
36
38
  return unless completed > 0 && now - @started_at >= 1
39
+
37
40
  current_eta = @started_at + (now - @started_at) / completed
38
41
  @left = if @left
39
42
  @left + (current_eta - @left) * (1 + completed) * 0.5
@@ -2,8 +2,9 @@ require 'progress'
2
2
 
3
3
  # Add Progress method as alias to Progress.start
4
4
  module Kernel
5
+ private
6
+
5
7
  define_method :Progress do |*args, &block|
6
8
  Progress.start(*args, &block)
7
9
  end
8
- private :Progress
9
10
  end
@@ -131,6 +131,7 @@ class Progress
131
131
  false
132
132
  rescue Errno::EPIPE
133
133
  raise unless defined?(JRUBY_VERSION)
134
+
134
135
  false
135
136
  end
136
137
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'progress'
5
- s.version = '3.4.0'
5
+ s.version = '3.5.0'
6
6
  s.summary = %q{Show progress of long running tasks}
7
7
  s.homepage = "http://github.com/toy/#{s.name}"
8
8
  s.authors = ['Ivan Kuchin']
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = %w[lib]
19
19
 
20
20
  s.add_development_dependency 'rspec', '~> 3.0'
21
- if RUBY_VERSION >= '2.0'
22
- s.add_development_dependency 'rubocop', '~> 0.27'
21
+ if RUBY_VERSION >= '2.2'
22
+ s.add_development_dependency 'rubocop', '~> 0.59'
23
23
  end
24
24
  end
@@ -340,32 +340,32 @@ describe Progress do
340
340
  end
341
341
  end
342
342
 
343
- def title(s)
344
- "\e]0;#{s}\a"
343
+ def title(str)
344
+ "\e]0;#{str}\a"
345
345
  end
346
346
 
347
- def hl(s)
348
- "\e[1m#{s}\e[0m"
347
+ def hl(str)
348
+ "\e[1m#{str}\e[0m"
349
349
  end
350
350
 
351
- def unhl(s)
352
- s.gsub(/\e\[\dm/, '')
351
+ def unhl(str)
352
+ str.gsub(/\e\[\dm/, '')
353
353
  end
354
354
 
355
- def on_line(s)
356
- "\r" + s + "\e[K"
355
+ def on_line(str)
356
+ "\r" + str + "\e[K"
357
357
  end
358
358
 
359
- def line(s)
360
- s + "\n"
359
+ def line(str)
360
+ str + "\n"
361
361
  end
362
362
 
363
- def on_line_n_title(s)
364
- [on_line(s), title(unhl(s))]
363
+ def on_line_n_title(str)
364
+ [on_line(str), title(unhl(str))]
365
365
  end
366
366
 
367
- def line_n_title(s)
368
- [line(s), title(unhl(s))]
367
+ def line_n_title(str)
368
+ [line(str), title(unhl(str))]
369
369
  end
370
370
 
371
371
  it 'produces valid output when staying on line' do
@@ -522,5 +522,50 @@ describe Progress do
522
522
  it{ is_expected.to be_truthy }
523
523
  end
524
524
  end
525
+
526
+ describe '.without_beeper' do
527
+ before do
528
+ allow(Progress).to receive(:start_beeper).and_call_original
529
+ allow(Progress::Beeper).to receive(:new) do |*, &block|
530
+ @block = block
531
+ double(restart: nil, stop: nil)
532
+ end
533
+ expect(Progress).to receive(:print_message).exactly(print_times).times
534
+ end
535
+
536
+ context 'when not used' do
537
+ let(:print_times){ 3 }
538
+
539
+ it 'allows beeper to print progress' do
540
+ Progress.start do
541
+ @block.call
542
+ end
543
+ end
544
+ end
545
+
546
+ context 'when used around progress block' do
547
+ let(:print_times){ 2 }
548
+
549
+ it 'stops beeper from printing progress' do
550
+ Progress.without_beeper do
551
+ Progress.start do
552
+ @block.call
553
+ end
554
+ end
555
+ end
556
+ end
557
+
558
+ context 'when used inside progress block' do
559
+ let(:print_times){ 2 }
560
+
561
+ it 'stops beeper from printing progress' do
562
+ Progress.start do
563
+ Progress.without_beeper do
564
+ @block.call
565
+ end
566
+ end
567
+ end
568
+ end
569
+ end
525
570
  end
526
571
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: progress
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Kuchin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2018-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.27'
33
+ version: '0.59'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.27'
40
+ version: '0.59'
41
41
  description:
42
42
  email:
43
43
  executables: []
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  version: '0'
84
84
  requirements: []
85
85
  rubyforge_project: progress
86
- rubygems_version: 2.6.13
86
+ rubygems_version: 2.7.7
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: Show progress of long running tasks