Sha256: f292e75a96469c23a80b199b33ce1c115c6e9ed583ddc2784b83c0b7f28c8582

Contents?: true

Size: 929 Bytes

Versions: 83

Compression:

Stored size: 929 Bytes

Contents

require 'cli/ui'
require 'io/console'

module CLI
  module UI
    module Terminal
      DEFAULT_WIDTH = 80
      DEFAULT_HEIGHT = 24

      # Returns the width of the terminal, if possible
      # Otherwise will return DEFAULT_WIDTH
      #
      def self.width
        winsize[1]
      end

      # Returns the width of the terminal, if possible
      # Otherwise, will return DEFAULT_HEIGHT
      #
      def self.height
        winsize[0]
      end

      def self.winsize
        @winsize ||= begin
          winsize = IO.console.winsize
          setup_winsize_trap

          if winsize.any?(&:zero?)
            [DEFAULT_HEIGHT, DEFAULT_WIDTH]
          else
            winsize
          end
        rescue
          [DEFAULT_HEIGHT, DEFAULT_WIDTH]
        end
      end

      def self.setup_winsize_trap
        @winsize_trap ||= Signal.trap('WINCH') do
          @winsize = nil
        end
      end
    end
  end
end

Version data entries

83 entries across 83 versions & 3 rubygems

Version Path
shopify-cli-2.2.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.2.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.1.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.0.2 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.0.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.0.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.14.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.13.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.13.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.12.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
rfix-3.0.1 vendor/cli-ui/lib/cli/ui/terminal.rb
rfix-3.0.0 vendor/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.11.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.10.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.9.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.9.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
cli-ui-1.5.1 lib/cli/ui/terminal.rb
cli-ui-1.5.0 lib/cli/ui/terminal.rb
shopify-cli-1.8.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-1.7.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb