Класс: GitHubPackages Закрытый
- Наследует:
- Object
- Object
- GitHubPackages
- Подключает:
- Context, SystemCommand::Mixin, Utils::Output::Mixin
- Определён в:
- github_packages.rb
Обзор
Этот класс является частью закрытого API. Этот класс можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
Клиент GitHub Packages.
Краткое описание констант свернуть
- URL_DOMAIN =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
"ghcr.io"- URL_REGEX =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
%r{(?:#{Regexp.escape(URL_PREFIX)}|#{Regexp.escape(DOCKER_PREFIX)})([\w-]+)/([\w-]+)}- VALID_OCI_TAG_REGEX =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
Допустимые символы тегов OCI https://github.com/opencontainers/distribution-spec/blob/main/spec.md#workflow-categories
/^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127}$/- TAB_ARCH_TO_PLATFORM_ARCHITECTURE =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
Преобразование Homebrew tab.arch в OCI platform.architecture
T.let( { "arm64" => "arm64", "x86_64" => "amd64", }.freeze, T::Hash[String, String], )
- BUILT_ON_OS_TO_PLATFORM_OS =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
Преобразование Homebrew built_on.os в OCI platform.os
T.let( { "Linux" => "linux", "Macintosh" => "darwin", }.freeze, T::Hash[String, String], )
Краткое описание методов класса свернуть
- .image_formula_name(formula_name) ⇒ String закрытый
- .image_version_rebuild(version_rebuild) ⇒ String закрытый
- .repo_without_prefix(repo) ⇒ String закрытый
- .root_url(org, repo, prefix = URL_PREFIX) ⇒ String закрытый
- .root_url_if_match(url) ⇒ String? закрытый
- .version_rebuild(version, rebuild, bottle_tag = nil) ⇒ String закрытый
Краткое описание методов экземпляра свернуть
Методы, подключённые из 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
Методы, включённые из SystemCommand::Mixin
#system_command, #system_command!
Методы, включённые из Context
current, current=, #debug?, #quiet?, #verbose?, #with_context
Подробное описание методов класса
.image_formula_name(formula_name) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
127 128 129 130 131 132 133 | # File 'github_packages.rb', line 127 def self.image_formula_name(formula_name) # Invalid docker name characters: # - `/` makes sense because we already use it to separate repository/formula. # - `x` makes sense because we already use it in `Formulary`. formula_name.tr("@", "/") .tr("+", "x") end |
.image_version_rebuild(version_rebuild) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
136 137 138 139 140 141 142 | # File 'github_packages.rb', line 136 def self.image_version_rebuild(version_rebuild) unless version_rebuild.match?(VALID_OCI_TAG_REGEX) raise ArgumentError, "GitHub Packages versions must match #{VALID_OCI_TAG_REGEX.source}!" end version_rebuild end |
.repo_without_prefix(repo) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
103 104 105 106 | # File 'github_packages.rb', line 103 def self.repo_without_prefix(repo) # Remove redundant repository prefix for a shorter name. repo.delete_prefix("homebrew-") end |
.root_url(org, repo, prefix = URL_PREFIX) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
109 110 111 112 113 114 | # File 'github_packages.rb', line 109 def self.root_url(org, repo, prefix = URL_PREFIX) # `docker`/`skopeo` insist on lowercase organisation (“repository name”). org = org.downcase "#{prefix}#{org}/#{repo_without_prefix(repo)}" end |
.root_url_if_match(url) ⇒ String?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
117 118 119 120 121 122 123 124 | # File 'github_packages.rb', line 117 def self.root_url_if_match(url) return if url.blank? _, org, repo, = *url.to_s.match(URL_REGEX) return if org.blank? || repo.blank? root_url(org, repo) end |
.version_rebuild(version, rebuild, bottle_tag = nil) ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
88 89 90 91 92 93 94 95 96 97 98 99 100 | # File 'github_packages.rb', line 88 def self.version_rebuild(version, rebuild, bottle_tag = nil) bottle_tag = (".#{bottle_tag}" if bottle_tag.present?) rebuild = if rebuild.positive? if bottle_tag ".#{rebuild}" else "-#{rebuild}" end end "#{version}#{bottle_tag}#{rebuild}" end |
Подробное описание методов экземпляра
#upload_bottles(bottles_hash, keep_old:, dry_run:, warn_on_error:) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод не возвращает значения.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | # File 'github_packages.rb', line 57 def upload_bottles(bottles_hash, keep_old:, dry_run:, warn_on_error:) user = Homebrew::EnvConfig.github_packages_user token = Homebrew::EnvConfig.github_packages_token raise UsageError, "HOMEBREW_GITHUB_PACKAGES_USER is unset." if user.blank? raise UsageError, "HOMEBREW_GITHUB_PACKAGES_TOKEN is unset." if token.blank? skopeo = ensure_executable!("skopeo", reason: "upload") require "json_schemer" load_schemas! bottles_hash.each do |formula_full_name, bottle_hash| # First, check that we won't encounter an error in the middle of uploading bottles. preupload_check(user, token, skopeo, formula_full_name, bottle_hash, keep_old:, dry_run:, warn_on_error:) end # We intentionally iterate over `bottles_hash` twice to # avoid erroring out in the middle of uploading bottles. # rubocop:disable Style/CombinableLoops bottles_hash.each do |formula_full_name, bottle_hash| # Next, upload the bottles after checking them all. upload_bottle(user, token, skopeo, formula_full_name, bottle_hash, keep_old:, dry_run:, warn_on_error:) end # rubocop:enable Style/CombinableLoops end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/GitHubPackages.html