Module: Support::Rake::TaskWithSpinner

Defined in:
lib/support/rake/task_with_spinner.rb

Class Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.spinner_managerObject

Returns the value of attribute spinner_manager.



12
13
14
# File 'lib/support/rake/task_with_spinner.rb', line 12

def spinner_manager
  @spinner_manager
end

Instance Method Details

#enable_spinner!Object



15
16
17
18
19
20
# File 'lib/support/rake/task_with_spinner.rb', line 15

def enable_spinner!
  return unless GDK::Output.interactive?
  return unless defined?(TTY::Spinner)

  @enable_spinner = true
end

#executeObject



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/support/rake/task_with_spinner.rb', line 37

def execute(...)
  if TaskWithSpinner.spinner_manager && show_spinner?
    spinner = TaskWithSpinner.spinner_manager.register spinner_name
    spinner.auto_spin
  end

  super
rescue StandardError => e
  spinner&.error
  raise e
else
  spinner&.success
end

#invokeObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/support/rake/task_with_spinner.rb', line 22

def invoke(...)
  if @enable_spinner
    TaskWithSpinner.spinner_manager ||= ::TTY::Spinner::Multi.new(
      spinner_name,
      success_mark: "\e[32m#{TTY::Spinner::TICK}\e[0m",
      error_mark: "\e[31m#{TTY::Spinner::CROSS}\e[0m",
      format: :dots,
      # $stderr is overwritten in TaskWithLogger
      output: STDERR # rubocop:disable Style/GlobalStdStream
    )
  end

  super
end