Sha256: d3d72db91deaa726778d87a4e76ab3ca2dd294d81a19f384261e930b9c310d11

Contents?: true

Size: 947 Bytes

Versions: 153

Compression:

Stored size: 947 Bytes

Contents

module CLI
  module UI
    module Spinner
      class Async
        # Convenience method for +initialize+
        #
        def self.start(title)
          new(title)
        end

        # Initializes a new asynchronous spinner with no specific end.
        # Must call +.stop+ to end the spinner
        #
        # ==== Attributes
        #
        # * +title+ - Title of the spinner to use
        #
        # ==== Example Usage:
        #
        #   CLI::UI::Spinner::Async.new('Title')
        #
        def initialize(title)
          require 'thread'
          sg = CLI::UI::Spinner::SpinGroup.new
          @m = Mutex.new
          @cv = ConditionVariable.new
          sg.add(title) { @m.synchronize { @cv.wait(@m) } }
          @t = Thread.new { sg.wait }
        end

        # Stops an asynchronous spinner
        #
        def stop
          @m.synchronize { @cv.signal }
          @t.value
        end
      end
    end
  end
end

Version data entries

153 entries across 153 versions & 3 rubygems

Version Path
shopify-cli-2.36.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.35.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.34.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.33.1 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.33.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.32.1 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.32.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.31.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.30.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.29.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.28.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.27.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.26.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.25.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.24.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.23.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.22.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.21.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.20.1 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb
shopify-cli-2.20.0 vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb