diff options
| author | Samuel John | 2013-07-23 10:55:07 +0200 |
|---|---|---|
| committer | Samuel John | 2013-08-14 22:25:03 +0200 |
| commit | de885ecdb0889d1246eda3621cb5d89d46130b7e (patch) | |
| tree | e3d77c6220cf8fbdc76b0de0ecd77a6bed2a4850 /Library | |
| parent | 5d840c0e39ec4bad8cc2d820efc3ed767155f7a8 (diff) | |
| download | homebrew-de885ecdb0889d1246eda3621cb5d89d46130b7e.tar.bz2 | |
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.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/reinstall.rb | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 6e9b7b339..e7abd8d4d 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 |
