Files
aliasvault/scripts/review-versions.sh
2025-12-01 11:51:21 +01:00

117 lines
5.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Check if running with bash
if [ -z "$BASH_VERSION" ]; then
echo "Error: This script must be run with bash"
echo "Usage: bash $0"
exit 1
fi
# Function to extract version from server AppInfo.cs
get_server_version() {
local major=$(grep "public const int VersionMajor = " ../apps/server/Shared/AliasVault.Shared.Core/AppInfo.cs | tr -d ';' | tr -d ' ' | cut -d'=' -f2)
local minor=$(grep "public const int VersionMinor = " ../apps/server/Shared/AliasVault.Shared.Core/AppInfo.cs | tr -d ';' | tr -d ' ' | cut -d'=' -f2)
local patch=$(grep "public const int VersionPatch = " ../apps/server/Shared/AliasVault.Shared.Core/AppInfo.cs | tr -d ';' | tr -d ' ' | cut -d'=' -f2)
local stage=$(grep "public const string VersionStage = " ../apps/server/Shared/AliasVault.Shared.Core/AppInfo.cs | cut -d'"' -f2)
echo "$major.$minor.$patch$stage"
}
# Function to extract version from browser extension config
get_browser_extension_version() {
grep "version: " ../apps/browser-extension/wxt.config.ts | head -n1 | tr -d '"' | tr -d ',' | tr -d ' ' | cut -d':' -f2
}
# Function to extract version from browser extension package.json
get_browser_extension_package_json_version() {
grep "\"version\": " ../apps/browser-extension/package.json | tr -d '"' | tr -d ',' | tr -d ' ' | cut -d':' -f2
}
# Function to extract version from browser extension AppInfo.ts
get_browser_extension_ts_version() {
grep "public static readonly VERSION = " ../apps/browser-extension/src/utils/AppInfo.ts | tr -d "'" | tr -d ';' | tr -d ' ' | cut -d'=' -f2
}
# Function to extract version from mobile app
get_mobile_app_version() {
grep "\"version\": " ../apps/mobile-app/app.json | tr -d '"' | tr -d ',' | tr -d ' ' | cut -d':' -f2
}
get_mobile_app_ts_version() {
grep "public static readonly VERSION = " ../apps/mobile-app/utils/AppInfo.ts | tr -d "'" | tr -d ';' | tr -d ' ' | cut -d'=' -f2
}
# Function to extract version from iOS app
get_ios_version() {
grep "MARKETING_VERSION = " ../apps/mobile-app/ios/AliasVault.xcodeproj/project.pbxproj | head -n1 | tr -d '"' | tr -d ';' | tr -d ' ' | cut -d'=' -f2
}
# Function to extract iOS build number
get_ios_build() {
grep -A1 "CURRENT_PROJECT_VERSION" ../apps/mobile-app/ios/AliasVault.xcodeproj/project.pbxproj | grep "CURRENT_PROJECT_VERSION = [0-9]\+;" | head -n1 | tr -d ';' | tr -d ' ' | cut -d'=' -f2
}
# Function to extract version from Android app
get_android_version() {
grep "versionName " ../apps/mobile-app/android/app/build.gradle | head -n1 | tr -d '"' | tr -d ' ' | cut -d'=' -f2 | sed 's/versionName//'
}
# Function to extract Android build number
get_android_build() {
grep "versionCode" ../apps/mobile-app/android/app/build.gradle | grep -E "versionCode [0-9]+" | head -n1 | awk '{print $2}'
}
# Function to extract version from Safari extension
get_safari_version() {
grep "MARKETING_VERSION = " ../apps/browser-extension/safari-xcode/AliasVault/AliasVault.xcodeproj/project.pbxproj | head -n1 | tr -d '"' | tr -d ';' | tr -d ' ' | cut -d'=' -f2
}
# Function to extract Safari build number
get_safari_build() {
grep -A1 "CURRENT_PROJECT_VERSION" ../apps/browser-extension/safari-xcode/AliasVault/AliasVault.xcodeproj/project.pbxproj | grep "CURRENT_PROJECT_VERSION = [0-9]\+;" | head -n1 | tr -d ';' | tr -d ' ' | cut -d'=' -f2
}
# Collect all versions
server_version=$(get_server_version)
browser_wxt_version=$(get_browser_extension_version)
browser_package_version=$(get_browser_extension_package_json_version)
browser_ts_version=$(get_browser_extension_ts_version)
mobile_version=$(get_mobile_app_version)
mobile_ts_version=$(get_mobile_app_ts_version)
ios_version=$(get_ios_version)
ios_build=$(get_ios_build)
android_version=$(get_android_version)
android_build=$(get_android_build)
safari_version=$(get_safari_version)
safari_build=$(get_safari_build)
# Print table header
printf "%-50s %-20s %-15s\n" "Component" "Version" "Build Number"
echo "─────────────────────────────────────────────────────────────────────────────────"
# Server
printf "%-50s %-20s %-15s\n" "Server (AppInfo.cs)" "$server_version" "N/A"
# Browser Extension
echo ""
printf "%-50s %-20s %-15s\n" "Browser Extension (wxt.config.ts)" "$browser_wxt_version" "N/A"
printf "%-50s %-20s %-15s\n" "Browser Extension (package.json)" "$browser_package_version" "N/A"
printf "%-50s %-20s %-15s\n" "Browser Extension (AppInfo.ts)" "$browser_ts_version" "N/A"
# Safari Extension
echo ""
printf "%-50s %-20s %-15s\n" "Safari Extension (Xcode)" "$safari_version" "$safari_build"
# Mobile App
echo ""
printf "%-50s %-20s %-15s\n" "Mobile App (app.json)" "$mobile_version" "N/A"
printf "%-50s %-20s %-15s\n" "Mobile App (AppInfo.ts)" "$mobile_ts_version" "N/A"
# iOS
echo ""
printf "%-50s %-20s %-15s\n" "iOS App (Xcode)" "$ios_version" "$ios_build"
# Android
echo ""
printf "%-50s %-20s %-15s\n" "Android App (build.gradle)" "$android_version" "$android_build"
echo "────────────────────────────────────────────────────────────────────────────────────"