From 45066f91444730141c2262d761afee35af753a1b Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Wed, 24 Mar 2021 13:24:24 +0100 Subject: [PATCH] Fix `uninstall --force` for casks. --- Library/Homebrew/cli/named_args.rb | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/cli/named_args.rb b/Library/Homebrew/cli/named_args.rb index 89205c0297..5ae39df42f 100644 --- a/Library/Homebrew/cli/named_args.rb +++ b/Library/Homebrew/cli/named_args.rb @@ -91,8 +91,8 @@ module Homebrew when :keg resolve_keg(name) when :kegs - rack = Formulary.to_rack(name) - rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : [] + _, kegs = resolve_kegs(name) + kegs else raise end @@ -259,15 +259,21 @@ module Homebrew end private :spec - def resolve_keg(name) + def resolve_kegs(name) raise UsageError if name.blank? require "keg" rack = Formulary.to_rack(name.downcase) - dirs = rack.directory? ? rack.subdirs : [] - raise NoSuchKegError, rack.basename if dirs.empty? + kegs = rack.directory? ? rack.subdirs.map { |d| Keg.new(d) } : [] + raise NoSuchKegError, rack.basename if kegs.none? + + [rack, kegs] + end + + def resolve_keg(name) + rack, kegs = resolve_kegs(name) linked_keg_ref = HOMEBREW_LINKED_KEGS/rack.basename opt_prefix = HOMEBREW_PREFIX/"opt/#{rack.basename}" @@ -275,7 +281,7 @@ module Homebrew begin return Keg.new(opt_prefix.resolved_path) if opt_prefix.symlink? && opt_prefix.directory? return Keg.new(linked_keg_ref.resolved_path) if linked_keg_ref.symlink? && linked_keg_ref.directory? - return Keg.new(dirs.first) if dirs.length == 1 + return kegs.first if kegs.length == 1 f = if name.include?("/") || File.exist?(name) Formulary.factory(name)