Spec-Zone.ru › Homebrew

Модуль: Cask::CaskLoader Частный

Расширяется:
Context, Utils::Output::Mixin
Определён в:
cask/cask_loader.rb

Обзор

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

Загружает cask из различных источников.

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

Модули: ILoader Классы: AbstractContentLoader, FromAPILoader, FromContentLoader, FromInstalledPathLoader, FromInstanceLoader, FromNameLoader, FromPathLoader, FromTapLoader, FromURILoader, NullLoader

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

  • .default_path(token) ⇒ Pathname частный
  • .find_cask_in_tap(token, tap) ⇒ Pathname частный
  • .for(ref, need_path: false, warn: true) ⇒ ILoader частный

    что мешало бы подмене этого метода класса с помощью RSpec.

  • .load(ref, config: nil, warn: true) ⇒ Cask частный

    что мешало бы подмене этого метода класса с помощью RSpec.

  • .load_from_installed_caskfile(path, config: nil, warn: true) ⇒ Cask частный
  • .load_prefer_installed(ref, config: nil, warn: true) ⇒ Cask частный
  • .path(ref) ⇒ Pathname частный

    что мешало бы подмене этого метода класса с помощью RSpec.

  • .tap_cask_token_type(tapped_token, warn:) ⇒ Array<(String, Tap, [Symbol, nil])>? частный

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

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

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

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

.default_path(token) ⇒ Pathname

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

Параметры:

  • token (String, Symbol)

Возвращает:

  • (Pathname)


772
773
774
# File 'cask/cask_loader.rb', line 772

def self.default_path(token)
  find_cask_in_tap(token.to_s.downcase, CoreCaskTap.instance)
end

.find_cask_in_tap(token, tap) ⇒ Pathname

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

Параметры:

  • token (String)
  • tap (Tap)

Возвращает:

  • (Pathname)


777
778
779
780
781
# File 'cask/cask_loader.rb', line 777

def self.find_cask_in_tap(token, tap)
  filename = "#{token}.rb"

  tap.cask_files_by_name.fetch(token, tap.cask_dir/filename)
end

.for(ref, need_path: false, warn: true) ⇒ ILoader

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

Примечание:

Используется WithoutRuntime, чтобы избежать обёртывания этого метода Sorbet,

что помешало бы имитации этого метода класса с помощью RSpec.

Параметры:

  • ref (String, Pathname, Cask, URI::Generic)
  • need_path (Boolean) (по умолчанию: false)
  • warn (Boolean) (по умолчанию: true)

Возвращает:

  • (ILoader)

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

  • (CaskError)


724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
# File 'cask/cask_loader.rb', line 724

def self.for(ref, need_path: false, warn: true)
  [
    FromInstanceLoader,
    FromContentLoader,
    FromURILoader,
    FromAPILoader,
    FromTapLoader,
    FromNameLoader,
    FromPathLoader,
    FromInstalledPathLoader,
    NullLoader,
  ].each do |loader_class|
    if (loader = loader_class.try_new(ref, warn:))
      $stderr.puts "#{$PROGRAM_NAME} (#{loader.class}): loading #{ref}" if verbose? && debug?
      return loader
    end
  end

  raise CaskError, "No cask loader found for #{ref.inspect}"
end

.load(ref, config: nil, warn: true) ⇒ Cask

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

Примечание:

Используется WithoutRuntime, чтобы избежать обёртывания этого метода Sorbet,

что помешало бы имитации этого метода класса с помощью RSpec.

Параметры:

  • ref (String, Symbol, Pathname, Cask, URI::Generic)
  • config (Config, nil) (по умолчанию: nil)
  • warn (Boolean) (по умолчанию: true)

Возвращает:

  • (Cask)


667
668
669
670
# File 'cask/cask_loader.rb', line 667

def self.load(ref, config: nil, warn: true)
  normalized_ref = ref.is_a?(Symbol) ? ref.to_s : ref
  self.for(normalized_ref, warn:).load(config:)
