Class: Wip::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/wip/environment.rb

Overview

Detects WSL2, Windows interop, and architecture facts about the host.

Instance Method Summary collapse

Constructor Details

#initialize(stdin: $stdin, stdout: $stdout) ⇒ Environment

Returns a new instance of Environment.



6
7
8
9
# File 'lib/wip/environment.rb', line 6

def initialize(stdin: $stdin, stdout: $stdout)
  @stdin = stdin
  @stdout = stdout
end

Instance Method Details

#architectureObject



20
21
22
23
24
# File 'lib/wip/environment.rb', line 20

def architecture
  machine = `uname -m`.strip
  { 'x86_64' => 'linux/amd64', 'aarch64' => 'linux/arm64', 'arm64' => 'linux/arm64' }.fetch(machine,
                                                                                            "linux/#{machine}")
end

#interactive?Boolean

Returns:

  • (Boolean)


18
# File 'lib/wip/environment.rb', line 18

def interactive? = @stdin.tty? && @stdout.tty?

#windows_interop?Boolean

Returns:

  • (Boolean)


17
# File 'lib/wip/environment.rb', line 17

def windows_interop? = File.executable?('/proc/sys/fs/binfmt_misc/WSLInterop') || ENV.key?('WSL_INTEROP')

#wsl2?Boolean

Returns:

  • (Boolean)


11
12
13
14
15
# File 'lib/wip/environment.rb', line 11

def wsl2?
  File.read('/proc/version').match?(/microsoft.*WSL2/i)
rescue Errno::ENOENT
  false
end