Spec-Zone.ru › Homebrew

Класс: VCSDownloadStrategy Абстрактный Частный

Наследует:
AbstractDownloadStrategy
  • Object
  • AbstractDownloadStrategy
  • VCSDownloadStrategy
показать всё
Определён в:
download_strategy/vcs_download_strategy.rb

Обзор

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

Этот класс является абстрактным.

Абстрактный суперкласс для всех стратегий загрузки, выполняющих загрузку из системы контроля версий.

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

BazaarDownloadStrategy, CVSDownloadStrategy, FossilDownloadStrategy, GitDownloadStrategy, MercurialDownloadStrategy, SubversionDownloadStrategy

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

REF_TYPES =

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

[:tag, :branch, :revisions, :revision].freeze

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

  • #cached_location ⇒ Pathname только для чтения частный

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

#cache, #url

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

  • #commit_outdated?(commit) ⇒ Boolean частный
  • #fetch(timeout: nil) ⇒ void

    Загрузить репозиторий и сохранить его в кэше по адресу #cached_location.

  • #fetch_last_commit ⇒ String частный
  • #head? ⇒ Boolean частный
  • #initialize(url, name, version, **meta) ⇒ void конструктор частный
  • #last_commit ⇒ String

    Возвращает время последнего изменения.

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

#basename, #clear_cache, #fetched_size, #ohai, #quiet!, #quiet?, #source_modified_time, #source_revision, #stage, #total_size

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

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

#initialize(url, name, version, **meta) ⇒ void

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

Параметры:

  • url (String)
  • name (String)
  • version (String, Version, nil)
  • meta (T.untyped)


14
15
16
17
18
19
20
21
# File 'download_strategy/vcs_download_strategy.rb', line 14

def initialize(url, name, version, **meta)
  super
  extracted_ref = extract_ref(meta)
  @ref_type = T.let(extracted_ref.fetch(0), T.nilable(Symbol))
  @ref = T.let(extracted_ref.fetch(1), T.untyped)
  @revision = T.let(meta[:revision], T.nilable(String))
  @cached_location = T.let(@cache/Utils.safe_filename("#{name}--#{cache_tag}"), Pathname)
end

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

#cached_location ⇒ Pathname (только для чтения)

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

Возвращает:

  • (Pathname)


9
10
11
# File 'download_strategy/vcs_download_strategy.rb', line 9

def cached_location
  @cached_location
end

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

#commit_outdated?(commit) ⇒ Boolean

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

Параметры:

  • commit (String, nil)

Возвращает:

  • (Boolean)


61
62
63
64
# File 'download_strategy/vcs_download_strategy.rb', line 61

def commit_outdated?(commit)
  @last_commit ||= T.let(fetch_last_commit, T.nilable(String))
  commit != @last_commit
end

#fetch(timeout: nil) ⇒ void

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

Загружает репозиторий и сохраняет его в кэше по адресу #cached_location.

Параметры:

  • timeout (Float, Integer, nil) (по умолчанию: nil)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'download_strategy/vcs_download_strategy.rb', line 27

def fetch(timeout: nil)
  end_time = Time.now + timeout if timeout

  ohai "Cloning #{url}"

  if cached_location.exist? && repo_valid?
    puts "Updating #{cached_location}"
    update(timeout: end_time)
  elsif cached_location.exist?
    puts "Removing invalid repository from cache"
    clear_cache
    clone_repo(timeout: end_time)
  else
    clone_repo(timeout: end_time)
  end

  v = version
  v.update_commit(last_commit) if v.is_a?(Version) && head?

  return if @ref_type != :tag || @revision.blank? || current_revision.blank? || current_revision == @revision

  raise <<~EOS
#{@ref} tag should be #{@revision}    but is actually #{current_revision}  EOS
end

#fetch_last_commit ⇒ String

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

Возвращает:

  • (String)


55
56
57
58
# File 'download_strategy/vcs_download_strategy.rb', line 55

def fetch_last_commit
  fetch
  last_commit
end

#head? ⇒ Boolean

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

Возвращает:

  • (Boolean)


67
68
69
70
# File 'download_strategy/vcs_download_strategy.rb', line 67

def head?
  v = version
  v.is_a?(Version) ? v.head? : false
end

#last_commit ⇒ String

Возвращает время последнего изменения.

Возвращает:

  • (String)


76
77
78
# File 'download_strategy/vcs_download_strategy.rb', line 76

def last_commit
  source_modified_time.to_i.to_s
end

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

Spec-Zone.ru

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