90 lines
2.7 KiB
Bash
Executable File
90 lines
2.7 KiB
Bash
Executable File
#!/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 |