blob: 1a0fc302bb94cbcf4302e68cd52bde0e25d67ccf (
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#!/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, update the changelog, and update copyright year.
set -eu
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
REPO_ROOT=../../../
$REPO_ROOT/scripts/utils/commit-verification
source $REPO_ROOT/scripts/utils/log
source $REPO_ROOT/scripts/utils/print-and-run
for argument in "$@"; do
case "$argument" in
-*)
log_error "Unknown option \"$argument\""
exit 1
;;
*)
PRODUCT_VERSION="$argument"
;;
esac
done
changes_path=$REPO_ROOT/desktop/packages/mullvad-vpn/changes.txt
changelog_path=$REPO_ROOT/CHANGELOG.md
product_version_path=$REPO_ROOT/dist-assets/desktop-product-version.txt
function checks {
if [[ -z ${PRODUCT_VERSION+x} ]]; then
log_error "Please give the release version as an argument to this script."
log_error "For example: '2018.1-beta3' for a beta release, or '2018.6' for a stable one."
exit 1
fi
if ! git diff-index --quiet HEAD --; then
log_error "Dirty working directory! Will not accept that for an official release."
exit 1
fi
if [[ $(grep "CHANGE THIS BEFORE A RELEASE" $changes_path) != "" ]]; then
log_error "It looks like you did not update $changes_path"
exit 1
fi
}
function check_changelog {
previous_version=$(grep -oP '## \[\K[^\]]+' $changelog_path | head -2 | tail -1)
log_header "Changelog since previous release"
git --no-pager diff -U30 "$previous_version"..HEAD -- $changelog_path
log_info "\nThe changelog should only contain changes in the \"Unreleased\" section, unless it's a correction of a previous message. If something is added to the section of an already published release, double check that the change was actually included in that release. Changes can be made in another terminal/editor while this script is waiting for input, press 'r' to reprint the new diff after making changes."
read -r -n 1 -p "Does this look good? (y: yes, q: abort, r: reload): " response
echo ""
if [[ "$response" =~ ^[Yy]$ ]]; then
return
elif [[ "$response" =~ ^[QqAa]$ ]]; then
log_info "Aborting"
exit 1
elif [[ "$response" =~ ^[Rr]$ ]]; then
check_changelog
else
log_error "Invalid response"
check_changelog
fi
}
function update_copyright_year {
$REPO_ROOT/scripts/update-copyright
if ! git diff-index --quiet HEAD --; then
print_and_run git commit -a -S -m "Update copyright year in project files and code"
fi
}
function update_changelog {
sed -i -e "/^## \[Unreleased\]/a \\\n\\n## \[$PRODUCT_VERSION\] - $(date +%F)" $changelog_path
log_info "\nPaused after editing changelog. Make potential edits, then press any key to continue..."
read -r -s -n 1
print_and_run git commit -S -m "Update desktop app changelog with $PRODUCT_VERSION section" \
$changelog_path
}
function update_product_version {
echo "$PRODUCT_VERSION" > $product_version_path
print_and_run git commit -S -m "Update desktop app version to $PRODUCT_VERSION" \
$product_version_path
}
checks
check_changelog
update_changelog
update_copyright_year
update_product_version
log_success "\n================================================="
log_success "| DONE preparing for a release! |"
log_success "| Now verify that everything looks correct |"
log_success "| and then create and push the tag by |"
log_success "| running: |"
log_success "| $ $(dirname "$0")/2-create-and-push-tag"
log_success "================================================="
|