Модуль: UnpackStrategy::Dmg::Bom Закрытый
- Расширен модулем:
- SystemCommand::Mixin, Utils::Output::Mixin
- Определён в:
- unpack_strategy/dmg.rb
Обзор
Этот модуль является частью закрытого API. Этот модуль можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого модуля, поскольку он может быть удалён или изменён без предупреждения.
Вспомогательный модуль для перечисления содержимого тома, смонтированного из образа диска.
Определено в пространстве имён
Классы: EmptyError, Error
Краткое описание методов класса свернуть
- .bom(pathname) ⇒ String закрытый
- .dmg_metadata?(pathname) ⇒ Boolean закрытый
Проверяет, считается ли путь метаданными образа диска.
- .system_dir_symlink?(pathname) ⇒ Boolean закрытый
Проверяет, является ли путь символической ссылкой на системный каталог (обычно на /Applications).
Методы, включённые из 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
Методы, включённые из SystemCommand::Mixin
system_command, system_command!
Подробное описание методов класса
.bom(pathname) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | # File 'unpack_strategy/dmg.rb', line 58 def self.bom(pathname) tries = 0 result = loop do # We need to use `find` here instead of Ruby in order to properly handle # file names containing special characters, such as “e” + “´” vs. “é”. r = system_command("find", args: [".", "-print0"], chdir: pathname, print_stderr: false, reset_uid: true) tries += 1 # Spurious bug on CI, which in most cases can be worked around by retrying. break r unless r.stderr.match?(/Interrupted system call/i) raise "Command `#{r.command.shelljoin}` was interrupted." if tries >= 3 end odebug "Command `#{result.command.shelljoin}` in '#{pathname}' took #{tries} tries." if tries > 1 bom_paths = result.stdout.split("\0") raise EmptyError, pathname if bom_paths.empty? bom_paths .reject { |path| (Pathname(path)) } .reject { |path| system_dir_symlink?(pathname/path) } .join("\n") end |
.dmg_metadata?(pathname) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Проверяет, считается ли путь метаданными образа диска.
47 48 49 | # File 'unpack_strategy/dmg.rb', line 47 def self.(pathname) DMG_METADATA.include?(pathname.cleanpath.ascend.to_a.last.to_s) end |
.system_dir_symlink?(pathname) ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Проверяет, является ли путь символической ссылкой на системный каталог (обычно на /Applications).
53 54 55 | # File 'unpack_strategy/dmg.rb', line 53 def self.system_dir_symlink?(pathname) pathname.symlink? && MacOS.system_dir?(pathname.dirname.join(pathname.readlink)) end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/UnpackStrategy/Dmg/Bom.html