diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2020-03-18 18:02:43 +0100 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2020-03-19 10:35:45 +0100 |
| commit | 3f561d57da4471ee2c641b51b27a4b0354014e68 (patch) | |
| tree | fe674616c9404c37f0fb895061aefc58bf40f9f2 /version-metadata.sh | |
| parent | 03640dc5eb7b460a051d8fb68324da4c2aa89764 (diff) | |
| download | mullvadvpn-3f561d57da4471ee2c641b51b27a4b0354014e68.tar.xz mullvadvpn-3f561d57da4471ee2c641b51b27a4b0354014e68.zip | |
Rename version_metadata -> version-metadata
Diffstat (limited to 'version-metadata.sh')
| -rwxr-xr-x | version-metadata.sh | 116 |
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 |
