Spec-Zone.ru › Homebrew

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

Наследует:
Object
  • Object
  • Resource
показать все
Подключает:
Downloadable, FileUtils, OnSystem::MacOSAndLinux, Utils::Output::Mixin
Определён в:
resource.rb

Обзор

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

Resource — основное представление внешнего ресурса. Основная загрузка формулы, наряду с другими объявленными ресурсами, представлена экземплярами этого класса.

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

BottleManifest, Formula, Local, Patch

Определено в пространстве имён

Классы: BottleManifest, Formula, Local, Partial, Patch

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

Owner =

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

T.type_alias { T.any(Cask::Cask, ::Formula, Resource, SoftwareSpec, Homebrew::FormulaCreator) }

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

  • #checksum ⇒ Checksum? только для записи приватный
  • #download_strategy ⇒ T::Class[AbstractDownloadStrategy] приватный
  • #name ⇒ String? приватный

    Имя формулы необходимо задать после DSL, поскольку до инициализации формулы у нас нет доступа к её имени.

  • #owner ⇒ Owner? приватный
  • #patches ⇒ Array<EmbeddedPatch, ExternalPatch> только для чтения приватный
  • #source_modified_time ⇒ Time? только для чтения приватный

Атрибуты, включённые из Downloadable

#checksum, #mirrors, #phase

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

  • #apply_patches ⇒ void закрытый
  • #download_queue_type ⇒ String закрытый
  • #fetch(verify_download_integrity: true, timeout: nil, quiet: false, skip_patches: false) ⇒ Pathname закрытый
  • #fetch_patches(skip_downloaded: false) ⇒ void закрытый
  • #files(*files) ⇒ Partial закрытый
  • #freeze ⇒ T.self_type закрытый
  • #initialize(name = nil, &block) ⇒ void конструктор закрытый
  • #initialize_dup(other) ⇒ void закрытый
  • #livecheck(&block) ⇒ T.untyped закрытый

    Livecheck можно использовать для проверки наличия новых версий программного обеспечения.

  • #livecheck_defined? ⇒ Boolean закрытый

    Определена ли спецификация livecheck.

  • #mirror(val) ⇒ Array<String> закрытый
  • #patch(strip = :p1, src = nil, &block) ⇒ Array<EmbeddedPatch, ExternalPatch> закрытый
  • #prepare_patches ⇒ void закрытый
  • #sha256(val) ⇒ Checksum закрытый
  • #specs ⇒ Hash{Symbol => T.untyped} закрытый
  • #stage(target = nil, debug_symbols: false, &block) ⇒ void

    Проверяет целостность загруженного файла и распаковывает его.

  • #unpack(target = nil, debug_symbols: false, &block) ⇒ void закрытый

    Если указан целевой каталог, распаковывает туда; иначе распаковывает во временную папку.

  • #url(val = nil, **specs) ⇒ String? закрытый
  • #using ⇒ T::Class[AbstractDownloadStrategy], ... закрытый
  • #version(val = nil) ⇒ Version? закрытый

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

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

included, #on_arch_conditional, #on_macos, #on_system_conditional

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

#cached_download, #clear_cache, #download_queue_message, #download_queue_name, #downloaded!, #downloaded?, #downloaded_and_valid?, #downloader, #downloading!, #extracting!, #fetched_size, #total_size, #verified!, #verify_download_integrity, #verifying!

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

current, current=, #debug?, #quiet?, #verbose?, #with_context

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

#initialize(name = nil, &block) ⇒ void

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

Параметры:

  • name (String, nil) (по умолчанию: nil)
  • block (T.proc.bind(Resource).void, nil)


48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'resource.rb', line 48

def initialize(name = nil, &block)
  super()
  # Generally ensure this is synced with `initialize_dup` and `freeze`
  # (excluding simple objects like integers & booleans, weak refs like `owner` or permafrozen objects)
  @name = T.let(name, T.nilable(String))
  @source_modified_time = T.let(nil, T.nilable(Time))
  @patches = T.let([], T::Array[T.any(EmbeddedPatch, ExternalPatch)])
  @owner = T.let(nil, T.nilable(Owner))
  @livecheck = T.let(Livecheck.new(self), Livecheck)
  @livecheck_defined = T.let(false, T::Boolean)
  @insecure = T.let(false, T::Boolean)
  instance_eval(&block) if block
end

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

#checksum=(value) ⇒ Checksum? (только для записи)

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

Возвращает:

  • (Checksum, nil)


32
33
34
# File 'resource.rb', line 32

def checksum=(value)
  @checksum = value
end

#download_strategy ⇒ T::Class[AbstractDownloadStrategy]

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

Возвращает:

  • (T::Class[AbstractDownloadStrategy])


