Spec-Zone.ru › Homebrew

Модуль: OS::Mac Приватный

Расширен модулем:
Utils::Output::Mixin
Определён в:
os/mac.rb,
extend/os/mac/keg.rb,
extend/os/mac/cleaner.rb,
extend/os/mac/cleanup.rb,
extend/os/mac/formula.rb,
extend/os/mac/readall.rb,
extend/os/mac/sandbox.rb,
extend/os/mac/cask/dsl.rb,
extend/os/mac/cmd/info.rb,
extend/os/mac/hardware.rb,
extend/os/mac/test_bot.rb,
extend/os/mac/reinstall.rb,
extend/os/mac/diagnostic.rb,
extend/os/mac/api/internal.rb,
extend/os/mac/hardware/cpu.rb,
extend/os/mac/keg_relocate.rb,
extend/os/mac/utils/socket.rb,
extend/os/mac/dev-cmd/tests.rb,
extend/os/mac/language/java.rb,
extend/os/mac/system_config.rb,
extend/os/mac/utils/bottles.rb,
extend/os/mac/bundle/skipper.rb,
extend/os/mac/cask/installer.rb,
extend/os/mac/dev-cmd/bottle.rb,
extend/os/mac/extend/ENV/std.rb,
extend/os/mac/linkage_checker.rb,
extend/os/mac/missing_formula.rb,
extend/os/mac/simulate_system.rb,
extend/os/mac/extend/ENV/super.rb,
extend/os/mac/development_tools.rb,
extend/os/mac/extend/ENV/shared.rb,
extend/os/mac/formula_installer.rb,
extend/os/mac/extend/pathname/os.rb,
extend/os/mac/cask/artifact/moved.rb,
extend/os/mac/dependency_collector.rb,
extend/os/mac/formula_cellar_checks.rb,
extend/os/mac/cask/artifact/symlinked.rb,
extend/os/mac/cask/artifact/abstract_uninstall.rb,
cask/macos.rb,
os/mac/sdk.rb,
os/mac/xcode.rb

Обзор

Этот модуль является частью приватного API. Этот модуль можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого модуля, поскольку он может быть удалён или изменён без предупреждения.

Вспомогательный модуль для получения системной информации в macOS.

Определённые в пространстве имён

Модули: API, Bottles, Bundle, CLT, Cask, Cleaner, Cleanup, Cmd, DependencyCollector, DevCmd, DevelopmentTools, Diagnostic, Formula, FormulaCellarChecks, FormulaInstaller, Hardware, Keg, Language, LinkageChecker, MissingFormula, Pathname, Readall, Reinstall, Sandbox, SharedEnvExtension, SimulateSystem, Stdenv, Superenv, SystemConfig, TestBot, UNIXSocketExt, Xcode Классы: CLTSDKLocator, SDK, XcodeSDKLocator

Краткое описание методов класса свернуть

  • .active_developer_dir ⇒ String приватный
  • .app_with_bundle_id(*ids) ⇒ ::Pathname? приватный
  • .full_version ⇒ MacOSVersion внутренний

    Это значение можно сравнивать с числами, строками или символами с помощью стандартных методов Ruby модуля Comparable.

  • .full_version=(version) ⇒ void приватный
  • .language ⇒ String? приватный
  • .languages ⇒ Array<String> приватный
  • .latest_sdk_version ⇒ ::Version приватный
  • .mdfind(*ids) ⇒ Array<String> приватный
  • .mdfind_query(*ids) ⇒ String приватный
  • .pkgutil_info(id) ⇒ String приватный
  • .preferred_perl_version ⇒ String приватный
  • .sdk(version = nil) ⇒ SDK? приватный

    Если запрошен конкретный SDK:.

  • .sdk_for_formula(formula, version = nil, check_only_runtime_requirements: false) ⇒ SDK?

    Возвращает путь к SDK, необходимому согласно требованиям формулы.

  • .sdk_locator ⇒ CLTSDKLocator, XcodeSDKLocator приватный
  • .sdk_path(version = nil) ⇒ ::Pathname?

    Возвращает путь к SDK или nil согласно правилам, заданным методом Mac.sdk.

  • .sdk_path_if_needed(version = nil) ⇒ ::Pathname?

    Если установлены и Xcode, и CLT, отдаёт предпочтение SDK CLT.

  • .system_dir?(dir) ⇒ Boolean приватный
  • .undeletable?(path) ⇒ Boolean приватный
  • .version ⇒ MacOSVersion внутренний

    Это значение можно сравнивать с числами, строками или символами с помощью стандартных методов Ruby модуля Comparable.

Методы, включённые из Utils::Output::Mixin

