Class: Homebrew::SimulateSystem Private

Inherits:
Object
  • Object
show all
Defined in:
simulate_system.rb,
extend/os/mac/simulate_system.rb,
extend/os/linux/simulate_system.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Helper module for simulating different system configurations.

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.archObject

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



10
11
12
# File 'simulate_system.rb', line 10

def arch
  @arch
end

.osSymbol?

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



12
13
14
15
16
# File 'extend/os/linux/simulate_system.rb', line 12

def os
  return :macos if @os.blank? && Homebrew::EnvConfig.simulate_macos_on_linux?

  @os
end

Class Method Details

.clearvoid

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

This method returns an undefined value.



52
53
54
# File 'simulate_system.rb', line 52

def clear
  @os = @arch = nil
end

.current_archSymbol

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



67
68
69
# File 'simulate_system.rb', line 67

def current_arch
  @arch || Hardware::CPU.type
end

.current_osSymbol

Returns:



16
17
18
# File 'extend/os/mac/simulate_system.rb', line 16

def current_os
  os || MacOS.version.to_sym
end

.simulating_or_running_on_linux?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'extend/os/linux/simulate_system.rb', line 19

def simulating_or_running_on_linux?
  os.blank? || os == :linux
end

.simulating_or_running_on_macos?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'extend/os/mac/simulate_system.rb', line 11

def simulating_or_running_on_macos?
  os.blank? || [:macos, *MacOSVersion::SYMBOLS.keys].include?(os)
end

.with(os: T.unsafe(nil), arch: T.unsafe(nil), &_block) ⇒ T.type_parameter(:U)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:

  • os (Symbol) (defaults to: T.unsafe(nil))
  • arch (Symbol) (defaults to: T.unsafe(nil))
  • _block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U))

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'simulate_system.rb', line 19

def with(os: T.unsafe(nil), arch: T.unsafe(nil), &_block)
  raise ArgumentError, "At least one of `os` or `arch` must be specified." if !os && !arch

  old_os = self.os
  old_arch = self.arch

  begin
    self.os = os if os && os != current_os
    self.arch = arch if arch && arch != current_arch

    yield
  ensure
    @os = old_os
    @arch = old_arch
  end
end