diff options
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/hooks/bottles.rb | 31 |
2 files changed, 38 insertions, 0 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index c6e179c60..e9c2d7638 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -11,6 +11,7 @@ require 'cleaner' require 'formula_cellar_checks' require 'install_renamed' require 'cmd/tap' +require 'hooks/bottles' class FormulaInstaller include FormulaCellarChecks @@ -47,6 +48,8 @@ class FormulaInstaller end def pour_bottle? install_bottle_options={:warn=>false} + return true if Homebrew::Hooks::Bottles.formula_has_bottle?(f) + return false if @pour_failed return true if force_bottle? && f.bottle return false if build_from_source? || build_bottle? || interactive? @@ -618,6 +621,10 @@ class FormulaInstaller end 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 downloader = LocalBottleDownloadStrategy.new(f) else diff --git a/Library/Homebrew/hooks/bottles.rb b/Library/Homebrew/hooks/bottles.rb new file mode 100644 index 000000000..de321c09a --- /dev/null +++ b/Library/Homebrew/hooks/bottles.rb @@ -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 |
