Класс: 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
Краткое описание методов класса свернуть
Краткое описание методов экземпляра свернуть
- #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
Методы, включённые из Cachable
Методы, включённые из 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. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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( = [], comparator: ">=") @version = T.let(begin if comparator == "==" && .first.respond_to?(:map) .first.map { |s| MacOSVersion.from_symbol(s) } else MacOSVersion.from_symbol(.first) unless .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 .first.respond_to?(:reject) = [.first.reject { |s| s == e.version }, [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(.drop(1)) end |
Подробное описание атрибутов экземпляра
#comparator ⇒ String (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
19 20 21 | # File 'requirements/macos_requirement.rb', line 19 def comparator @comparator end |
#version ⇒ MacOSVersion, ... (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
22 23 24 | # File 'requirements/macos_requirement.rb', line 22 def version @version end |
Подробное описание методов класса
.parse(args, comparator:) ⇒ MacOSRequirement
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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 (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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
212 213 214 | # File 'requirements/macos_requirement.rb', line 212 def to_json() to_h.to_json() end |
#version_specified? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
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