Class: Formulary::FromTapLoader 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 tapped formulae.

Direct Known Subclasses

FromNameLoader

Instance Attribute Summary collapse

Attributes inherited from FormulaLoader

#alias_path, #name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from FormulaLoader

#klass

Methods included from Utils::Output::Mixin

#odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #pretty_duration, #pretty_installed, #pretty_outdated, #pretty_uninstalled

Methods included from Context

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

Constructor Details

#initialize(name, path, tap:, alias_name: nil) ⇒ void

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:



863
864
865
866
867
868
# File 'formulary.rb', line 863

def initialize(name, path, tap:, alias_name: nil)
  alias_path = tap.alias_dir/alias_name if alias_name

  super(name, path, alias_path:, tap:)
  @tap = tap
end

Instance Attribute Details

#pathPathname (readonly)

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:



836
837
838
# File 'formulary.rb', line 836

def path
  @path
end

#tapTap (readonly)

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:



833
834
835
# File 'formulary.rb', line 833

def tap
  @tap
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)


842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
# File 'formulary.rb', line 842

def self.try_new(ref, from: nil, warn: false)
  ref = ref.to_s

  return unless (name_tap_type = Formulary.tap_formula_name_type(ref, warn:))

  name, tap, type = name_tap_type
  path = Formulary.find_formula_in_tap(name, tap)

  if type == :alias
    # TODO: Simplify this by making `tap_formula_name_type` return the alias name.
    alias_name = T.must(ref[HOMEBREW_TAP_FORMULA_REGEX, :name]).downcase
  end

  if type == :migration && tap.core_tap? && (loader = FromAPILoader.try_new(name))
    T.cast(loader, T.attached_class)
  else
    new(name, path, tap:, alias_name:)
  end
end

Instance Method Details

#get_formula(spec, alias_path: nil, force_bottle: false, flags: [], ignore_errors: false) ⇒ Formula

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:

  • spec (Symbol)
  • alias_path (Pathname, String, nil) (defaults to: nil)
  • force_bottle (Boolean) (defaults to: false)
  • flags (Array<String>) (defaults to: [])
  • ignore_errors (Boolean) (defaults to: false)

Returns:



879
880
881
882
883
884
885
886
887
# File 'formulary.rb', line 879

def get_formula(spec, alias_path: nil, force_bottle: false, flags: [], ignore_errors: false)
  super
rescue FormulaUnreadableError => e
  raise TapFormulaUnreadableError.new(tap, name, e.formula_error), "", e.backtrace
rescue FormulaClassUnavailableError => e
  raise TapFormulaClassUnavailableError.new(tap, name, e.path, e.class_name, e.class_list), "", e.backtrace
rescue FormulaUnavailableError => e
  raise TapFormulaUnavailableError.new(tap, name), "", e.backtrace
end

#load_file(flags:, ignore_errors:) ⇒ void

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.

This method returns an undefined value.

Parameters:



890
891
892
893
894
895
# File 'formulary.rb', line 890

def load_file(flags:, ignore_errors:)
  super
rescue MethodDeprecatedError => e
  e.issues_url = tap.issues_url || tap.to_s
  raise
end