Class: Formulary::BottleLoader

Inherits:
FormulaLoader show all
Defined in:
brew/Library/Homebrew/formulary.rb

Overview

Loads formulae from bottles.

Instance Attribute Summary

Attributes inherited from FormulaLoader

#alias_path, #name, #path

Instance Method Summary collapse

Methods inherited from FormulaLoader

#klass

Constructor Details

#initialize(bottle_name) ⇒ BottleLoader

Returns a new instance of BottleLoader



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'brew/Library/Homebrew/formulary.rb', line 134

def initialize(bottle_name)
  case bottle_name
  when %r{(https?|ftp|file)://}
    # The name of the formula is found between the last slash and the last hyphen.
    formula_name = File.basename(bottle_name)[/(.+)-/, 1]
    resource = Resource.new(formula_name) { url bottle_name }
    resource.specs[:bottle] = true
    downloader = resource.downloader
    cached = downloader.cached_location.exist?
    downloader.fetch
    ohai "Pouring the cached bottle" if cached
    @bottle_filename = downloader.cached_location
  else
    @bottle_filename = Pathname(bottle_name).realpath
  end
  name, full_name = Utils::Bottles.resolve_formula_names @bottle_filename
  super name, Formulary.path(full_name)
end

Instance Method Details

#get_formula(spec) ⇒ Object



153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'brew/Library/Homebrew/formulary.rb', line 153

def get_formula(spec, **)
  contents = Utils::Bottles.formula_contents @bottle_filename, name: name
  formula = begin
    Formulary.from_contents name, @bottle_filename, contents, spec
  rescue FormulaUnreadableError => e
    opoo <<~EOS
      Unreadable formula in #{@bottle_filename}:
      #{e}
    EOS
    super
  end
  formula.local_bottle_path = @bottle_filename
  formula
end