Finalize metadata handling and uninstall logic
This commit is contained in:
parent
55727b7895
commit
7f2e4f583a
@ -34,25 +34,29 @@ module Hbc
|
|||||||
|
|
||||||
old_cask_installer = Installer.new(old_cask, binaries: binaries?, verbose: verbose?, force: force?, upgrade: true)
|
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?,
|
Installer.new(new_cask, binaries: binaries?,
|
||||||
verbose: verbose?,
|
verbose: verbose?,
|
||||||
force: force?,
|
force: force?,
|
||||||
skip_cask_deps: skip_cask_deps?,
|
skip_cask_deps: skip_cask_deps?,
|
||||||
require_sha: require_sha?,
|
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
|
old_cask_installer.finalize_upgrade
|
||||||
rescue CaskUnavailableError => e
|
rescue CaskError => e
|
||||||
opoo e.message
|
|
||||||
rescue CaskAlreadyInstalledError => e
|
|
||||||
opoo e.message
|
opoo e.message
|
||||||
|
old_cask_installer.revert_upgrade
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -83,8 +83,8 @@ module Hbc
|
|||||||
def install
|
def install
|
||||||
odebug "Hbc::Installer#install"
|
odebug "Hbc::Installer#install"
|
||||||
|
|
||||||
if @cask.installed? && !force? && !@reinstall && !@upgrade
|
if @cask.installed? && !force? && !@reinstall
|
||||||
raise CaskAlreadyInstalledError, @cask
|
raise CaskAlreadyInstalledError, @cask unless @upgrade
|
||||||
end
|
end
|
||||||
|
|
||||||
check_conflicts
|
check_conflicts
|
||||||
@ -369,17 +369,28 @@ module Hbc
|
|||||||
oh1 "Uninstalling Cask #{@cask}"
|
oh1 "Uninstalling Cask #{@cask}"
|
||||||
disable_accessibility_access
|
disable_accessibility_access
|
||||||
uninstall_artifacts
|
uninstall_artifacts
|
||||||
return if @upgrade
|
|
||||||
|
|
||||||
purge_versioned_files
|
purge_versioned_files
|
||||||
purge_caskroom_path if force?
|
purge_caskroom_path if force?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def start_upgrade
|
||||||
|
return unless @upgrade
|
||||||
|
oh1 "Starting upgrade for Cask #{@cask}"
|
||||||
|
|
||||||
|
disable_accessibility_access
|
||||||
|
uninstall_artifacts
|
||||||
|
end
|
||||||
|
|
||||||
|
def revert_upgrade
|
||||||
|
return unless @upgrade
|
||||||
|
opoo "Reverting upgrade for Cask #{@cask}"
|
||||||
|
reinstall
|
||||||
|
end
|
||||||
|
|
||||||
def finalize_upgrade
|
def finalize_upgrade
|
||||||
return unless @upgrade
|
return unless @upgrade
|
||||||
|
purge_versioned_files(upgrade: true)
|
||||||
purge_versioned_files
|
oh1 "Cask #{@cask} was successfully upgraded!"
|
||||||
purge_caskroom_path if force?
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def uninstall_artifacts
|
def uninstall_artifacts
|
||||||
@ -414,7 +425,7 @@ module Hbc
|
|||||||
Utils.gain_permissions_remove(path, command: @command)
|
Utils.gain_permissions_remove(path, command: @command)
|
||||||
end
|
end
|
||||||
|
|
||||||
def purge_versioned_files
|
def purge_versioned_files(upgrade: false)
|
||||||
odebug "Purging files for version #{@cask.version} of Cask #{@cask}"
|
odebug "Purging files for version #{@cask.version} of Cask #{@cask}"
|
||||||
|
|
||||||
# versioned staged distribution
|
# versioned staged distribution
|
||||||
@ -430,10 +441,10 @@ module Hbc
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
@cask.metadata_versioned_path.rmdir_if_possible
|
@cask.metadata_versioned_path.rmdir_if_possible
|
||||||
@cask.metadata_master_container_path.rmdir_if_possible
|
@cask.metadata_master_container_path.rmdir_if_possible unless upgrade
|
||||||
|
|
||||||
# toplevel staged distribution
|
# toplevel staged distribution
|
||||||
@cask.caskroom_path.rmdir_if_possible
|
@cask.caskroom_path.rmdir_if_possible unless upgrade
|
||||||
end
|
end
|
||||||
|
|
||||||
def purge_caskroom_path
|
def purge_caskroom_path
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user