 0b6b2f04da
			
		
	
	
		0b6b2f04da
		
			
		
	
	
	
	
		
			
			- The `brew uninstall` command has `--zap`, so let's make `brew reinstall` have parity here for a better user experience. (Requested in issue 12983.) - It feels weird that to get my new reinstall test to pass I had to add `--zap` to `cask/cmd/install.rb`, not `cask/cmd/reinstall.rb` to get the tests to pass. But the `brew reinstall --cask caffeine --zap` command worked fine all the time. The CLI argument parser from the test run was complaining about not knowing what `zap` was. As a result, `--zap` now shows up as a switch in `brew install --help` which I'm not 100% convinced is the desired UX. But I've edited the description accordingly to specify that it will only work on `reinstall` operations (and `--zap` on `install` is a no-op). ``` issyl0 at pictor in /opt/homebrew on reinstall-cask-zap ❯ brew reinstall --cask caffeine --zap ==> Downloading https://github.com/IntelliScape/caffeine/releases/download/1.1.3/Caffeine.dmg Already downloaded: /Users/issyl0/Library/Caches/Homebrew/downloads/3d6ccfdd3b8d0ab37d1c2468d6e69078c2d31d3b12bf51947c4db21e5f376af2--Caffeine.dmg ==> Implied `brew uninstall --cask caffeine` ==> Backing App 'Caffeine.app' up to '/opt/homebrew/Caskroom/caffeine/1.1.3/Caffeine.app' ==> Removing App '/Applications/Caffeine.app' ==> Dispatching zap stanza ==> Trashing files: ~/Library/Application Support/com.intelliscapesolutions.caffeine ~/Library/Preferences/com.intelliscapesolutions.caffeine.plist ~/Library/Caches/com.intelliscapesolutions.caffeine ~/Library/HTTPStoages/com.intelliscapesolutions.caffeine.binarycookies ==> Removing all staged versions of Cask 'caffeine' ==> Installing Cask caffeine ==> Moving App 'Caffeine.app' to '/Applications/Caffeine.app' 🍺 caffeine was successfully installed! ```
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: true
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| module Cask
 | |
|   class Cmd
 | |
|     # Cask implementation of the `brew reinstall` command.
 | |
|     #
 | |
|     # @api private
 | |
|     class Reinstall < Install
 | |
|       extend T::Sig
 | |
| 
 | |
|       sig { void }
 | |
|       def run
 | |
|         self.class.reinstall_casks(
 | |
|           *casks,
 | |
|           binaries:       args.binaries?,
 | |
|           verbose:        args.verbose?,
 | |
|           force:          args.force?,
 | |
|           skip_cask_deps: args.skip_cask_deps?,
 | |
|           require_sha:    args.require_sha?,
 | |
|           quarantine:     args.quarantine?,
 | |
|           zap:            args.zap?,
 | |
|         )
 | |
|       end
 | |
| 
 | |
|       def self.reinstall_casks(
 | |
|         *casks,
 | |
|         verbose: nil,
 | |
|         force: nil,
 | |
|         skip_cask_deps: nil,
 | |
|         binaries: nil,
 | |
|         require_sha: nil,
 | |
|         quarantine: nil,
 | |
|         zap: nil
 | |
|       )
 | |
|         require "cask/installer"
 | |
| 
 | |
|         options = {
 | |
|           binaries:       binaries,
 | |
|           verbose:        verbose,
 | |
|           force:          force,
 | |
|           skip_cask_deps: skip_cask_deps,
 | |
|           require_sha:    require_sha,
 | |
|           quarantine:     quarantine,
 | |
|           zap:            zap,
 | |
|         }.compact
 | |
| 
 | |
|         options[:quarantine] = true if options[:quarantine].nil?
 | |
| 
 | |
|         casks.each do |cask|
 | |
|           Installer.new(cask, **options).reinstall
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |