Spec-Zone.ru › Homebrew

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

Определён в:
patch.rb

Обзор

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

Вспомогательный модуль для создания патчей.

Краткое описание констант свернуть

CVE_PATTERN =

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

/CVE-?(\d{4})-(\d{4,})/i
GHSA_PATTERN =

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

/\AGHSA(-[23456789cfghjmpqrvwx]{4}){3}\z/
TYPES =

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

Значения CycloneDX pedigree.patches.type, применимые к патчам исходного кода. monkey не учитывается: этот тип описывает модификацию во время выполнения, которую patch do не может выразить. Синхронизируйте с PATCH_TYPES в Library/Homebrew/rubocops/patches.rb.

T.let({
  unofficial:  "A patch that has not been developed by the upstream maintainers " \
               "(e.g. a Homebrew- or distribution-specific build fix).",
  backport:    "A patch that takes code from a newer version of the software and " \
               "applies it to the older version Homebrew ships (e.g. an unreleased " \
               "upstream security fix).",
  cherry_pick: "A patch created by selectively applying upstream commits that are " \
               "not strictly from a newer release (e.g. a fix from a maintenance branch).",
}.freeze, T::Hash[Symbol, String])

Краткое описание методов класса свернуть

  • .create(strip, src, &block) ⇒ EmbeddedPatch, ExternalPatch приватный
  • .extract_cves(*strings) ⇒ Array<String> приватный
  • .resolves_type(id) ⇒ String приватный

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

.create(strip, src, &block) ⇒ EmbeddedPatch, ExternalPatch

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

Параметры:

  • strip (Symbol, String)
  • src (Symbol, String, nil)
  • block (T.proc.bind(Resource::Patch).void, nil)

Возвращает:

  • (EmbeddedPatch, ExternalPatch)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'patch.rb', line 48

def self.create(strip, src, &block)
  case strip
  when :DATA
    DATAPatch.new(:p1)
  when String
    StringPatch.new(:p1, strip)
  when Symbol
    case src
    when :DATA
      DATAPatch.new(strip)
    when String
      StringPatch.new(strip, src)
    else
      external_patch = ExternalPatch.new(strip, &block)
      resource = external_patch.resource
      if (file = resource.file)
        raise ArgumentError, "Patch cannot have both `file` and `url`." if resource.url.present?
        raise ArgumentError, "Patch cannot use `sha256` with `file`." if resource.checksum
        raise ArgumentError, "Patch cannot use `apply` with `file`." if resource.patch_files.present?

        LocalPatch.new(strip, file, resource.directory, resolves: resource.resolves, type: resource.type)
      else
        external_patch
      end
    end
  end
end

.extract_cves(*strings) ⇒ Array<String>

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

Параметры:

  • strings (String)

Возвращает:

  • (Array<String>)


28
29
30
31
32
# File 'patch.rb', line 28

def self.extract_cves(*strings)
  strings.flat_map { |s| s.scan(CVE_PATTERN) }
         .map { |year, id| "CVE-#{year}-#{id}" }
         .uniq
end

.resolves_type(id) ⇒ String

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

Параметры:

  • id (String)

Возвращает:

  • (String)


35
36
37
38
39
# File 'patch.rb', line 35

def self.resolves_type(id)
  return "security" if id.match?(/\ACVE-\d{4}-\d{4,}\z/) || id.match?(GHSA_PATTERN)

  "defect"
end

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

Spec-Zone.ru

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