Sha256: 3fd687ead8c450f6a6fa39f43943dde0c0898db6d6bb0f71ee967a6edecfd84d

Contents?: true

Size: 1.41 KB

Versions: 14

Compression:

Stored size: 1.41 KB

Contents

require 'cli/ui'

module CLI
  module UI
    module Spinner
      autoload :Async,      'cli/ui/spinner/async'
      autoload :SpinGroup,  'cli/ui/spinner/spin_group'

      PERIOD = 0.1 # seconds
      TASK_FAILED = :task_failed

      begin
        runes = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']
        colors = [CLI::UI::Color::CYAN.code] * 5 + [CLI::UI::Color::MAGENTA.code] * 5
        raise unless runes.size == colors.size
        GLYPHS = colors.zip(runes).map(&:join)
      end

      # Adds a single spinner
      # Uses an interactive session to allow the user to pick an answer
      # Can use arrows, y/n, numbers (1/2), and vim bindings to control
      #
      # https://user-images.githubusercontent.com/3074765/33798295-d94fd822-dce3-11e7-819b-43e5502d490e.gif
      #
      # ==== Attributes
      #
      # * +title+ - Title of the spinner to use
      #
      # ==== Options
      #
      # * +:auto_debrief+ - Automatically debrief exceptions? Default to true
      #
      # ==== Block
      #
      # * *spinner+ - Instance of the spinner. Can call +update_title+ to update the user of changes
      #
      # ==== Example Usage:
      #
      #   CLI::UI::Spinner.spin('Title') { sleep 1.0 }
      #
      def self.spin(title, auto_debrief: true, &block)
        sg = SpinGroup.new(auto_debrief: auto_debrief)
        sg.add(title, &block)
        sg.wait
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
shopify-cli-0.9.2 vendor/deps/cli-ui/lib/cli/ui/spinner.rb
shopify-cli-0.9.1 vendor/deps/cli-ui/lib/cli/ui/spinner.rb
shopify-cli-0.9.0 vendor/deps/cli-ui/lib/cli/ui/spinner.rb
cli-ui-1.2.3 lib/cli/ui/spinner.rb
cli-ui-1.2.2 lib/cli/ui/spinner.rb
cli-ui-1.2.0 lib/cli/ui/spinner.rb
cli-ui-1.2.1 lib/cli/ui/spinner.rb
cli-ui-1.1.4 lib/cli/ui/spinner.rb
cli-ui-1.1.3 lib/cli/ui/spinner.rb
cli-ui-1.1.2 lib/cli/ui/spinner.rb
cli-ui-1.1.1 lib/cli/ui/spinner.rb
cli-ui-1.1.0 lib/cli/ui/spinner.rb
cli-ui-1.0.0 lib/cli/ui/spinner.rb
cli-ui-0.1.2 lib/cli/ui/spinner.rb