Spec-Zone.ru › Homebrew

Модуль: Repology Закрытый

Расширяет:
Utils::Output::Mixin
Определён в:
utils/repology.rb

Обзор

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

Клиент API Repology.

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

HOMEBREW_CORE =

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

"homebrew"
HOMEBREW_CASK =

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

"homebrew_casks"

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

  • .latest_version(repositories) ⇒ String, Version закрытый
  • .query_api(last_package_in_response = "", repository:) ⇒ Hash{String => T.untyped} закрытый
  • .single_package_query(name, repository:) ⇒ Hash{String => T.untyped}? закрытый

Методы, включённые из 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

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

.latest_version(repositories) ⇒ String, Version

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

Параметры:

  • repositories (Array<String>)

Возвращает:

  • (String, Version)


58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'utils/repology.rb', line 58

def self.latest_version(repositories)
  # The status is "unique" when the package is present only in Homebrew, so
  # Repology has no way of knowing if the package is up-to-date.
  is_unique = repositories.find do |repo|
    repo["status"] == "unique"
  end.present?

  return "present only in Homebrew" if is_unique

  latest_version = repositories.find do |repo|
    repo["status"] == "newest"
  end

  # Repology cannot identify "newest" versions for packages without a version
  # scheme
  return "no latest version" if latest_version.blank?

  Version.new(T.must(latest_version["version"]))
end

.query_api(last_package_in_response = "", repository:) ⇒ Hash{String => T.untyped}

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

Параметры:

  • last_package_in_response (String, nil) (по умолчанию: "")
  • repository (String)

Возвращает:

  • (Hash{String => T.untyped})


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'utils/repology.rb', line 15

def self.query_api(last_package_in_response = "", repository:)
  last_package_in_response += "/" if last_package_in_response.present?
  url = "https://repology.org/api/v1/projects/#{last_package_in_response}?inrepo=#{repository}&outdated=1"

  result = Utils::Curl.curl_output(
    "--silent", url.to_s,
    use_homebrew_curl: !Utils::Curl.curl_supports_tls13?
  )
  JSON.parse(result.stdout)
rescue
  if Homebrew::EnvConfig.developer?
    $stderr.puts result&.stderr
  else
    odebug result&.stderr.to_s
  end

  raise
end

.single_package_query(name, repository:) ⇒ Hash{String => T.untyped}?

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

Параметры:

  • name (String)
  • repository (String)

Возвращает:

  • (Hash{String => T.untyped}, nil)


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'utils/repology.rb', line 35

def self.single_package_query(name, repository:)
  url = "https://repology.org/api/v1/project/#{name}"

  result = Utils::Curl.curl_output(
    "--location", "--silent", url.to_s,
    use_homebrew_curl: !Utils::Curl.curl_supports_tls13?
  )

  data = JSON.parse(result.stdout)
  { name => data }
rescue => e
  require "utils/backtrace"
  error_output = [result&.stderr, "#{e.class}: #{e}", Utils::Backtrace.clean(e)].compact
  if Homebrew::EnvConfig.developer?
    $stderr.puts(*error_output)
  else
    odebug(*error_output)
  end

  nil
end

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

Spec-Zone.ru

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