summaryrefslogtreecommitdiffhomepage
path: root/version-metadata.sh
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2020-03-18 18:02:43 +0100
committerLinus Färnstrand <linus@mullvad.net>2020-03-19 10:35:45 +0100
commit3f561d57da4471ee2c641b51b27a4b0354014e68 (patch)
treefe674616c9404c37f0fb895061aefc58bf40f9f2 /version-metadata.sh
parent03640dc5eb7b460a051d8fb68324da4c2aa89764 (diff)
downloadmullvadvpn-3f561d57da4471ee2c641b51b27a4b0354014e68.tar.xz
mullvadvpn-3f561d57da4471ee2c641b51b27a4b0354014e68.zip
Rename version_metadata -> version-metadata
Diffstat (limited to 'version-metadata.sh')
-rwxr-xr-xversion-metadata.sh116
1 files changed, 116 insertions, 0 deletions
diff --git a/version-metadata.sh b/version-metadata.sh
new file mode 100755
index 0000000000..f2bed4f8a2
--- /dev/null
+++ b/version-metadata.sh
@@ -0,0 +1,116 @@
+#!/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 {
+ # Electron GUI
+ mv gui/package.json.bak gui/package.json || true
+ mv gui/package-lock.json.bak gui/package-lock.json || true
+ # Rust crates
+ mv mullvad-daemon/Cargo.toml.bak mullvad-daemon/Cargo.toml || true
+ mv mullvad-cli/Cargo.toml.bak mullvad-cli/Cargo.toml || true
+ mv mullvad-problem-report/Cargo.toml.bak mullvad-problem-report/Cargo.toml || true
+ mv mullvad-setup/Cargo.toml.bak mullvad-setup/Cargo.toml || true
+ mv talpid-openvpn-plugin/Cargo.toml.bak talpid-openvpn-plugin/Cargo.toml || true
+ # Windows C++
+ mv dist-assets/windows/version.h.bak dist-assets/windows/version.h || true
+ # Android
+ if [[ ("$(uname -s)" == "Linux") ]]; then
+ mv android/build.gradle.bak android/build.gradle || true
+ fi
+}
+
+function delete_backup {
+ # Electron GUI
+ rm gui/package.json.bak || true
+ rm gui/package-lock.json.bak || true
+ # Rust crates
+ rm mullvad-daemon/Cargo.toml.bak || true
+ rm mullvad-cli/Cargo.toml.bak || true
+ rm mullvad-problem-report/Cargo.toml.bak || true
+ rm mullvad-setup/Cargo.toml.bak || true
+ rm talpid-openvpn-plugin/Cargo.toml.bak || true
+ # Windows C++
+ rm dist-assets/windows/version.h.bak || true
+ # Android
+ if [[ ("$(uname -s)" == "Linux") ]]; then
+ rm android/build.gradle.bak || true
+ fi
+}
+
+case "$1" in
+ "inject")
+ inject_version "$2"
+ ;;
+ "restore-backup")
+ restore_backup
+ ;;
+ "delete-backup")
+ delete_backup
+ ;;
+ *)
+ echo "Invalid command"
+ exit 1
+ ;;
+esac