[dev] Monorepo: update git post-checkout hook (feedback) (#51471)

This commit is contained in:
Vladimir Reznichenko 2024-09-18 11:10:11 +02:00 committed by Christopher Allford
parent ade1326139
commit ba946ba5f2
No known key found for this signature in database
GPG Key ID: 80E44C778F08A88E
2 changed files with 15 additions and 18 deletions

View File

@ -1,35 +1,30 @@
#!/usr/bin/env bash #!/usr/bin/env bash
. "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/_/husky.sh"
# '1' is branch # The hook documentation: https://git-scm.com/docs/githooks.html#_post_checkout
CHECKOUT_TYPE=$3 CHECKOUT_TYPE=$3
redColoured='\033[0;31m' HEAD_NEW=$2
HEAD_PREVIOUS=$1
whiteColoured='\033[0m' whiteColoured='\033[0m'
orangeColoured='\033[1;33m'
# '1' is a branch checkout
if [ "$CHECKOUT_TYPE" = '1' ]; then if [ "$CHECKOUT_TYPE" = '1' ]; then
canUpdateDependencies='no'
# Prompt about pnpm versions mismatch when switching between branches. # Prompt about pnpm versions mismatch when switching between branches.
currentPnpmVersion=$( ( command -v pnpm > /dev/null && pnpm -v ) || echo 'n/a' ) currentPnpmVersion=$( ( command -v pnpm > /dev/null && pnpm -v 2>/dev/null ) || echo 'n/a' )
targetPnpmVersion=$( grep packageManager package.json | sed -nr 's/.+packageManager.+pnpm@([[:digit:].]+).+/\1/p' ) targetPnpmVersion=$( grep packageManager package.json | sed -nr 's/.+packageManager.+pnpm@([[:digit:].]+).+/\1/p' )
if [ "$currentPnpmVersion" != "$targetPnpmVersion" ]; then if [ "$currentPnpmVersion" != "$targetPnpmVersion" ]; then
printf "${redColoured}pnpm versions mismatch: in use '$currentPnpmVersion', needed '$targetPnpmVersion'. Here some hints how to solve this:\n" printf "${orangeColoured}pnpm versions mismatch: in use '$currentPnpmVersion', needed '$targetPnpmVersion'. If you are working on something in this branch, here are some hints on how to solve this:\n"
printf "${redColoured}* actualize environment: 'nvm use && pnpm -v' (the most common case)\n" printf "${orangeColoured}* actualize environment: 'nvm use && pnpm -v' (the most common case)\n"
printf "${redColoured}* install: 'npm install -g pnpm@$targetPnpmVersion'\n" printf "${orangeColoured}* install: 'npm install -g pnpm@$targetPnpmVersion'\n"
else
canUpdateDependencies='yes'
fi fi
# Auto-refresh dependencies when switching between branches. # Auto-refresh dependencies when switching between branches.
changedManifests=$( ( git diff --name-only HEAD ORIG_HEAD | grep -E '(package.json|pnpm-lock.yaml|pnpm-workspace.yaml|composer.json|composer.lock)$' ) || echo '' ) changedManifests=$( ( git diff --name-only $HEAD_NEW $HEAD_PREVIOUS | grep -E '(package.json|pnpm-lock.yaml|pnpm-workspace.yaml|composer.json|composer.lock)$' ) || echo '' )
if [ -n "$changedManifests" ]; then if [ -n "$changedManifests" ]; then
printf "${whiteColoured}It was a change in the following file(s) - refreshing dependencies:\n" printf "${whiteColoured}The following file(s) in the new branch differs from the original one, dependencies might need to be refreshed:\n"
printf "${whiteColoured} %s\n" $changedManifests printf "${whiteColoured} %s\n" $changedManifests
printf "${orangeColoured}If you are working on something in this branch, ensure to refresh dependencies with 'pnpm install --frozen-lockfile'\n"
if [ "$canUpdateDependencies" = 'yes' ]; then
pnpm install --frozen-lockfile
else
printf "${redColoured}Skipping dependencies refresh. Please actualize pnpm version and execute 'pnpm install --frozen-lockfile' manually.\n"
fi
fi fi
fi fi

View File

@ -1,6 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
. "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/_/husky.sh"
# The hook documentation: https://git-scm.com/docs/githooks.html#_post_merge
changedManifests=$( ( git diff --name-only HEAD ORIG_HEAD | grep -E '(package.json|pnpm-lock.yaml|pnpm-workspace.yaml|composer.json|composer.lock)$' ) || echo '' ) changedManifests=$( ( git diff --name-only HEAD ORIG_HEAD | grep -E '(package.json|pnpm-lock.yaml|pnpm-workspace.yaml|composer.json|composer.lock)$' ) || echo '' )
if [ -n "$changedManifests" ]; then if [ -n "$changedManifests" ]; then
printf "It was a change in the following file(s) - refreshing dependencies:\n" printf "It was a change in the following file(s) - refreshing dependencies:\n"