Sha256: 66af41f360bb66db063333d66fa2739fdaaba5ef0e8c5580f20c2dc7e71f6fe5

Contents?: true

Size: 1.38 KB

Versions: 3

Compression:

Stored size: 1.38 KB

Contents

# typed: 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

      sig { returns(OS) }
      def self.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

      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

3 entries across 3 versions & 1 rubygems

Version Path
gorails-0.1.5 vendor/deps/cli-ui/lib/cli/ui/os.rb
gorails-0.1.4 vendor/deps/cli-ui/lib/cli/ui/os.rb
gorails-0.1.3 vendor/deps/cli-ui/lib/cli/ui/os.rb