From ac7dbc008284e1a85353548eb8e15c008be902ec Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Thu, 16 Feb 2023 23:57:31 +0800 Subject: [PATCH 1/4] cmd/update-reset: accept tap names as arguments Currently, doing `brew update-reset homebrew/core` does nothing (not even return an error). If you want to `update-reset` a given tap, you must do (the equivalent of) brew update-reset "$(brew --repository owner/tap_name)" This isn't very intuitive, so let's do a bit more work in argument parsing so that the user can just pass a tap name instead of a path to a tap. Passing a path to a tap is also still supported. --- Library/Homebrew/cmd/update-reset.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/cmd/update-reset.sh b/Library/Homebrew/cmd/update-reset.sh index d701da7c41..8d6db6536f 100644 --- a/Library/Homebrew/cmd/update-reset.sh +++ b/Library/Homebrew/cmd/update-reset.sh @@ -33,7 +33,22 @@ homebrew-update-reset() { [[ "${option}" == *d* ]] && HOMEBREW_DEBUG=1 ;; *) - REPOS+=("${option}") + if [[ -d "${option}" ]] + then + REPOS+=("${option}") + else + local owner="${option%/*}" + local name="${option#*/}" + name="${name#homebrew-}" # Support both homebrew/core and homebrew/homebrew-core. + + local repo_path="${HOMEBREW_LIBRARY}/Taps/${owner}/homebrew-${name}" + if [[ -d "${repo_path}" ]] + then + REPOS+=("${repo_path}") + else + odie "Could not find tap: ${option}" + fi + fi ;; esac done From 12364d70d273e46e1c133d1126ec485589fd9cd4 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Tue, 28 Feb 2023 20:30:40 +0800 Subject: [PATCH 2/4] Revert "cmd/update-reset: accept tap names as arguments" This reverts commit ac7dbc008284e1a85353548eb8e15c008be902ec. --- Library/Homebrew/cmd/update-reset.sh | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/Library/Homebrew/cmd/update-reset.sh b/Library/Homebrew/cmd/update-reset.sh index 8d6db6536f..d701da7c41 100644 --- a/Library/Homebrew/cmd/update-reset.sh +++ b/Library/Homebrew/cmd/update-reset.sh @@ -33,22 +33,7 @@ homebrew-update-reset() { [[ "${option}" == *d* ]] && HOMEBREW_DEBUG=1 ;; *) - if [[ -d "${option}" ]] - then - REPOS+=("${option}") - else - local owner="${option%/*}" - local name="${option#*/}" - name="${name#homebrew-}" # Support both homebrew/core and homebrew/homebrew-core. - - local repo_path="${HOMEBREW_LIBRARY}/Taps/${owner}/homebrew-${name}" - if [[ -d "${repo_path}" ]] - then - REPOS+=("${repo_path}") - else - odie "Could not find tap: ${option}" - fi - fi + REPOS+=("${option}") ;; esac done From 53053e0625e7d718232acf9cfb42eb3d5fb4be03 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Tue, 28 Feb 2023 20:38:00 +0800 Subject: [PATCH 3/4] cmd/update-reset: improve arg validation This is based on feedback from #14667. --- Library/Homebrew/cmd/update-reset.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/cmd/update-reset.sh b/Library/Homebrew/cmd/update-reset.sh index d701da7c41..a7b597afa5 100644 --- a/Library/Homebrew/cmd/update-reset.sh +++ b/Library/Homebrew/cmd/update-reset.sh @@ -1,4 +1,4 @@ -#: * `update-reset` [ ...] +#: * `update-reset` [ ...] #: #: Fetch and reset Homebrew and all tap repositories (or any specified ) using `git`(1) to their latest `origin/HEAD`. #: @@ -33,7 +33,14 @@ homebrew-update-reset() { [[ "${option}" == *d* ]] && HOMEBREW_DEBUG=1 ;; *) - REPOS+=("${option}") + if [[ -d "${option}/.git" ]] + then + REPOS+=("${option}") + else + onoe "${option} is not a Git repository!" + brew help update-reset + exit 1 + fi ;; esac done From e2082f0c53515f39ae7643bf7256ccf2ee9ccd6c Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Tue, 28 Feb 2023 21:47:08 +0800 Subject: [PATCH 4/4] workflows/tests: avoid resetting `homebrew/bundle` This command was being called with the wrong relative path, so it silently did nothing. Now that `update-reset` errors out from invalid arguments, we know that running `update-reset` here is not needed. --- .github/workflows/tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f1b867f8fd..58cf1913ea 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -103,8 +103,6 @@ jobs: brew tap homebrew/portable-ruby brew tap homebrew/services - brew update-reset Library/Taps/homebrew/homebrew-bundle - # brew style doesn't like world writable directories sudo chmod -R g-w,o-w "$(brew --repo)/Library/Taps"