Класс: 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
Сводка методов экземпляра свернуть
- #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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
14 15 16 17 18 19 20 21 | # File 'download_strategy/vcs_download_strategy.rb', line 14 def initialize(url, name, version, **) super extracted_ref = extract_ref() @ref_type = T.let(extracted_ref.fetch(0), T.nilable(Symbol)) @ref = T.let(extracted_ref.fetch(1), T.untyped) @revision = T.let([:revision], T.nilable(String)) @cached_location = T.let(@cache/Utils.safe_filename("#{name}--#{cache_tag}"), Pathname) end |
Подробное описание атрибутов экземпляра
#cached_location ⇒ Pathname (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
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.
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. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
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. Сторонним разработчикам следует по возможности избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
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
Возвращает время последнего изменения.
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