Add hooks for pouring bottles.
This should give us a bit of control over what e.g. Boxen are doing whilst at the same time stopping us from accidentally breaking each other's stuff every so often. I'm aware this may be somewhat controversial so I'm open to other approaches.
This commit is contained in:
parent
d6c9528e59
commit
e2fbfc8390
@ -11,6 +11,7 @@ require 'cleaner'
|
|||||||
require 'formula_cellar_checks'
|
require 'formula_cellar_checks'
|
||||||
require 'install_renamed'
|
require 'install_renamed'
|
||||||
require 'cmd/tap'
|
require 'cmd/tap'
|
||||||
|
require 'hooks/bottles'
|
||||||
|
|
||||||
class FormulaInstaller
|
class FormulaInstaller
|
||||||
include FormulaCellarChecks
|
include FormulaCellarChecks
|
||||||
@ -47,6 +48,8 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pour_bottle? install_bottle_options={:warn=>false}
|
def pour_bottle? install_bottle_options={:warn=>false}
|
||||||
|
return true if Homebrew::Hooks::Bottles.formula_has_bottle?(f)
|
||||||
|
|
||||||
return false if @pour_failed
|
return false if @pour_failed
|
||||||
return true if force_bottle? && f.bottle
|
return true if force_bottle? && f.bottle
|
||||||
return false if build_from_source? || build_bottle? || interactive?
|
return false if build_from_source? || build_bottle? || interactive?
|
||||||
@ -618,6 +621,10 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pour
|
def pour
|
||||||
|
if Homebrew::Hooks::Bottles.formula_has_bottle?(f)
|
||||||
|
return if Homebrew::Hooks::Bottles.pour_formula_bottle(f)
|
||||||
|
end
|
||||||
|
|
||||||
if f.local_bottle_path
|
if f.local_bottle_path
|
||||||
downloader = LocalBottleDownloadStrategy.new(f)
|
downloader = LocalBottleDownloadStrategy.new(f)
|
||||||
else
|
else
|
||||||
|
|||||||
31
Library/Homebrew/hooks/bottles.rb
Normal file
31
Library/Homebrew/hooks/bottles.rb
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Boxen (and perhaps others) want to override our bottling infrastructure so
|
||||||
|
# they can avoid declaring checksums in formulae files.
|
||||||
|
# Instead of periodically breaking their monkeypatches let's add some hooks that
|
||||||
|
# we can query to allow their own behaviour.
|
||||||
|
|
||||||
|
# PLEASE DO NOT EVER RENAME THIS CLASS OR ADD/REMOVE METHOD ARGUMENTS!
|
||||||
|
module Homebrew
|
||||||
|
module Hooks
|
||||||
|
module Bottles
|
||||||
|
def self.setup_formula_has_bottle &block
|
||||||
|
@has_bottle = block
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.setup_pour_formula_bottle &block
|
||||||
|
@pour_bottle = block
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.formula_has_bottle?(formula)
|
||||||
|
return false unless @has_bottle
|
||||||
|
@has_bottle.call formula
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.pour_formula_bottle(formula)
|
||||||
|
return false unless @pour_bottle
|
||||||
|
@pour_bottle.call formula
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
x
Reference in New Issue
Block a user