Класс: FormulaVersions
- Наследует:
- Object
- Object
- FormulaVersions
- Подключает:
- Context, Utils::Output::Mixin
- Определён в:
- formula_versions.rb
Обзор
Этот класс является частью внутреннего API. Этот класс можно использовать только во внутренних целях в репозиториях, принадлежащих Homebrew, за исключением casks и formulae. Третьим сторонам следует по возможности избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
Вспомогательный класс для просмотра предыдущих версий формулы.
Краткое описание констант свернуть
- IGNORED_EXCEPTIONS =
Эта константа является частью внутреннего API. Эту константу можно использовать только во внутренних целях в репозиториях, принадлежащих Homebrew, за исключением casks и formulae. Третьим сторонам следует по возможности избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
[ ArgumentError, NameError, SyntaxError, TypeError, LegacyDSLError, FormulaSpecificationError, FormulaValidationError, ErrorDuringExecution, LoadError, MethodDeprecatedError ].freeze
Краткое описание методов экземпляра свернуть
- #formula_at_revision(revision, formula_relative_path = relative_path, &_block) ⇒ T.type_parameter(:U)? приватный
- #initialize(formula) ⇒ void конструктор приватный
- #rev_list(branch, &_block) ⇒ void приватный
Методы, подключённые из 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
Методы, подключённые из Context
current, current=, #debug?, #quiet?, #verbose?, #with_context
Подробное описание конструкторов
#initialize(formula) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
21 22 23 24 25 26 27 28 29 30 31 | # File 'formula_versions.rb', line 21 def initialize(formula) @name = T.let(formula.name, String) @path = T.let(formula.tap_path, Pathname) @repository = T.let(formula.tap!.path, Pathname) @relative_path = T.let(@path.relative_path_from(repository).to_s, String) # Also look at e.g. older homebrew-core paths before sharding. if (match = @relative_path.match(%r{^(HomebrewFormula|Formula)/([a-z]|lib)/(.+)})) @old_relative_path = T.let("#{match[1]}/#{match[3]}", T.nilable(String)) end @formula_at_revision = T.let({}, T::Hash[String, Formula]) end |
Подробное описание методов экземпляра
#formula_at_revision(revision, formula_relative_path = relative_path, &_block) ⇒ T.type_parameter(:U)?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | # File 'formula_versions.rb', line 53 def formula_at_revision(revision, formula_relative_path = relative_path, &_block) Homebrew.raise_deprecation_exceptions = true yield @formula_at_revision[revision] ||= begin contents = file_contents_at_revision(revision, formula_relative_path) nostdout { Formulary.from_contents(name, path, contents, ignore_errors: true) } end rescue *IGNORED_EXCEPTIONS => e require "utils/backtrace" # We rescue these so that we can skip bad versions and # continue walking the history odebug "#{e} in #{name} at revision #{revision}", Utils::Backtrace.clean(e) nil rescue FormulaUnavailableError nil ensure Homebrew.raise_deprecation_exceptions = false end |
#rev_list(branch, &_block) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
34 35 36 37 38 39 40 41 42 43 | # File 'formula_versions.rb', line 34 def rev_list(branch, &_block) repository.cd do rev_list_cmd = ["git", "rev-list", "--abbrev-commit", "--remove-empty"] [relative_path, old_relative_path].compact.each do |entry| Utils.popen_read(*rev_list_cmd, branch, "--", entry) do |io| yield io.readline.chomp, entry until io.eof? end end end end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/FormulaVersions.html