Модуль: Cask::Caskroom
- Расширен модулем:
- Utils::Output::Mixin
- Определён в:
- cask/caskroom.rb
Обзор
Этот модуль является частью внутреннего API. Этот модуль можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением cask и formula. Сторонним разработчикам следует по возможности избегать использования этого модуля, так как он может быть удалён или изменён без предупреждения.
Вспомогательные функции для работы с каталогом Caskroom.
Сводка констант свернуть
- CASKFILE_EXTENSIONS =
Эта константа является частью внутреннего API. Эту константу можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением cask и formula. Сторонним разработчикам следует по возможности избегать использования этой константы, так как она может быть удалена или изменена без предупреждения.
%w[internal.jsonjsonrb].freeze
Сводка методов класса свернуть
- .any_casks_installed? ⇒ Boolean приватный
- .cask_installed?(token) ⇒ Boolean приватный
- .cask_installed_caskfile(token, old_tokens: []) ⇒ Pathname? приватный
- .cask_installed_version(token, old_tokens: []) ⇒ String? приватный
- .caskroom_group_correct?(path) ⇒ Boolean приватный
- .casks(config: nil) ⇒ Array<Cask> внутренний
Получить все установленные cask.
- .chgrp_path(path, sudo) ⇒ void приватный
- .corrupt_cask_dirs ⇒ Array<String> приватный
Вернуть токены каталогов Caskroom, в которых отсутствуют ожидаемые метаданные об установке.
- .ensure_caskroom_exists ⇒ void приватный
- .expected_caskroom_group ⇒ String приватный
- .path ⇒ Pathname приватный
- .tokens ⇒ Array<String> приватный
Вернуть все токены установленных cask.
Методы, включённые из 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
Подробное описание методов класса
.any_casks_installed? ⇒ Boolean
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
37 38 39 | # File 'cask/caskroom.rb', line 37 def self.any_casks_installed? paths.any? end |
.cask_installed?(token) ⇒ Boolean
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
42 43 44 | # File 'cask/caskroom.rb', line 42 def self.cask_installed?(token) !cask_installed_version(token).nil? end |
.cask_installed_caskfile(token, old_tokens: []) ⇒ Pathname?
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # File 'cask/caskroom.rb', line 47 def self.cask_installed_caskfile(token, old_tokens: []) # Check if the cask is installed with an old name. [token, *old_tokens].map { |cask_token| token_from_full_token(cask_token) }.uniq.each do |cask_token| caskroom_path = path/cask_token next if !caskroom_path.directory? || caskroom_path.symlink? = Pathname.glob((caskroom_path/".metadata/*/*").to_s).max_by { |p| p.basename.to_s } next unless caskfile = CASKFILE_EXTENSIONS.map { |ext| /"Casks/#{cask_token}.#{ext}" } .find(&:exist?) return caskfile if caskfile end nil end |
.cask_installed_version(token, old_tokens: []) ⇒ String?
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
65 66 67 68 69 | # File 'cask/caskroom.rb', line 65 def self.cask_installed_version(token, old_tokens: []) return unless (caskfile = cask_installed_caskfile(token, old_tokens:)) caskfile.dirname.dirname.dirname.basename.to_s end |
.caskroom_group_correct?(path) ⇒ Boolean
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
114 115 116 117 118 119 | # File 'cask/caskroom.rb', line 114 def self.caskroom_group_correct?(path) group = Etc.getgrnam(expected_caskroom_group) return false if group.nil? path.stat.gid == group.gid end |
.casks(config: nil) ⇒ Array<Cask>
Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением cask и formula. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Получить все установленные cask.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | # File 'cask/caskroom.rb', line 130 def self.casks(config: nil) tokens.sort.filter_map do |token| # This is nested so that the rescue can catch errors from both branches begin CaskLoader.load_prefer_installed(token, config:, warn: false) rescue TapCaskAmbiguityError => e e.loaders.fetch(0).load(config:) end rescue Homebrew::UntrustedTapError # If the tap is untrusted the only place we can load the cask from is the installed cask file, if it exists. begin CaskLoader::FromInstalledPathLoader.try_new(token, warn: false)&.load(config:) rescue nil end rescue # Don't blow up because of a single unavailable cask. nil end.select(&:installed?) end |
.chgrp_path(path, sudo) ⇒ void
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
109 110 111 | # File 'cask/caskroom.rb', line 109 def self.chgrp_path(path, sudo) SystemCommand.run("chgrp", args: [expected_caskroom_group, path], sudo:) end |
.corrupt_cask_dirs ⇒ Array<String>
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Вернуть токены каталогов Caskroom, в которых отсутствуют ожидаемые метаданные об установке.
73 74 75 | # File 'cask/caskroom.rb', line 73 def self.corrupt_cask_dirs paths.filter_map { |p| p.basename.to_s unless (p) } end |
.ensure_caskroom_exists ⇒ void
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | # File 'cask/caskroom.rb', line 91 def self.ensure_caskroom_exists return if path.exist? sudo = !path.parent.writable? if sudo && !ENV.key?("SUDO_ASKPASS") && $stdout.tty? ohai "Creating Caskroom directory: #{path}", "We'll set permissions properly so we won't need sudo in the future." end SystemCommand.run("mkdir", args: ["-p", path], sudo:) SystemCommand.run("chmod", args: ["g+rwx", path], sudo:) SystemCommand.run("chown", args: [User.current.to_s, path], sudo:) chgrp_path(path, sudo) unless caskroom_group_correct?(path) end |
.expected_caskroom_group ⇒ String
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
122 123 124 | # File 'cask/caskroom.rb', line 122 def self.expected_caskroom_group "admin" end |
.path ⇒ Pathname
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
17 18 19 | # File 'cask/caskroom.rb', line 17 def self.path @path ||= T.let(HOMEBREW_PREFIX/"Caskroom", T.nilable(Pathname)) end |
.tokens ⇒ Array<String>
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Вернуть все токены установленных cask.
32 33 34 | # File 'cask/caskroom.rb', line 32 def self.tokens paths.map { |path| path.basename.to_s } end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Cask/Caskroom.html