cleanup: allow users to specify formulae to skip cleaning
This allows users to set `HOMEBREW_NO_CLEANUP_FORMULAE` to a comma-separated list of formulae that `brew` will refuse to clean with `brew cleanup`. We currently allow a less granular version of this with `HOMEBREW_NO_INSTALL_CLEANUP`. All this changes is how much control users have over what is and isn't cleaned. Fixes #11924.
This commit is contained in:
		
							parent
							
								
									6da8630f4e
								
							
						
					
					
						commit
						a7133d2a8d
					
				@ -160,11 +160,18 @@ module Homebrew
 | 
			
		||||
      cleanup = Cleanup.new
 | 
			
		||||
      if cleanup.periodic_clean_due?
 | 
			
		||||
        cleanup.periodic_clean!
 | 
			
		||||
      elsif f.latest_version_installed?
 | 
			
		||||
      elsif f.latest_version_installed? && !cleanup.skip_clean_formula?(f)
 | 
			
		||||
        cleanup.cleanup_formula(f)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def skip_clean_formula?(f)
 | 
			
		||||
      return false if Homebrew::EnvConfig.no_cleanup_formulae.blank?
 | 
			
		||||
 | 
			
		||||
      skip_clean_formulae = Homebrew::EnvConfig.no_cleanup_formulae.split(",")
 | 
			
		||||
      skip_clean_formulae.include?(f.name) || (skip_clean_formulae & f.aliases).present?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def periodic_clean_due?
 | 
			
		||||
      return false if Homebrew::EnvConfig.no_install_cleanup?
 | 
			
		||||
 | 
			
		||||
@ -186,7 +193,10 @@ module Homebrew
 | 
			
		||||
 | 
			
		||||
    def clean!(quiet: false, periodic: false)
 | 
			
		||||
      if args.empty?
 | 
			
		||||
        Formula.installed.sort_by(&:name).each do |formula|
 | 
			
		||||
        Formula.installed
 | 
			
		||||
               .sort_by(&:name)
 | 
			
		||||
               .reject { |f| skip_clean_formula?(f) }
 | 
			
		||||
               .each do |formula|
 | 
			
		||||
          cleanup_formula(formula, quiet: quiet, ds_store: false, cache_db: false)
 | 
			
		||||
        end
 | 
			
		||||
        cleanup_cache
 | 
			
		||||
@ -223,7 +233,12 @@ module Homebrew
 | 
			
		||||
            nil
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          cleanup_formula(formula) if formula
 | 
			
		||||
          if formula && skip_clean_formula?(formula)
 | 
			
		||||
            onoe "Refusing to clean #{formula} because it is listed in " \
 | 
			
		||||
                 "#{Tty.bold}HOMEBREW_NO_CLEANUP_FORMULAE#{Tty.reset}!"
 | 
			
		||||
          elsif formula
 | 
			
		||||
            cleanup_formula(formula)
 | 
			
		||||
          end
 | 
			
		||||
          cleanup_cask(cask) if cask
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
@ -229,6 +229,10 @@ module Homebrew
 | 
			
		||||
                     "formulae.",
 | 
			
		||||
        boolean:     true,
 | 
			
		||||
      },
 | 
			
		||||
      HOMEBREW_NO_CLEANUP_FORMULAE:           {
 | 
			
		||||
        description: "A comma-separated list of formulae. Homebrew will refuse to clean up a " \
 | 
			
		||||
                     "formula if it appears on this list.",
 | 
			
		||||
      },
 | 
			
		||||
      HOMEBREW_NO_COLOR:                      {
 | 
			
		||||
        description:  "If set, do not print text with colour added.",
 | 
			
		||||
        default_text: "`$NO_COLOR`.",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user