Spec-Zone.ru › Homebrew

Класс: 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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • formula (Formula)


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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • revision (String)
  • formula_relative_path (String) (по умолчанию: relative_path)
  • _block (T.proc.params(arg0: Formula).returns(T.type_parameter(:U)))

Возвращает:

  • (T.type_parameter(:U), nil)


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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

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

Параметры:

  • branch (String)
  • _block (T.proc.params(revision: String, path: String).void)


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

Spec-Zone.ru

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