summaryrefslogtreecommitdiff
path: root/.release
blob: 5a016abab4fb7d0769dfcdebb82ed5ed88185140 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash

declare newversion
declare current_version
declare sure


current_version="$(grep -E  version ./httpretty/version.py | sed 's,version *= *.\(\([0-9]*[.]*\)\{3\,4\}\).,\1,g')"
echo -en "The current version is \033[1;33m$current_version\033[0m, type a new one\n\033[1;32mnew version:\033[0m "
read -r newversion


function find_files () {
    for name in $(find . -name 'README.rst' -or -name version.py -or -name conf.py | grep -v '\(\.venv\|build\)[/]'); do
        echo "${name}"
    done

}

function update_files (){
    find_files | xargs gsed -i "s,$current_version,$newversion,g"
}
function revert_files (){
    find_files | xargs gsed -i "s,$newversion,$current_version,g"
}

echo -en "\033[A\033[A\rI will make a new commit named \033[1;33m'New release $newversion'\033[0m\n"
echo -en "Are you sure? [\033[1;32myes\033[0m or \033[1;31mno\033[0m]\n"
read -r sure


if [ "${sure}" == "yes" ]; then
    echo "updating relevant files with new version..."
    if update_files; then
        echo "committing and pushing changes..."
        echo -en "New release: \033[1;32m$newversion\033[0m\n"
        if git add -f $(find_files); then
            if git commit $(find_files) -m "New release: $newversion"; then
                if git push; then
                    echo "creating tag ${newversion}..."
                    if git tag "${newversion}"; then
                        echo "pushing tag ${newversion}..."
                        git push --tags
                    else
                        echo "failed to create tag ${newversion}"
                        echo "you might want to revert the last commit and check what happened"
                        exit 1
                    fi
                else
                    echo "failed to push, skipping release and reverting changes"
                    revert_files
                    exit 1
                fi
            else
                echo "failed to commit, skipping release and reverting changes"
                revert_files
                exit 1
            fi
        else
            echo "no files to git add, skipping release"
            exit 1
        fi;
    else
        echo "no files were updated, skipping release"
        exit 1
    fi
else
    echo "kthankxbye"
fi