#!/bin/bash # Default values buildType="release" buildName="0.0.0" buildsRef="builds.json" # Help message show_help() { echo "Usage: $0 [-t buildType] [-n buildName]" echo "Builds a Flutter APK with versioning support." echo "" echo "Options:" echo " -t, --buildType Build type (release or debug). Default: release" echo " -n, --buildName Build name (version). Default: 0.0.0" echo " -h, --help Show this help message" exit 0 } # Parse command-line arguments while [[ "$#" -gt 0 ]]; do case $1 in -t|--buildType) buildType="$2"; shift ;; -n|--buildName) buildName="$2"; shift ;; -h|--help) show_help ;; *) echo "Unknown parameter: $1"; show_help; exit 1 ;; esac shift done # Check if builds.json exists if [ ! -f "$buildsRef" ]; then echo "File created: $buildsRef" echo "{\"$buildName\": 0}" > "$buildsRef" else echo "File already exists: $buildsRef" fi # Read the JSON file buildsMap=$(cat "$buildsRef") # Check if buildName exists in the JSON if jq -e --arg key "$buildName" 'has($key)' <<< "$buildsMap" > /dev/null; then echo "Build exists: $buildName" buildNumber=$(jq --arg key "$buildName" '.[$key]' <<< "$buildsMap") buildNumber=$((buildNumber + 1)) echo "Next build number for $buildName: $buildNumber" buildsMap=$(jq --arg key "$buildName" --argjson value "$buildNumber" '.[$key] = $value' <<< "$buildsMap") else echo "New build: $buildName, starting at build number: 1" buildNumber=1 buildsMap=$(jq --arg key "$buildName" --argjson value "$buildNumber" '.[$key] = $value' <<< "$buildsMap") fi # Save the updated JSON back to the file echo "$buildsMap" > "$buildsRef" # Define paths apkDir="../build/app/outputs/flutter-apk" baseName="org.igox.apps.android.busylight-buddy" # Build APK echo "Building APK with arguments: --$buildType --build-name=$buildName --build-number=$buildNumber --target-platform=android-arm,android-arm64,android-x64" flutter build apk --"$buildType" --build-name="$buildName" --build-number="$buildNumber" --target-platform=android-arm,android-arm64,android-x64 # Rename APK oldApk="$apkDir/app-$buildType.apk" newApk="$apkDir/$baseName-$buildType.apk" if [ -f "$oldApk" ]; then if [ -f "$newApk" ]; then rm -f "$newApk" fi mv "$oldApk" "$newApk" echo "APK renamed to: $baseName-$buildType.apk" else echo "Warning: APK not found at $oldApk" fi # Rename SHA1 (if exists) oldSha1="$apkDir/app-$buildType.apk.sha1" newSha1="$apkDir/$baseName-$buildType.apk.sha1" if [ -f "$oldSha1" ]; then if [ -f "$newSha1" ]; then rm -f "$newSha1" fi mv "$oldSha1" "$newSha1" echo "SHA1 renamed to: $baseName-$buildType.apk.sha1" else echo "Warning: SHA1 not found at $oldSha1" fi