35
36
37
# File 'resource.rb', line 35

def download_strategy
  @download_strategy || super
end

#name ⇒ String?

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

Имя формулы необходимо задать после DSL, поскольку до инициализации формулы у нас нет доступа к её имени.

Возвращает:

  • (String, nil)


45
46
47
# File 'resource.rb', line 45

def name
  @name
end

#owner ⇒ Owner?

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

Возвращает:

  • (Owner, nil)


29
30
31
# File 'resource.rb', line 29

def owner
  @owner
end

#patches ⇒ Array<EmbeddedPatch, ExternalPatch> (только для чтения)

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

Возвращает:

  • (Array<EmbeddedPatch, ExternalPatch>)


26
27
28
# File 'resource.rb', line 26

def patches
  @patches
end

#source_modified_time ⇒ Time? (только для чтения)

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

Возвращает:

  • (Time, nil)


23
24
25
# File 'resource.rb', line 23

def source_modified_time
  @source_modified_time
end

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

#apply_patches ⇒ void

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

Этот метод возвращает неопределённое значение.



123
124
125
126
127
128
# File 'resource.rb', line 123

def apply_patches
  return if patches.empty?

  ohai "Patching #{name}"
  patches.each(&:apply)
end

#download_queue_type ⇒ String

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

Возвращает:

  • (String)


85
# File 'resource.rb', line 85

def download_queue_type = "Resource"

#fetch(verify_download_integrity: true, timeout: nil, quiet: false, skip_patches: false) ⇒ Pathname

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

Параметры:

  • verify_download_integrity (Boolean) (по умолчанию: true)
  • timeout (Integer, Float, nil) (по умолчанию: nil)
  • quiet (Boolean) (по умолчанию: false)
  • skip_patches (Boolean) (по умолчанию: false)

Возвращает:

  • (Pathname)


174
175
176
177
178
# File 'resource.rb', line 174

def fetch(verify_download_integrity: true, timeout: nil, quiet: false, skip_patches: false)
  fetch_patches unless skip_patches

  super(verify_download_integrity:, timeout:, quiet:)
end

#fetch_patches(skip_downloaded: false) ⇒ void

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

Этот метод возвращает неопределённое значение.

Параметры:

  • skip_downloaded (Boolean) (по умолчанию: false)


116
117
118
119
120
# File 'resource.rb', line 116

def fetch_patches(skip_downloaded: false)
  external_patches = patches.grep(ExternalPatch)
  external_patches.reject!(&:downloaded?) if skip_downloaded
  external_patches.each(&:fetch)
end

#files(*files) ⇒ Partial

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

Параметры:

  • files (T.untyped)

Возвращает:

  • (Partial)


161
162
163
# File 'resource.rb', line 161

def files(*files)
  Partial.new(self, files)
end

#freeze ⇒ T.self_type

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

Возвращает:

  • (T.self_type)


71
72
73
74
75
76
# File 'resource.rb', line 71

def freeze
  @name.freeze
  @patches.freeze
  @livecheck.freeze
  super
end

#initialize_dup(other) ⇒ void

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

Этот метод возвращает неопределённое значение.

Параметры:

  • other (Resource, Downloadable)


63
64
65
66
67
68
# File 'resource.rb', line 63

def initialize_dup(other)
  super
  @name = @name.dup
  @patches = @patches.dup
  @livecheck = @livecheck.dup
end

#livecheck(&block) ⇒ T.untyped

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

Livecheck можно использовать для проверки наличия более новых версий программного обеспечения. Этот метод вычисляет DSL, указанный в блоке livecheck объекта Resource (если он существует), и соответствующим образом задаёт переменные экземпляра объекта Livecheck. Метод используется brew livecheck для проверки наличия более новых версий программного обеспечения.

Пример

livecheck do
  url "https://example.com/foo/releases"
  regex /foo-(\d+(?:\.\d+)+)\.tar/
end

Параметры:

  • block (T.proc.bind(Livecheck).void, nil)

Возвращает:

  • (T.untyped)


195
196
197
198
199
200
# File 'resource.rb', line 195

def livecheck(&block)
  return @livecheck unless block

  @livecheck_defined = true
  @livecheck.instance_eval(&block)
end

#livecheck_defined? ⇒ Boolean

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

Определена ли спецификация livecheck.

Метод возвращает true, если в объекте Resource присутствует блок livecheck, и false в противном случае.

Возвращает:

  • (Boolean)


207
208
209
# File 'resource.rb', line 207

def livecheck_defined?
  @livecheck_defined == true
end

#mirror(val) ⇒ Array<String>

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

Параметры:

  • val (String)

Возвращает:

  • (Array<String>)


245
246
247
# File 'resource.rb', line 245

