diff options
| -rwxr-xr-x | build-apk.sh | 4 | ||||
| -rwxr-xr-x | build.sh | 4 | ||||
| -rwxr-xr-x | env.sh | 2 | ||||
| -rwxr-xr-x | prepare-release.sh (renamed from prepare_release.sh) | 5 | ||||
| -rwxr-xr-x | version-metadata.sh | 110 |
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 @@ -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 ################################################################################ @@ -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 |
