Module: Cask::CaskLoader Private

Extended by:
Context
Defined in:
cask/cask_loader.rb

Overview

This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.

Loads a cask from various sources.

Defined Under Namespace

Modules: ILoader Classes: AbstractContentLoader, FromAPILoader, FromContentLoader, FromDefaultTapPathLoader, FromInstanceLoader, FromPathLoader, FromTapLoader, FromTapPathLoader, FromURILoader, NullLoader

Class Method Summary collapse

Methods included from Context

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

Class Method Details

.default_path(token) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



448
449
450
# File 'cask/cask_loader.rb', line 448

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

.find_cask_in_tap(token, tap) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



462
463
464
465
466
467
# File 'cask/cask_loader.rb', line 462

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

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

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

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
# File 'cask/cask_loader.rb', line 416

def self.for(ref, need_path: false, warn: true)
  [
    FromInstanceLoader,
    FromContentLoader,
    FromURILoader,
    FromAPILoader,
    FromTapLoader,
    FromTapPathLoader,
    FromPathLoader,
    FromDefaultTapPathLoader,
  ].each do |loader_class|
    if loader_class.can_load?(ref)
      $stderr.puts "#{$PROGRAM_NAME} (#{loader_class}): loading #{ref}" if debug?
      return loader_class.new(ref)
    end
  end

  case (possible_tap_casks = tap_paths(ref, warn: warn)).count
  when 1
    return FromTapPathLoader.new(possible_tap_casks.first)
  when 2..Float::INFINITY
    loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new))

    raise TapCaskAmbiguityError.new(ref, loaders)
  end

  possible_installed_cask = Cask.new(ref)
  return FromPathLoader.new(possible_installed_cask.installed_caskfile) if possible_installed_cask.installed?

  NullLoader.new(ref)
end

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

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



412
413
414
# File 'cask/cask_loader.rb', line 412

def self.load(ref, config: nil, warn: true)
  self.for(ref, warn: warn).load(config: config)
end

.path(ref) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



408
409
410
# File 'cask/cask_loader.rb', line 408

def self.path(ref)
  self.for(ref, need_path: true).path
end

.tap_paths(token, warn: true) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



452
453
454
455
456
457
458
459
460
# File 'cask/cask_loader.rb', line 452

def self.tap_paths(token, warn: true)
  token = token.to_s.downcase

  Tap.map do |tap|
    new_token = tap.cask_renames[token]
    opoo "Cask #{token} was renamed to #{new_token}." if new_token && warn
    find_cask_in_tap(new_token || token, tap)
  end.select(&:exist?)
end