issue_reporting_message, odebug, odeprecated, odie, odisabled, ofail, oh1, oh1_title, ohai, ohai_title, onoe, opoo, opoo_outside_github_actions, opoo_without_github_actions_annotation, pretty_deprecated, pretty_disabled, pretty_duration, pretty_install_status, pretty_installed, pretty_uninstalled, pretty_upgradable, pretty_warning

Подробное описание методов класса

.active_developer_dir ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


98
99
100
101
102
103
# File 'os/mac.rb', line 98

def self.active_developer_dir
  @active_developer_dir ||= T.let(
    Utils.popen_read("/usr/bin/xcode-select", "-print-path").strip,
    T.nilable(String),
  )
end

.app_with_bundle_id(*ids) ⇒ ::Pathname?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • ids (String)

Возвращает:

  • (::Pathname, nil)


174
175
176
177
178
179
180
181
182
183
184
# File 'os/mac.rb', line 174

def self.app_with_bundle_id(*ids)
  require "bundle_version"

  paths = mdfind(*ids).filter_map do |bundle_path|
    ::Pathname.new(bundle_path) if bundle_path.exclude?("/Backups.backupdb/")
  end
  return paths.first unless paths.all? { |bp| (bp/"Contents/Info.plist").exist? }

  # Prefer newest one, if we can find it.
  paths.max_by { |bundle_path| Homebrew::BundleVersion.from_info_plist(bundle_path/"Contents/Info.plist") }
end

.full_version ⇒ MacOSVersion

Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением casks и formulae. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Его можно сравнивать с числами, строками или символами с помощью стандартных методов Ruby модуля Comparable.

Возвращает:

  • (MacOSVersion)


41
42
43
44
45
46
47
48
49
50
51
# File 'os/mac.rb', line 41

def self.full_version
  @full_version ||= T.let(nil, T.nilable(MacOSVersion))
  # HOMEBREW_FAKE_MACOS is set system-wide in the macOS 11-arm64-cross image
  # for building a macOS 11 Portable Ruby on macOS 12
  # odisabled: remove support for Big Sur September (or later) 2027
  @full_version ||= if (fake_macos = ENV.fetch("HOMEBREW_FAKE_MACOS", nil))
    MacOSVersion.new(fake_macos)
  else
    MacOSVersion.new(VERSION)
  end
end

.full_version=(version) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Этот метод возвращает неопределённое значение.

Параметры:

  • version (String)


54
55
56
57
# File 'os/mac.rb', line 54

def self.full_version=(version)
  @full_version = MacOSVersion.new(version.chomp)
  @version = nil
end

.language ⇒ String?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String, nil)


93
94
95
# File 'os/mac.rb', line 93

def self.language
  languages.first
end

.languages ⇒ Array<String>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<String>)


78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'os/mac.rb', line 78

