...

Text file src/github.com/redis/go-redis/v9/scripts/release.sh

Documentation: github.com/redis/go-redis/v9/scripts

     1#!/bin/bash
     2
     3set -e
     4
     5help() {
     6    cat <<- EOF
     7Usage: TAG=tag $0
     8
     9Updates version in go.mod files and pushes a new brash to GitHub.
    10
    11VARIABLES:
    12  TAG        git tag, for example, v1.0.0
    13EOF
    14    exit 0
    15}
    16
    17if [ -z "$TAG" ]
    18then
    19    printf "TAG is required\n\n"
    20    help
    21fi
    22
    23TAG_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
    24if ! [[ "${TAG}" =~ ${TAG_REGEX} ]]; then
    25    printf "TAG is not valid: ${TAG}\n\n"
    26    exit 1
    27fi
    28
    29TAG_FOUND=`git tag --list ${TAG}`
    30if [[ ${TAG_FOUND} = ${TAG} ]] ; then
    31    printf "tag ${TAG} already exists\n\n"
    32    exit 1
    33fi
    34
    35if ! git diff --quiet
    36then
    37    printf "working tree is not clean\n\n"
    38    git status
    39    exit 1
    40fi
    41
    42git checkout master
    43
    44PACKAGE_DIRS=$(find . -mindepth 2 -type f -name 'go.mod' -exec dirname {} \; \
    45  | sed 's/^\.\///' \
    46  | sort)
    47
    48for dir in $PACKAGE_DIRS
    49do
    50    printf "${dir}: go get -u && go mod tidy\n"
    51    #(cd ./${dir} && go get -u && go mod tidy -compat=1.18)
    52done
    53
    54for dir in $PACKAGE_DIRS
    55do
    56    sed --in-place \
    57        "s/redis\/go-redis\([^ ]*\) v.*/redis\/go-redis\1 ${TAG}/" "${dir}/go.mod"
    58    #(cd ./${dir} && go get -u && go mod tidy -compat=1.18)
    59    (cd ./${dir} && go mod tidy -compat=1.18)
    60done
    61
    62sed --in-place "s/\(return \)\"[^\"]*\"/\1\"${TAG#v}\"/" ./version.go
    63
    64git checkout -b release/${TAG} master
    65git add -u
    66git commit -m "chore: release $TAG (release.sh)"
    67git push origin release/${TAG}

View as plain text