aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask/lib/hbc/cli
diff options
context:
space:
mode:
authorL. E. Segovia2017-10-30 23:29:00 -0300
committerL. E. Segovia2017-10-30 23:29:00 -0300
commit7f2e4f583a5789a86712322818612c439307b90d (patch)
tree12b55d84f1dea61ee7b750823754a98b7c7c0fb8 /Library/Homebrew/cask/lib/hbc/cli
parent55727b789532fbfa7997929aa0506d7843eda3ce (diff)
downloadbrew-7f2e4f583a5789a86712322818612c439307b90d.tar.bz2
Finalize metadata handling and uninstall logic
Diffstat (limited to 'Library/Homebrew/cask/lib/hbc/cli')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/upgrade.rb24
1 files changed, 14 insertions, 10 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb b/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb
index 49a538704..e68fc4e53 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb
@@ -34,25 +34,29 @@ module Hbc
old_cask_installer = Installer.new(old_cask, binaries: binaries?, verbose: verbose?, force: force?, upgrade: true)
- old_cask_installer.uninstall
-
- begin
- odebug "Installing new version of Cask #{old_cask}"
-
- new_cask = CaskLoader.load(old_cask.to_s)
+ new_cask = CaskLoader.load(old_cask.to_s)
+ new_cask_installer =
Installer.new(new_cask, binaries: binaries?,
verbose: verbose?,
force: force?,
skip_cask_deps: skip_cask_deps?,
require_sha: require_sha?,
- upgrade: true).install
+ upgrade: true)
+
+ begin
+ # purge artifacts BUT keep metadata aside
+ old_cask_installer.start_upgrade
+
+ # install BUT do not yet save metadata
+ new_cask_installer.install
+
+ # if successful, remove old metadata and install new
old_cask_installer.finalize_upgrade
- rescue CaskUnavailableError => e
- opoo e.message
- rescue CaskAlreadyInstalledError => e
+ rescue CaskError => e
opoo e.message
+ old_cask_installer.revert_upgrade
end
end
end