Spec-Zone.ru › Homebrew

Модуль: RuboCop::Cop::ApiAnnotationHelper Приватный

Определён в:
rubocops/shared/api_annotation_helper.rb

Обзор

Этот модуль является частью закрытого API. Этот модуль можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот модуль, поскольку он может быть удалён или изменён без предупреждения.

Общие вспомогательные методы для чтения аннотаций @api public/internal/private из исходных файлов во время выполнения RuboCop. Результаты кэшируются на уровне класса, поэтому каждый файл анализируется не более одного раза за запуск RuboCop.

Сводка констант свернуть

OFFICIAL_TAPS =

Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.

Tap-репозитории, в которых действуют более строгие правила для публичного API.

T.let(%w[homebrew-corehomebrew-cask].freeze, T::Array[String])
API_SOURCE_FILES =

Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.

Исходные файлы, аннотации @api в которых определяют публичную часть API.

T.let(%w[formula.rbcask/cask.rbcask/dsl.rbutils/path.rb].freeze, T::Array[String])
FORMULA_COOKBOOK_METHODS =

Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.

Методы, описанные в docs/Formula-Cookbook.md и сопоставленные с исходными файлами, в которых они определены (относительно Library/Homebrew/). Проверяется с помощью Homebrew/PublicApiCookbook по ссылкам rubydoc в docs/Formula-Cookbook.md.

T.let({
  "cd"                    => "extend/pathname.rb",
  "change_make_var!"      => "utils/string_inreplace_extension.rb",
  "compatibility_version" => "formula.rb",
  "conflicts_with"        => "formula.rb",
  "depends_on"            => "formula.rb",
  "deprecated_option"     => "formula.rb",
  "desc"                  => "formula.rb",
  "env_script_all_files"  => "extend/pathname.rb",
  "fails_with"            => "formula.rb",
  "post_install_steps"    => "formula.rb",
  "head"                  => "formula.rb",
  "homepage"              => "formula.rb",
  "install_symlink"       => "extend/pathname.rb",
  "keg_only"              => "formula.rb",
  "libexec"               => "formula.rb",
  "license"               => "formula.rb",
  "option"                => "formula.rb",
  "patch"                 => "formula.rb",
  "resource"              => "formula.rb",
  "revision"              => "formula.rb",
  "sha256"                => "formula.rb",
  "stable"                => "formula.rb",
  "test"                  => "formula.rb",
  "testpath"              => "formula.rb",
  "url"                   => "formula.rb",
  "uses_from_macos"       => "formula.rb",
  "version"               => "formula.rb",
  "version_scheme"        => "formula.rb",
  "write_env_script"      => "extend/pathname.rb",
  "write_exec_script"     => "extend/pathname.rb",
  "write_jar_script"      => "extend/pathname.rb",
}.freeze, T::Hash[String, String])
CASK_COOKBOOK_METHODS =

Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.

Методы, описанные в docs/Cask-Cookbook.md и сопоставленные с исходными файлами, в которых они определены (относительно Library/Homebrew/). Проверяется с помощью Homebrew/PublicApiCookbook по аннотациям @api public в исходных файлах cask.