end

.load_from_installed_caskfile(path, config: nil, warn: true) ⇒ Cask

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

Параметры:

  • path (Pathname)
  • config (Config, nil) (по умолчанию: nil)
  • warn (Boolean) (по умолчанию: true)

Возвращает:

  • (Cask)


764
765
766
767
768
769
# File 'cask/cask_loader.rb', line 764

def self.load_from_installed_caskfile(path, config: nil, warn: true)
  loader = FromInstalledPathLoader.try_new(path, warn:)
  loader ||= NullLoader.new(path)

  loader.load(config:)
end

.load_prefer_installed(ref, config: nil, warn: true) ⇒ Cask

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

Параметры:

  • ref (String)
  • config (Config, nil) (по умолчанию: nil)
  • warn (Boolean) (по умолчанию: true)

Возвращает:

  • (Cask)


746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
# File 'cask/cask_loader.rb', line 746

def self.load_prefer_installed(ref, config: nil, warn: true)
  tap, token = Tap.with_cask_token(ref)
  token ||= ref
  tap ||= Cask.new(ref).tab.tap

  if tap.nil?
    self.load(token, config:, warn:)
  else
    begin
      self.load("#{tap}/#{token}", config:, warn:)
    rescue CaskUnavailableError
      # cask may be migrated to different tap. Try to search in all taps.
      self.load(token, config:, warn:)
    end
  end
end

.path(ref) ⇒ Pathname

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

Примечание:

Используем WithoutRuntime, чтобы избежать обёртывания этого метода Sorbet,

которое мешало бы имитации этого метода класса с помощью RSpec.

Параметры:

  • ref (String, Pathname, Cask, URI::Generic)

Возвращает:

  • (Pathname)


657
658
659
# File 'cask/cask_loader.rb', line 657

def self.path(ref)
  T.cast(self.for(ref, need_path: true), T.any(FromAPILoader, FromPathLoader)).path
end

.tap_cask_token_type(tapped_token, warn:) ⇒ Array<(String, Tap, [Symbol, nil])>?

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

Параметры:

  • tapped_token (String)
  • warn (Boolean)

Возвращает:

  • (Array<(String, Tap, [Symbol, nil])>, nil)


673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
# File 'cask/cask_loader.rb', line 673

def self.tap_cask_token_type(tapped_token, warn:)
  return unless (tap_with_token = Tap.with_cask_token(tapped_token))

  tap, token = tap_with_token

  type = nil

  if (new_token = tap.cask_renames[token].presence)
    old_token = tap.core_cask_tap? ? token : tapped_token
    token = new_token
    new_token = tap.core_cask_tap? ? token : "#{tap}/#{token}"
    type = :rename
  elsif (new_tap_name = tap.tap_migrations[token].presence)
    new_tap, new_token = Tap.with_cask_token(new_tap_name)
    unless new_tap
      if new_tap_name.include?("/")
        new_tap = Tap.fetch(new_tap_name)
        new_token = token
      else
        new_tap = tap
        new_token = new_tap_name
      end
    end
    new_tapped_token = "#{new_tap}/#{new_token}"

    if tapped_token != new_tapped_token
      old_token = tap.core_cask_tap? ? token : tapped_token
      return unless (token_tap_type = tap_cask_token_type(new_tapped_token, warn: false))

      token, tap, = token_tap_type
      new_token = new_tap.core_cask_tap? ? token : "#{tap}/#{token}"
      type = :migration
    end
  end

  if warn && old_token && new_token
    destination_exists = find_cask_in_tap(token, tap).exist? ||
                         (tap.core_cask_tap? && !Homebrew::EnvConfig.no_install_from_api? &&
                          Homebrew::API.cask_tokens.include?(token))
    opoo "Cask #{old_token} was renamed to #{new_token}." if destination_exists
  end

  [token, tap, type]
end

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

Spec-Zone.ru

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