From 0fd1be9a8e58e68d1319e1f9fedaa264b086c712 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Sun, 5 Feb 2023 15:35:11 +0100 Subject: [PATCH 1/2] Add error message with instructions for the missing cask file --- Library/Homebrew/cask/cmd/upgrade.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index a96275cbe2..d9221597ca 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -146,7 +146,17 @@ module Cask caught_exceptions = [] - upgradable_casks = outdated_casks.map { |c| [CaskLoader.load(c.installed_caskfile), c] } + upgradable_casks = outdated_casks.map do |c| + if !c.installed_caskfile.exist? && c.tap.to_s == "homebrew/cask" && + Homebrew::API::Cask.all_casks.key?(c.token) + odie <<~EOS + The cask '#{c.token}' was not properly installed and cannot be upgraded. To fix this, run: + brew reinstall --cask --force #{c.token} + EOS + end + + [CaskLoader.load(c.installed_caskfile), c] + end puts upgradable_casks .map { |(old_cask, new_cask)| "#{new_cask.full_name} #{old_cask.version} -> #{new_cask.version}" } From dde44ed37ccd28d69f8235cf343d4b1024018f4e Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Sun, 5 Feb 2023 16:10:22 +0100 Subject: [PATCH 2/2] Clarify cause of the bug in messaging Co-authored-by: Mike McQuaid --- Library/Homebrew/cask/cmd/upgrade.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index d9221597ca..86051ba96b 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -150,7 +150,7 @@ module Cask if !c.installed_caskfile.exist? && c.tap.to_s == "homebrew/cask" && Homebrew::API::Cask.all_casks.key?(c.token) odie <<~EOS - The cask '#{c.token}' was not properly installed and cannot be upgraded. To fix this, run: + The cask '#{c.token}' was affected by a bug and cannot be upgraded as-is. To fix this, run: brew reinstall --cask --force #{c.token} EOS end