Spec-Zone.ru › Homebrew

Класс: MacOSRequirement Приватный

Наследует:
Requirement
  • Object
  • Requirement
  • MacOSRequirement
показать все
Расширен модулем:
Utils::Output::Mixin
Определён в:
requirements/macos_requirement.rb

Обзор

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

Требование к macOS.

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

Cache =

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

type_template { { fixed: T::Hash[String, T.untyped] } }
DISABLED_MACOS_VERSIONS =

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

Оставьте эти значения пустыми массивами, чтобы код устаревания и отключения остался прежним. Рассматривайте их так же, как odeprecated/odisabled, с точки зрения устаревания и отключения.

T.let([
  :mojave,
  :high_sierra,
  :sierra,
  :el_capitan,
].freeze, T::Array[Symbol])
DEPRECATED_MACOS_VERSIONS =

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

T.let([].freeze, T::Array[Symbol])

Константы, включённые из Dependable

Dependable::KEEP_BUT_PRUNE_RECURSIVE_DEPS, Dependable::PRUNE, Dependable::RESERVED_TAGS, Dependable::SKIP

Краткое описание атрибутов экземпляра свернуть

  • #comparator ⇒ String только для чтения приватный
  • #version ⇒ MacOSVersion, ... только для чтения приватный

Атрибуты, унаследованные от Requirement

#cask, #download, #name, #tags

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

  • .parse(args, comparator:) ⇒ MacOSRequirement приватный

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

  • #allows?(other) ⇒ Boolean приватный
  • #display_s ⇒ String приватный
  • #initialize(tags = [], comparator: ">=") ⇒ void конструктор приватный
  • #maximum_version ⇒ MacOSVersion? приватный
  • #message(type: :formula) ⇒ String приватный
  • #minimum_version ⇒ MacOSVersion? приватный
  • #to_h ⇒ Hash{String => Array<String>} приватный
  • #to_json(options) ⇒ String приватный
  • #version_specified? ⇒ Boolean приватный

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

Методы, унаследованные от Requirement

cask, download, #env, env, #env_proc, expand, fatal, #fatal?, inherited, #mktemp, #modify_build_environment, #option_names, prune?, #satisfied?, #satisfied_result_parent, satisfy, #tap, #which

Методы, включённые из BuildEnvironment::DSL

#env, #inherited

Методы, включённые из Cachable

#cache, #clear_cache

Методы, включённые из Dependable

#build?, #implicit?, #no_linkage?, #option_names, #option_tags, #optional?, #options, #prune_from_option?, #prune_if_build_and_not_dependent?, #recommended?, #required?, #tags, #test?

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

#initialize(tags = [], comparator: ">=") ⇒ void

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

Параметры:

  • tags (T.untyped) (по умолчанию: [])
  • comparator (String) (по умолчанию: ">=")


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'requirements/macos_requirement.rb', line 63

def initialize(tags = [], comparator: ">=")
  @version = T.let(begin
    if comparator == "==" && tags.first.respond_to?(:map)
      tags.first.map { |s| MacOSVersion.from_symbol(s) }
    else
      MacOSVersion.from_symbol(tags.first) unless tags.empty?
    end
  rescue MacOSVersion::Error => e
    if DISABLED_MACOS_VERSIONS.include?(e.version)
      # This odisabled should stick around indefinitely.
      odisabled "`depends_on macos: :#{e.version}`"
    elsif DEPRECATED_MACOS_VERSIONS.include?(e.version)
      # This odeprecated should stick around indefinitely.
      odeprecated "`depends_on macos: :#{e.version}`"
    else
      raise
    end

    # Array of versions: remove the bad ones and try again.
    if tags.first.respond_to?(:reject)
      tags = [tags.first.reject { |s| s == e.version }, tags[1..]]
      retry
    end

    # Otherwise fallback to the oldest allowed if comparator is >=.
    MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED) if comparator == ">="
  end, T.nilable(T.any(MacOSVersion, T::Array[MacOSVersion])))

  @comparator = T.let(comparator, String)
  super(tags.drop(1))
end

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

#comparator ⇒ String (только для чтения)

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

Возвращает:

  • (String)


19
20
21
# File 'requirements/macos_requirement.rb', line 19

def comparator
  @comparator
end

#version ⇒ MacOSVersion, ... (только для чтения)

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

Возвращает:

  • (MacOSVersion, Array<MacOSVersion>, nil)


22
23
24
# File 'requirements/macos_requirement.rb', line 22

def version
  @version
end

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

.parse(args, comparator:) ⇒ MacOSRequirement

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

Параметры:

  • args (Array<String, Symbol>)
  • comparator (String)

Возвращает:

  • (MacOSRequirement)


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'requirements/macos_requirement.rb', line 35