def mirror(val)
  mirrors << val
end

#patch(strip = :p1, src = nil, &block) ⇒ Array<EmbeddedPatch, ExternalPatch>

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

Параметры:

  • strip (Symbol, String) (по умолчанию: :p1)
  • src (Symbol, String, nil) (по умолчанию: nil)
  • block (T.proc.bind(Resource::Patch).void, nil)

Возвращает:

  • (Array<EmbeddedPatch, ExternalPatch>)


256
257
258
259
# File 'resource.rb', line 256

def patch(strip = :p1, src = nil, &block)
  p = ::Patch.create(strip, src, &block)
  patches << p
end

#prepare_patches ⇒ void

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

Этот метод возвращает неопределённое значение.



111
112
113
# File 'resource.rb', line 111

def prepare_patches
  patches.grep(DATAPatch) { |p| p.path = T.cast(T.cast(T.must(owner), SoftwareSpec).owner, ::Formula).path }
end

#sha256(val) ⇒ Checksum

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

Параметры:

  • val (String)

Возвращает:

  • (Checksum)


212
213
214
# File 'resource.rb', line 212

def sha256(val)
  @checksum = Checksum.new(val)
end

#specs ⇒ Hash{Symbol => T.untyped}

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

Возвращает:

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


267
268
269
# File 'resource.rb', line 267

def specs
  @url&.specs || {}.freeze
end

#stage(target = nil, debug_symbols: false, &block) ⇒ void

Этот метод возвращает неопределённое значение.

Проверяет загрузку и распаковывает её. Блок может вызвать |resource, staging| staging.retain!, чтобы сохранить промежуточный каталог. Переопределяющие stage подклассы должны реализовать временный каталог с помощью Mktemp, чтобы это работало для всех подтипов.

Параметры:

  • target (String, Pathname, nil) (по умолчанию: nil)
  • debug_symbols (Boolean) (по умолчанию: false)
  • block (T.proc.params(arg0: ResourceStageContext).void, nil)

Вызывает исключения:

  • (ArgumentError)


100
101
102
103
104
105
106
107
108
# File 'resource.rb', line 100

def stage(target = nil, debug_symbols: false, &block)
  raise ArgumentError, "Target directory or block is required" if !target && !block_given?

  prepare_patches
  fetch_patches(skip_downloaded: true)
  fetch unless downloaded?

  unpack(target, debug_symbols:, &block)
end

#unpack(target = nil, debug_symbols: false, &block) ⇒ void

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

Этот метод возвращает неопределённое значение.

Если задана цель, распаковывает туда; в противном случае распаковывает во временную папку. Если задан блок, передаёт ему |stage|, где stage — это ResourceStageContext. Необходимо задать цель или блок, но не оба одновременно.

Параметры:

  • target (String, Pathname, nil) (по умолчанию: nil)
  • debug_symbols (Boolean) (по умолчанию: false)
  • block (T.proc.params(arg0: ResourceStageContext).void, nil)


141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'resource.rb', line 141

def unpack(target = nil, debug_symbols: false, &block)
  current_working_directory = Pathname.pwd
  stage_resource(download_name, debug_symbols:) do |staging|
    downloader.stage do
      @source_modified_time = downloader.source_modified_time.freeze
      apply_patches
      if block
        yield(ResourceStageContext.new(self, staging))
      elsif target
        target = Pathname(target)
        target = current_working_directory/target if target.relative?
        target.install Pathname.pwd.children
      end
    end
  end
end

#url(val = nil, **specs) ⇒ String?

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

Параметры:

  • val (String, nil) (по умолчанию: nil)
  • specs (T.anything)

Возвращает:

  • (String, nil)


217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'resource.rb', line 217

def url(val = nil, **specs)
  return @url&.to_s if val.nil?

  specs = specs.dup
  # Don't allow this to be set.
  specs.delete(:insecure)

  specs[:insecure] = true if @insecure

  @url = URL.new(val, specs)
  @downloader = nil
  @download_strategy = @url.download_strategy
  @url.to_s
end

#using ⇒ T::Class[AbstractDownloadStrategy], ...

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

Возвращает:

  • (T::Class[AbstractDownloadStrategy], Symbol, nil)


262
263
264
# File 'resource.rb', line 262

def using
  @url&.using
end

#version(val = nil) ⇒ Version?

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

Параметры:

  • val (String, Version, nil) (по умолчанию: nil)

Возвращает:

  • (Version, nil)


233
234
235
236
237
238
239
240
241
242
# File 'resource.rb', line 233

def version(val = nil)
  return super() if val.nil?

  @version = case val
  when String
    val.blank? ? Version::NULL : Version.new(val)
  when Version
    val
  end
end

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

Spec-Zone.ru

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