T.let({
  "after_comma"          => "cask/dsl/version.rb",
  "app"                  => "cask/dsl.rb",
  "appdir"               => "cask/dsl.rb",
  "arch"                 => "cask/dsl.rb",
  "artifact"             => "cask/dsl.rb",
  "auto_updates"         => "cask/dsl.rb",
  "before_comma"         => "cask/dsl/version.rb",
  "binary"               => "cask/dsl.rb",
  "caveats"              => "cask/dsl.rb",
  "chomp"                => "cask/dsl/version.rb",
  "conflicts_with"       => "cask/dsl.rb",
  "container"            => "cask/dsl.rb",
  "csv"                  => "cask/dsl/version.rb",
  "depends_on"           => "cask/dsl.rb",
  "deprecate!"           => "cask/dsl.rb",
  "desc"                 => "cask/dsl.rb",
  "disable!"             => "cask/dsl.rb",
  "dots_to_hyphens"      => "cask/dsl/version.rb",
  "font"                 => "cask/dsl.rb",
  "homepage"             => "cask/dsl.rb",
  "hyphens_to_dots"      => "cask/dsl/version.rb",
  "installer"            => "cask/dsl.rb",
  "language"             => "cask/dsl.rb",
  "livecheck"            => "cask/dsl.rb",
  "major"                => "cask/dsl/version.rb",
  "major_minor"          => "cask/dsl/version.rb",
  "major_minor_patch"    => "cask/dsl/version.rb",
  "manpage"              => "cask/dsl.rb",
  "minor"                => "cask/dsl/version.rb",
  "minor_patch"          => "cask/dsl/version.rb",
  "name"                 => "cask/dsl.rb",
  "no_autobump!"         => "cask/dsl.rb",
  "no_dividers"          => "cask/dsl/version.rb",
  "no_dots"              => "cask/dsl/version.rb",
  "no_hyphens"           => "cask/dsl/version.rb",
  "no_underscores"       => "cask/dsl/version.rb",
  "patch"                => "cask/dsl/version.rb",
  "pkg"                  => "cask/dsl.rb",
  "postflight"           => "cask/dsl.rb",
  "preflight"            => "cask/dsl.rb",
  "rename"               => "cask/dsl.rb",
  "service"              => "cask/dsl.rb",
  "sha256"               => "cask/dsl.rb",
  "stage_only"           => "cask/dsl.rb",
  "staged_path"          => "cask/dsl.rb",
  "suite"                => "cask/dsl.rb",
  "to_s"                 => "cask/cask.rb",
  "token"                => "cask/cask.rb",
  "uninstall"            => "cask/dsl.rb",
  "uninstall_postflight" => "cask/dsl.rb",
  "uninstall_preflight"  => "cask/dsl.rb",
  "url"                  => "cask/dsl.rb",
  "version"              => "cask/dsl.rb",
  "zap"                  => "cask/dsl.rb",
}.freeze, T::Hash[String, String])

Сводка методов класса свернуть

  • .homebrew_dir ⇒ String приватный

    Возвращает путь к корневому каталогу библиотеки Homebrew (родительскому для rubocops/).

  • .methods_with_api_level(source_path, level) ⇒ Set<String> приватный

    Возвращает набор имён методов, аннотированных заданным уровнем @api (например, "internal", "private", "public") в указанном исходном файле Ruby.

Подробное описание методов класса

.homebrew_dir ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает путь к корневому каталогу библиотеки Homebrew (родительскому для rubocops/).

Возвращает:

  • (String)


159
160
161
# File 'rubocops/shared/api_annotation_helper.rb', line 159

def self.homebrew_dir
  File.expand_path("../..", __dir__)
end

.methods_with_api_level(source_path, level) ⇒ Set<String>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.

Возвращает набор имён методов, аннотированных заданным уровнем @api (например, "internal", "private", "public") в указанном исходном файле Ruby.

Параметры:

  • source_path (String)
  • level (String)

Возвращает:

  • (Set<String>)


126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'rubocops/shared/api_annotation_helper.rb', line 126

def self.methods_with_api_level(source_path, level)
  @api_method_cache = T.let(@api_method_cache, T.nilable(T::Hash[String, T::Set[String]]))
  @api_method_cache ||= {}
  cache_key = "#{source_path}:#{level}"
  return @api_method_cache.fetch(cache_key) if @api_method_cache.key?(cache_key)

  methods = T.let(Set.new, T::Set[String])
  return methods unless File.exist?(source_path)

  lines = File.readlines(source_path)
  lines.each_with_index do |line, idx|
    next if line.strip != "# @api #{level}"

    # Scan forward up to 5 lines for a def, attr_reader, or delegate
    (1..5).each do |offset|
      target_line = lines[idx + offset]&.strip
      break if target_line.blank?

      m = target_line.match(/\A(?:def\s+(?:self\.)?|attr_reader\s+:|attr_accessor\s+:)(\w+[!?]?)/) ||
          target_line.match(/\Adelegate\s+(\w+[!?]?):/)
      if m
        methods.add(m[1].to_s)
        break
      end
    end
  end

  @api_method_cache[cache_key] = methods.freeze
  methods
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/RuboCop/Cop/ApiAnnotationHelper.html

Spec-Zone.ru

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