mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
51 lines
1.4 KiB
Bash
Executable File
51 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Check if the number of parameters is 2
|
|
if [ $# -ne 2 ]; then
|
|
echo "Invalid parameters, please execute in format: version.sh [directory] [version]"
|
|
echo "Example: version.sh ./contrib v1.0.0"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if the first parameter is a directory and exists
|
|
if [ ! -d "$1" ]; then
|
|
echo "Error: Directory does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if the second parameter starts with 'v'
|
|
if [[ "$2" != v* ]]; then
|
|
echo "Error: Version number does not start with 'v'"
|
|
exit 1
|
|
fi
|
|
|
|
workdir=$1
|
|
newVersion=$2
|
|
echo "Preparing to replace version numbers in all go.mod files under ${workdir} directory to ${newVersion}"
|
|
|
|
|
|
# Check if file exists
|
|
if [ -f "go.work" ]; then
|
|
# File exists, rename it
|
|
mv go.work go.work.${newVersion}
|
|
echo "Backup go.work file to avoid affecting the upgrade"
|
|
fi
|
|
|
|
for file in `find ${workdir} -name go.mod`; do
|
|
goModPath=$(dirname $file)
|
|
echo ""
|
|
echo "processing dir: $goModPath"
|
|
cd $goModPath
|
|
go mod tidy
|
|
go list -f "{{if and (not .Indirect) (not .Main)}}{{.Path}}@${newVersion}{{end}}" -m all | grep "^github.com/gogf/gf"
|
|
go list -f "{{if and (not .Indirect) (not .Main)}}{{.Path}}@${newVersion}{{end}}" -m all | grep "^github.com/gogf/gf" | xargs -L1 go get -v
|
|
go mod tidy
|
|
cd -
|
|
done
|
|
|
|
if [ -f "go.work.${newVersion}" ]; then
|
|
# File exists, rename it back
|
|
mv go.work.${newVersion} go.work
|
|
echo "Restore go.work file"
|
|
fi
|