From cae03e33630ccae6d3b11e63f5fe6a61d8b989ea Mon Sep 17 00:00:00 2001 From: Samuel John Date: Tue, 23 Jul 2013 10:55:07 +0200 Subject: [PATCH] brew reinstall: Reuse options from last time Now, we can finally stop stuggesting to `brew rm ` and then `brew install So `brew reinstall` will honor all options that have been recorded into the INSTALL_RECEIPT.json plus if `--build-bottle` was used. --- Library/Homebrew/cmd/reinstall.rb | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 6e9b7b339c..e7abd8d4db 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -3,7 +3,23 @@ require 'cmd/install' module Homebrew extend self def reinstall - self.uninstall - self.install + # At first save the named formulae and remove them from ARGV + named = ARGV.named + ARGV.delete_if { |arg| named.include? arg } + clean_ARGV = ARGV.clone + + # Add the used_options for each named formula separately so + # that the options apply to the right formula. + named.each do |name| + ARGV.replace(clean_ARGV) + ARGV << name + tab = Tab.for_name(name) + tab.used_options.each { |option| ARGV << option.to_s } + ARGV << '--build-bottle' if tab.built_as_bottle + # Todo: Be as smart as upgrade to restore the old state if reinstall fails. + self.uninstall + oh1 "Reinstalling #{name} #{ARGV.options_only*' '}" + self.install + end end end