From 3976754930b02f81295d88f4b19054598ffcc768 Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Wed, 18 Sep 2024 14:32:09 +0200 Subject: [PATCH] Update update_dep.sh Based on the experience of performing dependency bumps, some minor improvements are made to the script to make it conform to our current dependency bump procedure, listed as followed: - print out the dependency's version before and after the bump - check if the dependency is fully indirect - check if all dependencies across all go mod files have the same pinned version respectively after bumping a dependency Signed-off-by: Chun-Hung Tseng --- scripts/update_dep.sh | 54 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/scripts/update_dep.sh b/scripts/update_dep.sh index e76ecaff5c5a..d31d3345c4f5 100755 --- a/scripts/update_dep.sh +++ b/scripts/update_dep.sh @@ -1,11 +1,11 @@ #!/bin/bash # Usage: -# ./scripts/update_dep.sh module version -# or ./scripts/update_dep.sh module +# ./scripts/update_dep.sh should_force_upgrade module version +# or ./scripts/update_dep.sh should_force_upgrade module # e.g. -# ./scripts/update_dep.sh github.com/golang/groupcache -# ./scripts/update_dep.sh github.com/soheilhy/cmux v0.1.5 +# ./scripts/update_dep.sh false github.com/golang/groupcache +# ./scripts/update_dep.sh false github.com/soheilhy/cmux v0.1.5 # # Updates version of given dependency in all the modules that depend on the mod. @@ -13,13 +13,38 @@ set -euo pipefail source ./scripts/test_lib.sh -mod="$1" -ver="$2" +if [ "$#" -ne 3 ]; then + echo "Illegal number of parameters" + exit 1 +fi -function maybe_update_module { +should_force_upgrade="$1" +mod="$2" +ver="$3" + +function print_current_dep_version { + echo "${mod} version in all go mod files" + grep --exclude-dir=.git --include=\*.mod -Ri "${mod}" | grep -v sum + printf "\n\n" +} + +function is_fully_indirect { + tmp=$(print_current_dep_version) + # Check if all lines end with "// indirect" + + # if grep found nothing, the error code will be non-zero + if grep --exclude-dir=.git --include=\*.mod -Ri -q "^.*${mod} v.*// indirect$"; then + echo "Fully indirect, we will terminate the script" + exit 1 + else + echo "Not fully indirect, we will perform dependency bump" + fi +} + +function update_module { run go mod tidy - deps=$(go list -f '{{if not .Indirect}}{{if .Version}}{{.Path}},{{.Version}}{{end}}{{end}}' -m all) + deps=$(go list -f '{{if .Version}}{{.Path}},{{.Version}}{{end}}' -m all) if [[ "$deps" == *"${mod}"* ]]; then if [ -z "${ver}" ]; then run go get "${mod}" @@ -27,7 +52,14 @@ function maybe_update_module { run go get "${mod}@${ver}" fi fi - } +} + +print_current_dep_version +if [ "$should_force_upgrade" = false ] ; then + is_fully_indirect +fi +run_for_modules update_module +print_current_dep_version -go mod tidy -run_for_modules maybe_update_module +# check all dependencies across all go mod files have the same pinned version respectively +PASSES="dep" ./scripts/test.sh