def self.languages
  @languages ||= T.let(nil, T.nilable(T::Array[String]))
  return @languages if @languages

  os_langs = Utils.popen_read("defaults", "read", "-g", "AppleLanguages")
  if os_langs.blank?
    # User settings don't exist so check the system-wide one.
    os_langs = Utils.popen_read("defaults", "read", "/Library/Preferences/.GlobalPreferences", "AppleLanguages")
  end
  os_langs = T.cast(os_langs.scan(/[^ \n"(),]+/), T::Array[String])

  @languages = os_langs
end

.latest_sdk_version ⇒ ::Version

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (::Version)


60
61
62
63
64
# File 'os/mac.rb', line 60

def self.latest_sdk_version
  # TODO: bump version when new Xcode macOS SDK is released
  # NOTE: We only track the major version of the SDK.
  ::Version.new("26")
end

.mdfind(*ids) ⇒ Array<String>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • ids (String)

Возвращает:

  • (Array<String>)


187
188
189
190
191
192
# File 'os/mac.rb', line 187

def self.mdfind(*ids)
  @mdfind ||= T.let(nil, T.nilable(T::Hash[T::Array[String], T::Array[String]]))
  (@mdfind ||= {}).fetch(ids) do
    @mdfind[ids] = Utils.popen_read("/usr/bin/mdfind", mdfind_query(*ids)).split("\n")
  end
end

.mdfind_query(*ids) ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • ids (String)

Возвращает:

  • (String)


203
204
205
# File 'os/mac.rb', line 203

def self.mdfind_query(*ids)
  ids.map! { |id| "kMDItemCFBundleIdentifier == #{id}" }.join(" || ")
end

.pkgutil_info(id) ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • id (String)

Возвращает:

  • (String)


195
196
197
198
199
200
# File 'os/mac.rb', line 195

def self.pkgutil_info(id)
  @pkginfo ||= T.let(nil, T.nilable(T::Hash[String, String]))
  (@pkginfo ||= {}).fetch(id) do |key|
    @pkginfo[key] = Utils.popen_read("/usr/sbin/pkgutil", "--pkg-info", key).strip
  end
end

.preferred_perl_version ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


67
68
69
70
71
72
73
74
75
# File 'os/mac.rb', line 67

def self.preferred_perl_version
  if version >= :sonoma
    "5.34"
  elsif version >= :big_sur
    "5.30"
  else
    "5.18"
  end
end

.sdk(version = nil) ⇒ SDK?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Если запрошен конкретный SDK:

1. The requested SDK is returned, if it's installed.
2. If the requested SDK is not installed, the newest SDK (if any SDKs
 are available) is returned.
3. If no SDKs are available, nil is returned.

Если конкретный SDK не запрошен, возвращается SDK, соответствующий версии ОС, если он доступен. В противном случае возвращается последняя версия SDK.

Параметры:

  • version (MacOSVersion, nil) (по умолчанию: nil)

Возвращает:

  • (SDK, nil)


124
125
126
# File 'os/mac.rb', line 124

def self.sdk(version = nil)
  sdk_locator.sdk_if_applicable(version)
end

.sdk_for_formula(formula, version = nil, check_only_runtime_requirements: false) ⇒ SDK?

Возвращает путь к SDK, необходимому в соответствии с требованиями формулы.

Параметры:

  • formula (Formula)
  • version (MacOSVersion, nil) (по умолчанию: nil)
  • check_only_runtime_requirements (Boolean) (по умолчанию: false)

Возвращает:

  • (SDK, nil)


138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'os/mac.rb', line 138

def self.sdk_for_formula(formula, version = nil, check_only_runtime_requirements: false)
  # If the formula requires Xcode, don't return the CLT SDK
  # If check_only_runtime_requirements is true, don't necessarily return the
  # Xcode SDK if the XcodeRequirement is only a build or test requirement.
  return Xcode.sdk if formula.requirements.any? do |req|
    next false unless req.is_a? XcodeRequirement
    next false if check_only_runtime_requirements && req.build? && !req.test?

    true
  end

  sdk(version)
end

.sdk_locator ⇒ CLTSDKLocator, XcodeSDKLocator

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (CLTSDKLocator, XcodeSDKLocator)


106
107
108
109
110
111
112
# File 'os/mac.rb', line 106

def self.sdk_locator
  if CLT.installed?
    CLT.sdk_locator
  else
    Xcode.sdk_locator
  end
end

.sdk_path(version = nil) ⇒ ::Pathname?

Возвращает путь к SDK или nil, следуя правилам, установленным для sdk.

Параметры:

  • version (MacOSVersion, nil) (по умолчанию: nil)

Возвращает:

  • (::Pathname, nil)


156
157
158
159
# File 'os/mac.rb', line 156

def self.sdk_path(version = nil)
  s = sdk(version)
  s&.path
end

.sdk_path_if_needed(version = nil) ⇒ ::Pathname?

Если установлены и Xcode, и CLT, отдаёт предпочтение SDK CLT. Ожидаемые результаты:

  1. В системах только с Xcode возвращает SDK Xcode.
  2. В системах только с CLT возвращает SDK CLT.

Параметры:

  • version (MacOSVersion, nil) (по умолчанию: nil)

Возвращает:

  • (::Pathname, nil)


168
169
170
171
# File 'os/mac.rb', line 168

def self.sdk_path_if_needed(version = nil)
  odeprecated "MacOS.sdk_path_if_needed", "MacOS.sdk_path"
  sdk_path(version)
end

.system_dir?(dir) ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • dir (::Pathname, String)

Возвращает:

  • (Boolean)


382
383
384
# File 'cask/macos.rb', line 382

def self.system_dir?(dir)
  SYSTEM_DIRS.include?(::Pathname.new(dir).expand_path)
end

.undeletable?(path) ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • path (::Pathname, String)

Возвращает:

  • (Boolean)


387
388
389
# File 'cask/macos.rb', line 387

def self.undeletable?(path)
  UNDELETABLE_PATHS.include?(::Pathname.new(path).expand_path)
end

.version ⇒ MacOSVersion

Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением casks и formulae. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Это значение можно сравнивать с числами, строками или символами с помощью стандартных методов Ruby Comparable.

Возвращает:

  • (MacOSVersion)


32
33
34
# File 'os/mac.rb', line 32

def self.version
  @version ||= T.let(full_version.strip_patch, T.nilable(MacOSVersion))
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/OS/Mac.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API