Class: Formulary::FromBottleLoader Private

Inherits:
FormulaLoader show all
Defined in:
formulary.rb

Overview

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

Loads a formula from a bottle.

Instance Attribute Summary

Attributes inherited from FormulaLoader

#alias_path, #name, #path, #tap

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from FormulaLoader

#klass

Methods included from Context

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

Constructor Details

#initialize(bottle_name, warn: false) ⇒ FromBottleLoader

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.

Returns a new instance of FromBottleLoader.



546
547
548
549
550
# File 'formulary.rb', line 546

def initialize(bottle_name, warn: false)
  @bottle_path = Pathname(bottle_name).realpath
  name, full_name = Utils::Bottles.resolve_formula_names(@bottle_path)
  super name, Formulary.path(full_name)
end

Class Method Details

.try_new(ref, from: nil, warn: false) ⇒ T.attached_class?

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.

Parameters:

  • ref (String, Pathname, URI::Generic)
  • from (Symbol, nil) (defaults to: nil)
  • warn (Boolean) (defaults to: false)

Returns:

  • (T.attached_class, nil)


538
539
540
541
542
543
544
# File 'formulary.rb', line 538

def self.try_new(ref, from: nil, warn: false)
  return if Homebrew::EnvConfig.forbid_packages_from_paths?

  ref = ref.to_s

  new(ref) if HOMEBREW_BOTTLES_EXTNAME_REGEX.match?(ref) && File.exist?(ref)
end

Instance Method Details

#get_formula(spec, force_bottle: false, flags: [], ignore_errors: false) ⇒ 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.



552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
# File 'formulary.rb', line 552

def get_formula(spec, force_bottle: false, flags: [], ignore_errors: false, **)
  formula = begin
    contents = Utils::Bottles.formula_contents(@bottle_path, name:)
    Formulary.from_contents(name, path, contents, spec, force_bottle:,
                            flags:, ignore_errors:)
  rescue FormulaUnreadableError => e
    opoo <<~EOS
      Unreadable formula in #{@bottle_path}:
      #{e}
    EOS
    super
  rescue BottleFormulaUnavailableError => e
    opoo <<~EOS
      #{e}
      Falling back to non-bottle formula.
    EOS
    super
  end
  formula.local_bottle_path = @bottle_path
  formula
end