Class: Utils::Bottles::Tag Private

Inherits:
Object show all
Defined in:
utils/bottles.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.

Denotes the arch and OS of a bottle.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(system:, arch:) ⇒ void

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:



203
204
205
206
# File 'utils/bottles.rb', line 203

def initialize(system:, arch:)
  @system = system
  @arch = arch
end

Instance Attribute Details

#archSymbol (readonly)

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:



172
173
174
# File 'utils/bottles.rb', line 172

def arch
  @arch
end

#systemSymbol (readonly)

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:



172
173
174
# File 'utils/bottles.rb', line 172

def system
  @system
end

Class Method Details

.from_arg(arg, os:, arch:) ⇒ T.attached_class

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:

Returns:

  • (T.attached_class)


194
195
196
197
198
199
200
# File 'utils/bottles.rb', line 194

def self.from_arg(arg, os:, arch:)
  if arg
    from_symbol(arg)
  else
    new(system: os, arch:)
  end
end

.from_symbol(value) ⇒ T.attached_class

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:

Returns:

  • (T.attached_class)

Raises:

  • (ArgumentError)


175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'utils/bottles.rb', line 175

def self.from_symbol(value)
  return new(system: :all, arch: :all) if value == :all

  @all_archs_regex ||= T.let(begin
    all_archs = Hardware::CPU::ALL_ARCHS.map(&:to_s)
    /
      ^(?:(?<arch>#{Regexp.union(all_archs)})_)?
      (?<system>[\w.]+)$
    /x
  end, T.nilable(Regexp))
  match = @all_archs_regex.match(value.to_s)
  system = match[:system] if match
  raise ArgumentError, "Invalid bottle tag symbol" if match.nil? || system.nil?

  arch = match[:arch]&.to_sym || :x86_64
  new(system: system.to_sym, arch:)
end

Instance Method Details

#default_cellarString

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:



290
291
292
293
294
295
296
297
298
# File 'utils/bottles.rb', line 290

def default_cellar
  if linux?
    Homebrew::DEFAULT_LINUX_CELLAR
  elsif standardized_arch == :arm64
    Homebrew::DEFAULT_MACOS_ARM_CELLAR
  else
    Homebrew::DEFAULT_MACOS_CELLAR
  end
end

#default_prefixString

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:



276
277
278
279
280
281
282
283
284
285
286
287
# File 'utils/bottles.rb', line 276

def default_prefix
  prefix = if linux?
    HOMEBREW_LINUX_DEFAULT_PREFIX
  elsif standardized_arch == :arm64
    HOMEBREW_MACOS_ARM_DEFAULT_PREFIX
  else
    HOMEBREW_DEFAULT_PREFIX
  end
  raise "No default prefix is known for #{self}: HOMEBREW_*_DEFAULT_PREFIX is unset" if prefix.nil?

  prefix
end

#linux?Boolean

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:

  • (Boolean)


266
267
268
# File 'utils/bottles.rb', line 266

def linux?
  system == :linux
end

#macos?Boolean

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:

  • (Boolean)


271
272
273
# File 'utils/bottles.rb', line 271

def macos?
  MacOSVersion::SYMBOLS.key?(system)
end

#padded_prefixString?

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:



301
302
303
304
305
306
307
308
309
310
# File 'utils/bottles.rb', line 301

def padded_prefix
  if linux?
    case standardized_arch
    when :arm64 then Homebrew::LINUX_ARM64_BOTTLE_PREFIX
    when :x86_64 then Homebrew::LINUX_X86_64_BOTTLE_PREFIX
    end
  elsif macos? && standardized_arch == :arm64
    Homebrew::MACOS_ARM64_BOTTLE_PREFIX
  end
end

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



234
235
236
237
238
239
# File 'utils/bottles.rb', line 234

def standardized_arch
  return :x86_64 if [:x86_64, :intel].include? arch
  return :arm64 if [:arm64, :arm, :aarch64].include? arch

  arch
end

#to_macos_versionMacOSVersion

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:



261
262
263
# File 'utils/bottles.rb', line 261

def to_macos_version
  @to_macos_version ||= T.let(MacOSVersion.from_symbol(system), T.nilable(MacOSVersion))
end

#to_symSymbol

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:



242
243
244
# File 'utils/bottles.rb', line 242

def to_sym
  arch_to_symbol(standardized_arch)
end

#to_unstandardized_symSymbol

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:



252
253
254
255
256
257
258
# File 'utils/bottles.rb', line 252

def to_unstandardized_sym
  # Never allow these generic names
  return to_sym if [:intel, :arm].include? arch

  # Backwards compatibility with older bottle names
  arch_to_symbol(arch)
end