summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xbuild-apk.sh4
-rwxr-xr-xbuild.sh4
-rwxr-xr-xenv.sh2
-rwxr-xr-xprepare-release.sh (renamed from prepare_release.sh)5
-rwxr-xr-xversion-metadata.sh110
5 files changed, 82 insertions, 43 deletions
diff --git a/build-apk.sh b/build-apk.sh
index 8dd49ceb60..ff06d2ee23 100755
--- a/build-apk.sh
+++ b/build-apk.sh
@@ -79,14 +79,14 @@ popd
function restore_metadata_backups() {
pushd "$SCRIPT_DIR"
- ./version-metadata.sh restore-backup --only-android
+ ./version-metadata.sh restore-backup --android
mv Cargo.lock.bak Cargo.lock || true
popd
}
trap 'restore_metadata_backups' EXIT
cp Cargo.lock Cargo.lock.bak
-./version-metadata.sh inject $PRODUCT_VERSION --only-android
+./version-metadata.sh inject $PRODUCT_VERSION --android
./wireguard/build-wireguard-go.sh --android $EXTRA_WGGO_ARGS
diff --git a/build.sh b/build.sh
index efd97ed67e..2217027fc1 100755
--- a/build.sh
+++ b/build.sh
@@ -110,7 +110,7 @@ echo "Building Mullvad VPN $PRODUCT_VERSION"
function restore_metadata_backups() {
pushd "$SCRIPT_DIR"
echo "Restoring version metadata files..."
- ./version-metadata.sh restore-backup
+ ./version-metadata.sh restore-backup --desktop
mv Cargo.lock.bak Cargo.lock || true
popd
}
@@ -118,7 +118,7 @@ trap 'restore_metadata_backups' EXIT
echo "Updating version in metadata files..."
cp Cargo.lock Cargo.lock.bak
-./version-metadata.sh inject $PRODUCT_VERSION
+./version-metadata.sh inject $PRODUCT_VERSION --desktop
################################################################################
diff --git a/env.sh b/env.sh
index ea60f3781b..a1b9ae59ef 100755
--- a/env.sh
+++ b/env.sh
@@ -1,3 +1,5 @@
+# shellcheck shell=bash
+#
# Sourcing this file should set up the environment to build the app
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
diff --git a/prepare_release.sh b/prepare-release.sh
index 8d7d87cac9..77d093593a 100755
--- a/prepare_release.sh
+++ b/prepare-release.sh
@@ -8,14 +8,17 @@ set -eu
PRODUCT_VERSION=""
ANDROID="false"
DESKTOP="false"
+VERSION_METADATA_ARGS=""
for argument in "$@"; do
case "$argument" in
"--android")
ANDROID="true"
+ VERSION_METADATA_ARGS+="--android "
;;
"--desktop")
DESKTOP="true"
+ VERSION_METADATA_ARGS+="--desktop "
;;
-*)
echo "Unknown option \"$argument\""
@@ -51,7 +54,7 @@ if [[ $(grep "^## \\[$PRODUCT_VERSION\\] - " CHANGELOG.md) == "" ]]; then
fi
echo "Updating version in metadata files..."
-./version-metadata.sh inject $PRODUCT_VERSION
+./version-metadata.sh inject $PRODUCT_VERSION $VERSION_METADATA_ARGS
echo "Syncing Cargo.lock with new version numbers"
source env.sh
diff --git a/version-metadata.sh b/version-metadata.sh
index 5bd38169c5..1874d1de53 100755
--- a/version-metadata.sh
+++ b/version-metadata.sh
@@ -8,9 +8,6 @@ set -eu
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
-COMMAND="$1"
-shift 1
-
INCLUDED_CRATES=(
"mullvad-daemon"
"mullvad-cli"
@@ -21,24 +18,56 @@ INCLUDED_CRATES=(
)
MANIFESTS=( "${INCLUDED_CRATES[@]/%//Cargo.toml}" )
+# Parse arguments
+COMMAND="$1"
+shift 1
+
+PRODUCT_VERSION=""
+ANDROID="false"
+DESKTOP="false"
+for argument in "$@"; do
+ case "$argument" in
+ "--android")
+ ANDROID="true"
+ ;;
+ "--desktop")
+ DESKTOP="true"
+ ;;
+ -*)
+ echo >&2 "Unknown option \"$argument\""
+ exit 1
+ ;;
+ *)
+ PRODUCT_VERSION="$argument"
+ ;;
+ esac
+done
+
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>]"
+ if [[ ! $PRODUCT_VERSION =~ $VERSION_REGEX ]]; then
+ echo >&2 "Invalid version format. Please specify version as:"
+ echo >&2 "<YEAR>.<NUMBER>[-beta<NUMBER>]"
return 1
fi
- local semver_version=$(echo "$product_version" | sed -Ee 's/($|-.*)/.0\1/g')
+ local semver_version
+ 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"
- if [[ "${2:-""}" != "--only-android" ]]; then
+ echo "Setting Rust crate versions to $semver_version"
+ # Rust crates
+ sed -i.bak -Ee "s/^version = \"[^\"]+\"\$/version = \"$semver_version\"/g" \
+ "${MANIFESTS[@]}"
+
+ if [[ "$DESKTOP" == "true" ]]; then
+ echo "Setting desktop version to $semver_version"
+
# Electron GUI
cp gui/package.json gui/package.json.bak
cp gui/package-lock.json gui/package-lock.json.bak
@@ -50,26 +79,27 @@ function inject_version {
#define MAJOR_VERSION $semver_major
#define MINOR_VERSION $semver_minor
#define PATCH_VERSION $semver_patch
-#define PRODUCT_VERSION "$product_version"
+#define PRODUCT_VERSION "$PRODUCT_VERSION"
EOF
fi
- # Rust crates
- sed -i.bak -Ee "s/^version = \"[^\"]+\"\$/version = \"$semver_version\"/g" \
- "${MANIFESTS[@]}"
-
- # Android
- if [[ ("$(uname -s)" == "Linux") ]]; then
- local version_year=$(printf "%02d" "${BASH_REMATCH[1]}")
- local version_number=$(printf "%02d" "${BASH_REMATCH[2]}")
+ if [[ "$ANDROID" == "true" ]]; then
+ # Android
+ local version_year
+ version_year=$(printf "%02d" "${BASH_REMATCH[1]}")
+ local version_number
+ 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 version_beta
+ version_beta=$(printf "%02d" "${BASH_REMATCH[4]:-99}")
local android_version_code=${version_year}${version_number}${version_patch}${version_beta}
+ echo "Setting Android versionName to $PRODUCT_VERSION and versionCode to $android_version_code"
+
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" \
+ sed -i -Ee "s/versionName \"[^\"]+\"/versionName \"$PRODUCT_VERSION\"/g" \
android/build.gradle
fi
}
@@ -77,20 +107,22 @@ EOF
function restore_backup {
set +e
- if [[ "${1:-""}" != "--only-android" ]]; then
+ # Rust crates
+ for toml in "${MANIFESTS[@]}"; do
+ mv "${toml}.bak" "${toml}"
+ done
+
+ if [[ "$DESKTOP" == "true" ]]; then
# Electron GUI
mv gui/package.json.bak gui/package.json
mv gui/package-lock.json.bak gui/package-lock.json
# Windows C++
mv dist-assets/windows/version.h.bak dist-assets/windows/version.h
+
fi
- # Rust crates
- for toml in "${MANIFESTS[@]}"; do
- mv "${toml}.bak" "${toml}"
- done
- # Android
- if [[ ("$(uname -s)" == "Linux") ]]; then
+ if [[ "$ANDROID" == "true" ]]; then
+ # Android
mv android/build.gradle.bak android/build.gradle
fi
set -e
@@ -99,20 +131,22 @@ function restore_backup {
function delete_backup {
set +e
- if [[ "${1:-""}" != "--only-android" ]]; then
+ # Rust crates
+ for toml in "${MANIFESTS[@]}"; do
+ rm "${toml}.bak"
+ done
+
+ if [[ "$DESKTOP" == "true" ]]; then
# Electron GUI
rm gui/package.json.bak
rm gui/package-lock.json.bak
# Windows C++
rm dist-assets/windows/version.h.bak
+
fi
- # Rust crates
- for toml in "${MANIFESTS[@]}"; do
- rm "${toml}.bak"
- done
- # Android
- if [[ ("$(uname -s)" == "Linux") ]]; then
+ if [[ "$ANDROID" == "true" ]]; then
+ # Android
rm android/build.gradle.bak
fi
set -e
@@ -120,16 +154,16 @@ function delete_backup {
case "$COMMAND" in
"inject")
- inject_version "$@"
+ inject_version
;;
"restore-backup")
- restore_backup "$@"
+ restore_backup
;;
"delete-backup")
- delete_backup "$@"
+ delete_backup
;;
*)
- echo "Invalid command"
+ echo >&2 "Invalid command"
exit 1
;;
esac