diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2020-03-18 17:53:12 +0100 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2020-03-19 10:35:45 +0100 |
| commit | 03640dc5eb7b460a051d8fb68324da4c2aa89764 (patch) | |
| tree | c766c11430a326c7c523670d7b7f31e8fb18acaa | |
| parent | cc957e4a4c8b22ea3c81e9581d163d6b7957166d (diff) | |
| download | mullvadvpn-03640dc5eb7b460a051d8fb68324da4c2aa89764.tar.xz mullvadvpn-03640dc5eb7b460a051d8fb68324da4c2aa89764.zip | |
Refactor out bash code to function
| -rwxr-xr-x | version_metadata.sh | 160 |
1 files changed, 86 insertions, 74 deletions
diff --git a/version_metadata.sh b/version_metadata.sh index 007030deea..f2bed4f8a2 100755 --- a/version_metadata.sh +++ b/version_metadata.sh @@ -8,94 +8,106 @@ set -eu SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPT_DIR" -# Regex that only matches valid Mullvad VPN versions. It also captures -# relevant values into capture groups, read out via BASH_REMATCH[x]. -VERSION_REGEX="^20([0-9]{2})\.([1-9][0-9]?)(-beta([1-9][0-9]?))?(-dev-[0-9a-f]+)?$" +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" -case "$1" in - "inject") - PRODUCT_VERSION=$2 - if [[ ! $PRODUCT_VERSION =~ $VERSION_REGEX ]]; then - echo "Invalid version format. Please specify version as:" - echo "<YEAR>.<NUMBER>[-beta<NUMBER>]" - exit 1 - fi - - version_year=$(printf "%02d" "${BASH_REMATCH[1]}") - version_number=$(printf "%02d" "${BASH_REMATCH[2]}") - version_patch="00" # Not used for now. - version_beta=$(printf "%02d" "${BASH_REMATCH[4]:-99}") - android_version_code=${version_year}${version_number}${version_patch}${version_beta} + if [[ ! $product_version =~ $VERSION_REGEX ]]; then + echo "Invalid version format. Please specify version as:" + echo "<YEAR>.<NUMBER>[-beta<NUMBER>]" + return 1 + fi - semver_version=$(echo "$PRODUCT_VERSION" | sed -Ee 's/($|-.*)/.0\1/g') - semver_major="20${BASH_REMATCH[1]}" - semver_minor=${BASH_REMATCH[2]} - semver_patch="0" + 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) + # 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 + # 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 + # 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" +#define PRODUCT_VERSION "$product_version" EOF - # Android - if [[ ("$(uname -s)" == "Linux") ]]; then - 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 + # 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") - # 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 + restore_backup ;; "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 + delete_backup ;; *) echo "Invalid command" |
