blob: f6803ea4240d26caa9d3c8fdb9f215bb58ef586d (
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
111
112
113
114
115
116
117
118
119
120
|
#!/usr/bin/env bash
#
# Can inject correctly formatted version strings/numbers in all the various
# project metadata files. Can also back them up and restore them.
set -eu
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
function inject_version {
# Regex that only matches valid Mullvad VPN versions. It also captures
# relevant values into capture groups, read out via BASH_REMATCH[x].
local VERSION_REGEX="^20([0-9]{2})\.([1-9][0-9]?)(-beta([1-9][0-9]?))?(-dev-[0-9a-f]+)?$"
local product_version="$1"
if [[ ! $product_version =~ $VERSION_REGEX ]]; then
echo "Invalid version format. Please specify version as:"
echo "<YEAR>.<NUMBER>[-beta<NUMBER>]"
return 1
fi
local semver_version=$(echo "$product_version" | sed -Ee 's/($|-.*)/.0\1/g')
local semver_major="20${BASH_REMATCH[1]}"
local semver_minor=${BASH_REMATCH[2]}
local semver_patch="0"
# Electron GUI
cp gui/package.json gui/package.json.bak
cp gui/package-lock.json gui/package-lock.json.bak
(cd gui/ && npm version "$semver_version" --no-git-tag-version --allow-same-version)
# Rust crates
sed -i.bak -Ee "s/^version = \"[^\"]+\"\$/version = \"$semver_version\"/g" \
mullvad-daemon/Cargo.toml \
mullvad-cli/Cargo.toml \
mullvad-problem-report/Cargo.toml \
mullvad-setup/Cargo.toml \
talpid-openvpn-plugin/Cargo.toml
# Windows C++
cp dist-assets/windows/version.h dist-assets/windows/version.h.bak
cat <<EOF > dist-assets/windows/version.h
#define MAJOR_VERSION $semver_major
#define MINOR_VERSION $semver_minor
#define PATCH_VERSION $semver_patch
#define PRODUCT_VERSION "$product_version"
EOF
# Android
if [[ ("$(uname -s)" == "Linux") ]]; then
local version_year=$(printf "%02d" "${BASH_REMATCH[1]}")
local version_number=$(printf "%02d" "${BASH_REMATCH[2]}")
local version_patch="00" # Not used for now.
local version_beta=$(printf "%02d" "${BASH_REMATCH[4]:-99}")
local android_version_code=${version_year}${version_number}${version_patch}${version_beta}
cp android/build.gradle android/build.gradle.bak
sed -i -Ee "s/versionCode [0-9]+/versionCode $android_version_code/g" \
android/build.gradle
sed -i -Ee "s/versionName \"[^\"]+\"/versionName \"$product_version\"/g" \
android/build.gradle
fi
}
function restore_backup {
set +e
# Electron GUI
mv gui/package.json.bak gui/package.json
mv gui/package-lock.json.bak gui/package-lock.json
# Rust crates
mv mullvad-daemon/Cargo.toml.bak mullvad-daemon/Cargo.toml
mv mullvad-cli/Cargo.toml.bak mullvad-cli/Cargo.toml
mv mullvad-problem-report/Cargo.toml.bak mullvad-problem-report/Cargo.toml
mv mullvad-setup/Cargo.toml.bak mullvad-setup/Cargo.toml
mv talpid-openvpn-plugin/Cargo.toml.bak talpid-openvpn-plugin/Cargo.toml
# Windows C++
mv dist-assets/windows/version.h.bak dist-assets/windows/version.h
# Android
if [[ ("$(uname -s)" == "Linux") ]]; then
mv android/build.gradle.bak android/build.gradle
fi
set -e
}
function delete_backup {
set +e
# Electron GUI
rm gui/package.json.bak
rm gui/package-lock.json.bak
# Rust crates
rm mullvad-daemon/Cargo.toml.bak
rm mullvad-cli/Cargo.toml.bak
rm mullvad-problem-report/Cargo.toml.bak
rm mullvad-setup/Cargo.toml.bak
rm talpid-openvpn-plugin/Cargo.toml.bak
# Windows C++
rm dist-assets/windows/version.h.bak
# Android
if [[ ("$(uname -s)" == "Linux") ]]; then
rm android/build.gradle.bak
fi
set -e
}
case "$1" in
"inject")
inject_version "$2"
;;
"restore-backup")
restore_backup
;;
"delete-backup")
delete_backup
;;
*)
echo "Invalid command"
exit 1
;;
esac
|