Sha256: 57f9290e8c7d57892e4e69ded50b116afaf3de815323b91a1a709390c9b8acfe

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

# typed: true
# frozen_string_literal: true

require 'rbconfig'

module CLI
  module UI
    class OS
      extend T::Sig

      sig { params(emoji: T::Boolean, color_prompt: T::Boolean, arrow_keys: T::Boolean, shift_cursor: T::Boolean).void }
      def initialize(emoji: true, color_prompt: true, arrow_keys: true, shift_cursor: false)
        @emoji = emoji
        @color_prompt = color_prompt
        @arrow_keys = arrow_keys
        @shift_cursor = shift_cursor
      end

      sig { returns(T::Boolean) }
      def use_emoji?
        @emoji
      end

      sig { returns(T::Boolean) }
      def use_color_prompt?
        @color_prompt
      end

      sig { returns(T::Boolean) }
      def suggest_arrow_keys?
        @arrow_keys
      end

      sig { returns(T::Boolean) }
      def shift_cursor_back_on_horizontal_absolute?
        @shift_cursor
      end

      class << self
        extend T::Sig

        sig { returns(OS) }
        def current
          @current_os ||= case RbConfig::CONFIG['host_os']
          when /darwin/
            MAC
          when /linux/
            LINUX
          else
            if RUBY_PLATFORM !~ /cygwin/ && ENV['OS'] == 'Windows_NT'
              WINDOWS
            else
              raise "Could not determine OS from host_os #{RbConfig::CONFIG["host_os"]}"
            end
          end
        end
      end

      MAC = OS.new
      LINUX = OS.new
      WINDOWS = OS.new(emoji: false, color_prompt: false, arrow_keys: false, shift_cursor: true)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cli-ui-2.3.0 lib/cli/ui/os.rb