From e977f3514db8d6e6d42a3888d8d107eca7db8394 Mon Sep 17 00:00:00 2001 From: Connor Mann Date: Fri, 21 May 2021 09:33:29 -0400 Subject: [PATCH] Warn if no `HEAD` keg installed w/ `--HEAD` --- Library/Homebrew/cmd/link.rb | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/cmd/link.rb b/Library/Homebrew/cmd/link.rb index 2f90e01e21..441ef28b26 100644 --- a/Library/Homebrew/cmd/link.rb +++ b/Library/Homebrew/cmd/link.rb @@ -43,19 +43,33 @@ module Homebrew } kegs = if args.HEAD? - args.named.to_kegs.filter { |keg| keg.version.head? } + args.named.to_kegs.group_by(&:name).transform_values do |v| + v.find do |keg| + keg.version.head? + end + end else - args.named.to_latest_kegs + args.named.to_latest_kegs.group_by(&:name).transform_values(&:first) end - kegs.freeze.each do |keg| + kegs.freeze.each do |name, keg| + # Catch if no HEAD keg is installed + if keg.nil? && args.HEAD? + opoo <<~EOS + No HEAD keg installed for #{name} + To install, run: + brew install --HEAD #{name} + EOS + next + end + keg_only = Formulary.keg_only?(keg.rack) if keg.linked? opoo "Already linked: #{keg}" name_and_flag = "#{"--HEAD " if args.HEAD?}#{"--force " if keg_only}#{keg.name}" puts <<~EOS - To relink: + To relink, run: brew unlink #{keg.name} && brew link #{name_and_flag} EOS next