Module: Support::Rake::TaskWithSpinner
- Defined in:
- lib/support/rake/task_with_spinner.rb
Constant Summary collapse
- TaskSkippedError =
Class.new(StandardError)
Class Attribute Summary collapse
-
.spinner_manager ⇒ Object
Returns the value of attribute spinner_manager.
Instance Method Summary collapse
Class Attribute Details
.spinner_manager ⇒ Object
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
17 18 19 20 21 22 |
# File 'lib/support/rake/task_with_spinner.rb', line 17 def enable_spinner! return unless GDK::Output.interactive? return unless defined?(TTY::Spinner) @enable_spinner = true end |
#execute ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/support/rake/task_with_spinner.rb', line 39 def execute(...) spinner = nil if TaskWithSpinner.spinner_manager && show_spinner? thread = Thread.new do sleep 0.001 next if @skipped spinner = TaskWithSpinner.spinner_manager.register spinner_name spinner.auto_spin end end super rescue StandardError => e spinner&.error raise e unless e.instance_of?(TaskSkippedError) else spinner&.success ensure thread&.join end |
#invoke ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/support/rake/task_with_spinner.rb', line 24 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 |
#skip! ⇒ Object
61 62 63 64 |
# File 'lib/support/rake/task_with_spinner.rb', line 61 def skip! @skipped = true raise TaskSkippedError end |