diff --git a/Library/Contributions/cmd/brew-cleanup-installed b/Library/Contributions/cmd/brew-cleanup-installed deleted file mode 100755 index 9ce9ccbe50..0000000000 --- a/Library/Contributions/cmd/brew-cleanup-installed +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# brew-cleanup-installed: uninstall all non-whitelisted Homebrew formulae. -# -# Useful for maintainers/testers who regularly install lots of formulae -# they don't actually use. -# -# Populate ~/.brew-cleanup-installed with the formulae you want to keep -# installed. All others will be uninstalled when brew-cleanup-installed is run. - -# Exit on any command failures -set -e - -BREW_CLEAN_WHITELIST=~/.brew-cleanup-installed -# Do nothing and exit if the file doesn't exist. -[ -s $BREW_CLEAN_WHITELIST ] -BREW_LIST=$TMPDIR/brew-installed-list - -# comm needs both lists to be sorted so ensure the dotfile is sorted first. -sort --unique ~/.brew-cleanup-installed --output ~/.brew-cleanup-installed -brew list > $BREW_LIST -comm -13 $BREW_CLEAN_WHITELIST $BREW_LIST | xargs brew uninstall -rm $BREW_LIST diff --git a/Library/Homebrew/cmd/cleanup-installed.rb b/Library/Homebrew/cmd/cleanup-installed.rb new file mode 100755 index 0000000000..b79a380c19 --- /dev/null +++ b/Library/Homebrew/cmd/cleanup-installed.rb @@ -0,0 +1,20 @@ +# brew-cleanup-installed: uninstall all non-whitelisted Homebrew formulae. +# +# Useful for maintainers/testers who regularly install lots of formulae +# they don't actually use. +# +# Populate ~/.brew-cleanup-installed with the formulae you want to keep +# installed. All others will be uninstalled when brew-cleanup-installed is run. + +module Homebrew + def cleanup_installed + cleanup_file = Pathname.new "#{ENV["HOME"]}/.brew-cleanup-installed" + return unless cleanup_file.exist? + + kept_formulae = cleanup_file.read.lines.map(&:strip) + current_formulae = `brew list`.lines.map(&:strip) + uninstall_formulae = current_formulae - kept_formulae + return if uninstall_formulae.empty? + safe_system "brew", "uninstall", *uninstall_formulae + end +end