12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env bash
- if [ $# -ne 2 ]; then
- echo "Parameter exception, please execute in the format of $0 [directory] [version number]"
- echo "PS:$0 ./ v2.4.0"
- exit 1
- fi
- if [ ! -d "$1" ]; then
- echo "Error: Directory does not exist"
- exit 1
- fi
- if [[ "$2" != v* ]]; then
- echo "Error: Version number must start with v"
- exit 1
- fi
- workdir=.
- newVersion=$2
- echo "Prepare to replace the GF library version numbers in all go.mod files in the ${workdir} directory with ${newVersion}"
- # check find command support or not
- output=$(find "${workdir}" -name go.mod 2>&1)
- if [[ $? -ne 0 ]]; then
- echo "Error: please use bash or zsh to run!"
- exit 1
- fi
- if [[ true ]]; then
- echo "package gf" > version.go
- echo "" >> version.go
- echo "const (" >> version.go
- echo -e "\t// VERSION is the current GoFrame version." >> version.go
- echo -e "\tVERSION = \"${newVersion}\"" >> version.go
- echo ")" >> version.go
- fi
- if [ -f "go.work" ]; then
- mv go.work go.work.version.bak
- echo "Back up the 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
- if [ $goModPath = "./cmd/gf" ]; then
- mv go.work go.work.version.bak
- go mod edit -replace github.com/gogf/gf/v2=../../
- go mod edit -replace github.com/gogf/gf/contrib/drivers/clickhouse/v2=../../contrib/drivers/clickhouse
- go mod edit -replace github.com/gogf/gf/contrib/drivers/mssql/v2=../../contrib/drivers/mssql
- go mod edit -replace github.com/gogf/gf/contrib/drivers/mysql/v2=../../contrib/drivers/mysql
- go mod edit -replace github.com/gogf/gf/contrib/drivers/oracle/v2=../../contrib/drivers/oracle
- go mod edit -replace github.com/gogf/gf/contrib/drivers/pgsql/v2=../../contrib/drivers/pgsql
- go mod edit -replace github.com/gogf/gf/contrib/drivers/sqlite/v2=../../contrib/drivers/sqlite
- # else
- # cd -
- # continue 1
- fi
- go mod tidy
- # Upgrading only GF related libraries, sometimes even if a version number is specified, it may not be possible to successfully upgrade. Please confirm before submitting the code
- 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
- if [ $goModPath = "./cmd/gf" ]; then
- go mod edit -dropreplace github.com/gogf/gf/v2
- go mod edit -dropreplace github.com/gogf/gf/contrib/drivers/clickhouse/v2
- go mod edit -dropreplace github.com/gogf/gf/contrib/drivers/mssql/v2
- go mod edit -dropreplace github.com/gogf/gf/contrib/drivers/mysql/v2
- go mod edit -dropreplace github.com/gogf/gf/contrib/drivers/oracle/v2
- go mod edit -dropreplace github.com/gogf/gf/contrib/drivers/pgsql/v2
- go mod edit -dropreplace github.com/gogf/gf/contrib/drivers/sqlite/v2
- mv go.work.version.bak go.work
- fi
- cd -
- done
- if [ -f "go.work.version.bak" ]; then
- mv go.work.version.bak go.work
- echo "Restore the go.work file"
- fi
|