def self.parse(args, comparator:)
  first_arg = args.first
  first_arg_s = first_arg&.to_s

  if first_arg == :any
    new
  elsif args.count > 1
    new([args], comparator: "==")
  elsif first_arg.is_a?(Symbol) && MacOSVersion::SYMBOLS.key?(first_arg)
    new([first_arg], comparator:)
  elsif (md = /^\s*(?<comparator><|>|[=<>]=)\s*:(?<version>\S+)\s*$/.match(first_arg_s))
    replacement = if md[:comparator] == "<="
      "`depends_on maximum_macos: :#{md[:version]}`"
    elsif md[:comparator] == ">="
      "`depends_on macos: :#{md[:version]}`"
    end
    odeprecated "string comparison format for `depends_on macos:`", replacement
    new([T.must(md[:version]).to_sym], comparator: T.must(md[:comparator]))
  elsif (md = /^\s*(?<comparator><|>|[=<>]=)\s*(?<version>\S+)\s*$/.match(first_arg_s))
    odeprecated "string comparison format for `depends_on macos:`"
    new([md[:version]], comparator: T.must(md[:comparator]))
  else
    odeprecated "strict symbol format for `depends_on macos:`"
    new([first_arg], comparator: "==")
  end
end

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

#allows?(other) ⇒ Boolean

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

Параметры:

  • other (MacOSVersion)

Возвращает:

  • (Boolean)


126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'requirements/macos_requirement.rb', line 126

def allows?(other)
  return true unless version_specified?

  version = @version
  case @comparator
  when ">=" then other >= T.cast(version, MacOSVersion)
  when "<=" then other <= T.cast(version, MacOSVersion)
  else
    return T.unsafe(version).include?(other) if version.respond_to?(:to_ary) || version.is_a?(Array)

    version == other
  end
end

#display_s ⇒ String

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

Возвращает:

  • (String)


189
190
191
192
193
194
195
196
197
198
199
# File 'requirements/macos_requirement.rb', line 189

def display_s
  if version_specified?
    if @version.respond_to?(:to_ary) || @version.is_a?(Array)
      "macOS #{@comparator}#{T.unsafe(@version).join(" / ")} (or Linux)"
    else
      "macOS #{@comparator}#{@version} (or Linux)"
    end
  else
    "macOS"
  end
end

#maximum_version ⇒ MacOSVersion?

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

Возвращает:

  • (MacOSVersion, nil)


118
119
120
121
122
123
# File 'requirements/macos_requirement.rb', line 118

def maximum_version
  return MacOSVersion.new(HOMEBREW_MACOS_NEWEST_UNSUPPORTED) if @comparator == ">=" || !version_specified?
  return T.unsafe(@version).max if @version.respond_to?(:to_ary) || @version.is_a?(Array)

  @version
end

#message(type: :formula) ⇒ String

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

Параметры:

  • type (Symbol) (по умолчанию: :formula)

Возвращает:

  • (String)


141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'requirements/macos_requirement.rb', line 141

def message(type: :formula)
  subject = (type == :cask) ? "This cask" : "This formula"

  return "#{subject} requires macOS." unless version_specified?

  version = @version
  case @comparator
  when ">="
    "#{subject} does not run on macOS versions older than #{T.cast(version, MacOSVersion).pretty_name}."
  when "<="
    case type
    when :formula
      <<~EOS
#{subject} either does not compile or function as expected on macOS
        versions newer than #{T.cast(version, MacOSVersion).pretty_name} due to an upstream incompatibility.
      EOS
    when :cask
      "#{subject} does not run on macOS versions newer than #{T.cast(version, MacOSVersion).pretty_name}."
    else
      ""
    end
  else
    if version.respond_to?(:to_ary) || version.is_a?(Array)
      *versions, last = T.unsafe(version).map(&:pretty_name)
      return "#{subject} does not run on macOS versions other than #{versions.join(", ")} and #{last}."
    end

    "#{subject} does not run on macOS versions other than #{T.cast(version, MacOSVersion).pretty_name}."
  end
end

#minimum_version ⇒ MacOSVersion?

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

Возвращает:

  • (MacOSVersion, nil)


110
111
112
113
114
115
# File 'requirements/macos_requirement.rb', line 110

def minimum_version
  return MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED) if @comparator == "<=" || !version_specified?
  return T.unsafe(@version).min if @version.respond_to?(:to_ary) || @version.is_a?(Array)

  @version
end

#to_h ⇒ Hash{String => Array<String>}

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

Возвращает:

  • (Hash{String => Array<String>})


202
203
204
205
206
207
208
209
# File 'requirements/macos_requirement.rb', line 202

def to_h
  return {} unless version_specified?

  comp = @comparator.to_s
  return { comp => @version.map(&:to_s) } if @version.is_a?(Array)

  { comp => [@version.to_s] }
end

#to_json(options) ⇒ String

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

Параметры:

  • options (T.untyped)

Возвращает:

  • (String)


212
213
214
# File 'requirements/macos_requirement.rb', line 212

def to_json(options)
  to_h.to_json(options)
end

#version_specified? ⇒ Boolean

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

Возвращает:

  • (Boolean)


96
97
98
# File 'requirements/macos_requirement.rb', line 96

def version_specified?
  @version.present?
end

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

Spec-Zone.ru

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