brew reinstall: Reuse options from last time

Now, we can finally stop stuggesting to
    `brew rm <foo>` and then `brew install <foo> <with-your-preferred options>

So `brew reinstall` will honor all options that have been recorded
into the INSTALL_RECEIPT.json plus if `--build-bottle` was used.
This commit is contained in:
Samuel John 2013-07-23 10:55:07 +02:00
parent ad80b10de4
commit cae03e3363

View File

@ -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