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.



440
441
442
# File 'cask/cask_loader.rb', line 440

def self.default_path(token)
  Tap.default_cask_tap.cask_dir/"#{token.to_s.downcase}.rb"
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.



454
455
456
457
458
# File 'cask/cask_loader.rb', line 454

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

  Tap.cask_files_by_name(tap).fetch(filename, 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.



408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
# File 'cask/cask_loader.rb', line 408

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.



404
405
406
# File 'cask/cask_loader.rb', line 404

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.



400
401
402
# File 'cask/cask_loader.rb', line 400

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.



444
445
446
447
448
449
450
451
452
# File 'cask/cask_loader.rb', line 444

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