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.36.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.35.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.34.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.33.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.33.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.32.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.32.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.31.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.30.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.29.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.28.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.27.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.26.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.25.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.24.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.23.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.22.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.21.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.20.1 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
shopify-cli-2.20.0 vendor/deps/cli-ui/lib/cli/ui/terminal.rb