From 79a8279b2cc46646af9d31a87f81c75d8444465a Mon Sep 17 00:00:00 2001 From: Jason Karns Date: Mon, 12 Feb 2024 09:29:21 -0500 Subject: [PATCH] Improve user ergonomics of `brew link --overwrite` help When a Keg is unlinked, brew-link gives a helpful message for how to proceed: adding the `--overwrite` flag. For safety, it also recommends running in `--dry-run` mode first to see what would be deleted. So a user's common flow would be: 1. run `brew link foo` 2. get error message with guidance 3. run `brew link --overwrite --dry-run foo` 4. inspect 5. run `brew link --overwrite foo` In this flow, steps 3-5 are likely very common. Common enough that a user may use their shell history to re-populate their prompt with step 3's command, delete the `--dry-run` flag, and re-run. (The end goal, of course, is to link `foo`.) The `--dry-run` flag needs to be removed from the command, of course. If it had been at the _end_ of the command, it would make the subsequent modification easier. Instead of "up arrow, left-arrow a bunch, then backspace over --dry-run, hopefully not backspacing over the formula name", it would be easier for the user if the dry-run flag were already at the end of the command. Then the user can "up arrow, backspace a few times and hit enter". What's more, if the last arg were `--dry-run`, a more advanced bash user could even use `!:-` to re-run the link command with all-but-the-last-arg. --- Library/Homebrew/keg.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index b78ef2e3c9..5a5453bac8 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -60,7 +60,7 @@ class Keg brew link --overwrite #{keg.name} To list all files that would be deleted: - brew link --overwrite --dry-run #{keg.name} + brew link --overwrite #{keg.name} --dry-run EOS s.join("\n") end