Class: S3Zipper::Spinner

Inherits:
Object
  • Object
show all
Includes:
Concurrent::Async
Defined in:
lib/s3_zipper/spinner.rb

Instance Method Summary collapse

Constructor Details

#initialize(title: "", enabled: true, steps: %w[▸▹▹▹▹▹ ▹▸▹▹▹▹ ▹▹▸▹▹▹ ▹▹▹▸▹▹ ▹▹▹▹▸▹ ▹▹▹▹▹▸ ▹▹▹▹▹]) ⇒ Spinner

Returns a new instance of Spinner.



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/s3_zipper/spinner.rb', line 9

def initialize title: "", enabled: true, steps: %w[▸▹▹▹▹▹ ▹▸▹▹▹▹ ▹▹▸▹▹▹ ▹▹▹▸▹▹ ▹▹▹▹▸▹ ▹▹▹▹▹▸ ▹▹▹▹▹]
  return unless enabled || true

  @progress_bar = ProgressBar.create(
    format:                           "[%B] %t",
    total:                            nil,
    length:                           100,
    title:                            title,
    autofinish:                       false,
    unknown_progress_animation_steps: steps,
  )
end

Instance Method Details

#finish(title: nil) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/s3_zipper/spinner.rb', line 50

def finish title: nil
  return unless @progress_bar

  @progress_bar.title  = title if title
  @progress_bar.format = "[✔] %t"
  @progress_bar.finish
end

#incrementObject



44
45
46
47
48
# File 'lib/s3_zipper/spinner.rb', line 44

def increment
  return unless @progress_bar

  @progress_bar.increment
end

#reset(title: nil, total: nil, format: nil) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/s3_zipper/spinner.rb', line 22

def reset title: nil, total: nil, format: nil
  return unless @progress_bar

  @progress_bar.progress = 0
  @progress_bar.title    = title if title
  @progress_bar.total    = total if total
  @progress_bar.format   = format if format
  refresh
end

#spinObject



36
37
38
39
40
41
42
# File 'lib/s3_zipper/spinner.rb', line 36

def spin
  return unless @progress_bar
  until @progress_bar.finished?
    increment
    sleep(2)
  end
end

#startObject



32
33
34
# File 'lib/s3_zipper/spinner.rb', line 32

def start
  async.spin
end