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.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
 | 
			
		||||
 | 
			
		||||
@ -83,8 +83,8 @@ module Hbc
 | 
			
		||||
    def install
 | 
			
		||||
      odebug "Hbc::Installer#install"
 | 
			
		||||
 | 
			
		||||
      if @cask.installed? && !force? && !@reinstall && !@upgrade
 | 
			
		||||
        raise CaskAlreadyInstalledError, @cask
 | 
			
		||||
      if @cask.installed? && !force? && !@reinstall
 | 
			
		||||
        raise CaskAlreadyInstalledError, @cask unless @upgrade
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      check_conflicts
 | 
			
		||||
@ -369,17 +369,28 @@ module Hbc
 | 
			
		||||
      oh1 "Uninstalling Cask #{@cask}"
 | 
			
		||||
      disable_accessibility_access
 | 
			
		||||
      uninstall_artifacts
 | 
			
		||||
      return if @upgrade
 | 
			
		||||
 | 
			
		||||
      purge_versioned_files
 | 
			
		||||
      purge_caskroom_path if force?
 | 
			
		||||
    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
 | 
			
		||||
      return unless @upgrade
 | 
			
		||||
 | 
			
		||||
      purge_versioned_files
 | 
			
		||||
      purge_caskroom_path if force?
 | 
			
		||||
      purge_versioned_files(upgrade: true)
 | 
			
		||||
      oh1 "Cask #{@cask} was successfully upgraded!"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def uninstall_artifacts
 | 
			
		||||
@ -414,7 +425,7 @@ module Hbc
 | 
			
		||||
      Utils.gain_permissions_remove(path, command: @command)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def purge_versioned_files
 | 
			
		||||
    def purge_versioned_files(upgrade: false)
 | 
			
		||||
      odebug "Purging files for version #{@cask.version} of Cask #{@cask}"
 | 
			
		||||
 | 
			
		||||
      # versioned staged distribution
 | 
			
		||||
@ -430,10 +441,10 @@ module Hbc
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      @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
 | 
			
		||||
      @cask.caskroom_path.rmdir_if_possible
 | 
			
		||||
      @cask.caskroom_path.rmdir_if_possible unless upgrade
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def purge_caskroom_path
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user