summaryrefslogtreecommitdiffhomepage
path: root/android/scripts/prepare-release.sh
blob: cc3983d67cd184860e6fb3e1dd0a98b46db88937 (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
70
71
72
73
74
75
76
77
78
#!/usr/bin/env bash

# This script prepares for a release. Run it with the release version as the first argument and it
# will update version numbers, commit and add a signed tag.

set -eu

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR/../.."

for argument in "$@"; do
    case "$argument" in
        -*)
            echo "Unknown option \"$argument\""
            exit 1
            ;;
        *)
            PRODUCT_VERSION="$argument"
            ;;
    esac
done

if [[ -z ${PRODUCT_VERSION+x} ]]; then
    echo "Please give the release version as an argument to this script."
    echo "For example: '2018.1-beta3' for a beta release, or '2018.6' for a stable one."
    exit 1
fi

if [[ -n "$(git status --porcelain)" ]]; then
    echo "Dirty working directory! Will not accept that for an official release."
    exit 1
fi

if [[ $PRODUCT_VERSION != *"alpha"* &&
    $(grep "^## \\[android/$PRODUCT_VERSION\\] - " android/CHANGELOG.md) == "" ]]; then

    echo "It looks like you did not add $PRODUCT_VERSION to the changelog?"
    echo "Please make sure the changelog is up to date and correct before you proceed."
    exit 1
fi

echo "### Generating relay list ###"
mkdir -p dist-assets/relays
cargo run -q -p mullvad-api --bin relay_list > dist-assets/relays/relays.json
if [[ ! -f dist-assets/relays/relays.json ]]; then
    echo "Error: Relay list missing."
    exit 1
elif test ! -n "$(git status --porcelain | grep dist-assets/relays/)"; then
    echo "Relay list unchanged, skipping commit."
else
    git add dist-assets/relays/relays.json
    git commit -S -m "Add relay list to bundle with $PRODUCT_VERSION"
fi
echo ""

echo "### Generating version information ###"
echo "$PRODUCT_VERSION" > dist-assets/android-version-name.txt
ANDROID_VERSION="$PRODUCT_VERSION" cargo run -q --bin mullvad-version versionCode > \
    dist-assets/android-version-code.txt
if git diff --quiet dist-assets/android-version-*; then
    echo "Error: Version information unchanged."
    exit 1
fi
git commit -S -m "Update android app version to $PRODUCT_VERSION" \
    dist-assets/android-version-name.txt \
    dist-assets/android-version-code.txt
echo ""

echo "### Tagging release as android/$PRODUCT_VERSION ###"
git tag -s "android/$PRODUCT_VERSION" -m "android/$PRODUCT_VERSION"
echo ""

echo "===================================================="
echo "| DONE preparing for a release!                    |"
echo "|    Now push the tag created by this script       |"
echo "|    after you have verified it is correct:        |"
echo "|        $ git push origin android/$PRODUCT_VERSION "
echo "===================================================="