Модуль: Utils::Path Приватный
- Включён в:
- Cask::DSL, Cask::DSL::Base, Formula, Homebrew::Service
- Определён в:
- utils/path.rb
Обзор
Этот модуль является частью приватного API. Этот модуль можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого модуля, так как он может быть удалён или изменён без предупреждения.
Вспомогательные методы для работы с путями Homebrew и проверки путей пакетов.
Краткое описание методов класса свернуть
- .child_of?(parent, child) ⇒ Boolean приватный
- .formula_any_version_installed?(formula_names) ⇒ Boolean
Есть ли у какой-либо установленной кеги для одного или нескольких имён формул квитанция об установке.
- .formula_installed_prefixes(formula_names) ⇒ Array<Pathname>
Каталоги префиксов, установленные для одного или нескольких имён формул.
- .formula_opt_bin(formula_name) ⇒ Pathname
Каталог
binв стабильном пути установки для заданного имени формулы. - .formula_opt_bin_env(formula_name, *paths) ⇒ Hash{String => String}
Хеш окружения, в котором перед
PATHдобавлен стабильный каталогbinформулы. - .formula_opt_bin_path(formula_name, *paths) ⇒ PATH
Текущий
PATHс добавленным в начало стабильным каталогомbinформулы. - .formula_opt_include(formula_name) ⇒ Pathname
Каталог
includeв стабильном пути установки для заданного имени формулы. - .formula_opt_lib(formula_name) ⇒ Pathname
Каталог
libв стабильном пути установки для заданного имени формулы. - .formula_opt_libexec(formula_name) ⇒ Pathname
Каталог
libexecв стабильном пути установки для заданного имени формулы. - .formula_opt_prefix(formula_name) ⇒ Pathname
Стабильный путь установки для заданного имени формулы.
- .loadable_package_path?(path, package_type) ⇒ Boolean приватный
Краткое описание методов экземпляра свернуть
- #formula_any_version_installed?(formula_names) ⇒ Boolean
Есть ли у какой-либо установленной кеги для одного или нескольких имён формул квитанция об установке.
- #formula_opt_bin(formula_name) ⇒ Pathname
Каталог
binв стабильном пути установки для заданного имени формулы. - #formula_opt_include(formula_name) ⇒ Pathname
Каталог
includeв стабильном пути установки для заданного имени формулы. - #formula_opt_lib(formula_name) ⇒ Pathname
Каталог
libв стабильном пути установки для заданного имени формулы. - #formula_opt_libexec(formula_name) ⇒ Pathname
Каталог
libexecв стабильном пути установки для заданного имени формулы. - #formula_opt_prefix(formula_name) ⇒ Pathname
Стабильный путь установки для заданного имени формулы.
Подробное описание методов класса
.child_of?(parent, child) ⇒ Boolean
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
10 11 12 13 14 15 | # File 'utils/path.rb', line 10 def self.child_of?(parent, child) parent_pathname = Pathname(parent). child_pathname = Pathname(child). child_pathname.ascend { |p| return true if p == parent_pathname } false end |
.formula_any_version_installed?(formula_names) ⇒ Boolean
Есть ли у какой-либо установленной кеги для одного или нескольких имён формул квитанция об установке.
112 113 114 | # File 'utils/path.rb', line 112 def self.formula_any_version_installed?(formula_names) formula_installed_prefixes(formula_names).any? { |keg| (keg/"INSTALL_RECEIPT.json").file? } end |
.formula_installed_prefixes(formula_names) ⇒ Array<Pathname>
Каталоги префиксов, установленные для одного или нескольких имён формул.
101 102 103 104 105 106 | # File 'utils/path.rb', line 101 def self.formula_installed_prefixes(formula_names) Array(formula_names).map { |formula_name| HOMEBREW_CELLAR/Utils.name_from_full_name(formula_name) } .select(&:directory?) .flat_map(&:subdirs) .sort_by(&:basename) end |
.formula_opt_bin(formula_name) ⇒ Pathname
Каталог bin в стабильном пути установки для заданного имени формулы.
37 38 39 | # File 'utils/path.rb', line 37 def self.formula_opt_bin(formula_name) formula_opt_prefix(formula_name)/"bin" end |
.formula_opt_bin_env(formula_name, *paths) ⇒ Hash{String => String}
Хеш окружения, в котором перед PATH добавлен стабильный каталог bin формулы.
136 137 138 | # File 'utils/path.rb', line 136 def self.formula_opt_bin_env(formula_name, *paths) { "PATH" => formula_opt_bin_path(formula_name, *paths).to_s } end |
.formula_opt_bin_path(formula_name, *paths) ⇒ PATH
Текущий PATH с добавленным в начало стабильным каталогом bin формулы.
128 129 130 | # File 'utils/path.rb', line 128 def self.formula_opt_bin_path(formula_name, *paths) PATH.new(formula_opt_bin(formula_name), *paths, ENV.fetch("PATH")) end |
.formula_opt_include(formula_name) ⇒ Pathname
Каталог include в стабильном пути установки для заданного имени формулы.
85 86 87 | # File 'utils/path.rb', line 85 def self.formula_opt_include(formula_name) formula_opt_prefix(formula_name)/"include" end |
.formula_opt_lib(formula_name) ⇒ Pathname
Каталог lib в стабильном пути установки для заданного имени формулы.
53 54 55 | # File 'utils/path.rb', line 53 def self.formula_opt_lib(formula_name) formula_opt_prefix(formula_name)/"lib" end |
.formula_opt_libexec(formula_name) ⇒ Pathname
Каталог libexec в стабильном пути установки для заданного имени формулы.
69 70 71 | # File 'utils/path.rb', line 69 def self.formula_opt_libexec(formula_name) formula_opt_prefix(formula_name)/"libexec" end |
.formula_opt_prefix(formula_name) ⇒ Pathname
Стабильный путь установки для заданного имени формулы.
21 22 23 | # File 'utils/path.rb', line 21 def self.formula_opt_prefix(formula_name) HOMEBREW_PREFIX/"opt/#{Utils.name_from_full_name(formula_name)}" end |
.loadable_package_path?(path, package_type) ⇒ Boolean
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | # File 'utils/path.rb', line 141 def self.loadable_package_path?(path, package_type) return true unless Homebrew::EnvConfig.forbid_packages_from_paths? path_realpath = path.realpath.to_s path_string = path.to_s allowed_paths = [trusted_package_root("#{HOMEBREW_LIBRARY}/Taps/")] allowed_paths << if package_type == :formula trusted_package_root(HOMEBREW_CELLAR) else trusted_package_root(Cask::Caskroom.path) end # Casks can also be loaded from local JSON files, not just Ruby. package_extnames = (package_type == :cask) ? %w[.rb.json] : %w[.rb] return true if package_extnames.none? { |ext| path_realpath.end_with?(ext) || path_string.end_with?(ext) } # Compare path ancestry, not string prefixes, so `..` can't escape a trusted root. return true if allowed_paths.any? { |root| child_of?(root, path_realpath) } return true if allowed_paths.any? { |root| child_of?(root, path) } # Looks like a local path, Ruby file and not a tap. if path_string.include?("./") || path_string.end_with?(".rb") || path_string.count("/") != 2 package_type_plural = Utils.pluralize(package_type.to_s, 2) path_realpath_if_different = " (#{path_realpath})" if path_realpath != path_string create_flag = " --cask" if package_type == :cask raise <<~WARNING Homebrew requires #{package_type_plural} to be in a tap, rejecting: #{path_string}#{path_realpath_if_different} To create a tap, run e.g. brew tap-new <user|org>/<repository> To create a #{package_type} in a tap run e.g. brew create#{create_flag} <url> --tap=<user|org>/<repository> WARNING else # Looks like a tap, let's quietly reject but not error. path_string.count("/") != 2 end end |
Подробное описание методов экземпляра
#formula_any_version_installed?(formula_names) ⇒ Boolean
Есть ли у какой-либо установленной кеги для одного или нескольких имён формул квитанция об установке.
120 121 122 | # File 'utils/path.rb', line 120 def formula_any_version_installed?(formula_names) Utils::Path.formula_any_version_installed?(formula_names) end |
#formula_opt_bin(formula_name) ⇒ Pathname
Каталог bin в стабильном пути установки для заданного имени формулы.
45 46 47 | # File 'utils/path.rb', line 45 def formula_opt_bin(formula_name) Utils::Path.formula_opt_bin(formula_name) end |
#formula_opt_include(formula_name) ⇒ Pathname
Каталог include в стабильном пути установки для заданного имени формулы.
93 94 95 | # File 'utils/path.rb', line 93 def formula_opt_include(formula_name) Utils::Path.formula_opt_include(formula_name) end |
#formula_opt_lib(formula_name) ⇒ Pathname
Каталог lib в стабильном пути установки для заданного имени формулы.
61 62 63 | # File 'utils/path.rb', line 61 def formula_opt_lib(formula_name) Utils::Path.formula_opt_lib(formula_name) end |
#formula_opt_libexec(formula_name) ⇒ Pathname
Каталог libexec в стабильном пути установки для заданного имени формулы.
77 78 79 | # File 'utils/path.rb', line 77 def formula_opt_libexec(formula_name) Utils::Path.formula_opt_libexec(formula_name) end |
#formula_opt_prefix(formula_name) ⇒ Pathname
Стабильный путь установки для заданного имени формулы.
29 30 31 | # File 'utils/path.rb', line 29 def formula_opt_prefix(formula_name) Utils::Path.formula_opt_prefix(formula_name) end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Utils/Path.html