59 lines
1.9 KiB
Bash
59 lines
1.9 KiB
Bash
#!/bin/zsh
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
SOURCE_APK="${1:-$ROOT_DIR/android/app/build/outputs/apk/debug/app-debug.apk}"
|
|
TARGET_DIR="$ROOT_DIR/public/downloads"
|
|
TARGET_APK="$TARGET_DIR/boss-android-latest.apk"
|
|
TARGET_META="$TARGET_DIR/boss-android-latest.json"
|
|
STANDALONE_DIR="$ROOT_DIR/.next/standalone/public/downloads"
|
|
BUILD_GRADLE="$ROOT_DIR/android/app/build.gradle"
|
|
SOURCE_NAME="$(basename "$SOURCE_APK")"
|
|
BUILD_FLAVOR="debug"
|
|
|
|
if [[ "$SOURCE_NAME" == *release* ]]; then
|
|
BUILD_FLAVOR="release"
|
|
fi
|
|
|
|
if [[ ! -f "$SOURCE_APK" ]]; then
|
|
echo "APK not found: $SOURCE_APK" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$TARGET_DIR"
|
|
cp "$SOURCE_APK" "$TARGET_APK"
|
|
|
|
SIZE_BYTES="$(stat -f '%z' "$TARGET_APK" 2>/dev/null || stat -c '%s' "$TARGET_APK")"
|
|
UPDATED_AT="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
|
|
SHA256="$(shasum -a 256 "$TARGET_APK" | awk '{print $1}')"
|
|
VERSION_NAME="$(sed -n 's/.*versionName \"\([^\"]*\)\"/\1/p' "$BUILD_GRADLE" | head -n 1)"
|
|
VERSION_CODE="$(sed -n 's/.*versionCode \([0-9][0-9]*\).*/\1/p' "$BUILD_GRADLE" | head -n 1)"
|
|
VERSIONED_APK_NAME="boss-android-v${VERSION_NAME}-${BUILD_FLAVOR}.apk"
|
|
VERSIONED_TARGET_APK="$TARGET_DIR/$VERSIONED_APK_NAME"
|
|
|
|
cp "$TARGET_APK" "$VERSIONED_TARGET_APK"
|
|
|
|
cat > "$TARGET_META" <<EOF
|
|
{
|
|
"fileName": "$VERSIONED_APK_NAME",
|
|
"urlPath": "/api/v1/user/ota/package",
|
|
"sizeBytes": $SIZE_BYTES,
|
|
"updatedAt": "$UPDATED_AT",
|
|
"sha256": "$SHA256",
|
|
"versionName": "$VERSION_NAME",
|
|
"versionCode": $VERSION_CODE,
|
|
"buildFlavor": "$BUILD_FLAVOR"
|
|
}
|
|
EOF
|
|
|
|
if [[ -d "$ROOT_DIR/.next/standalone/public" ]]; then
|
|
mkdir -p "$STANDALONE_DIR"
|
|
cp "$TARGET_APK" "$STANDALONE_DIR/boss-android-latest.apk"
|
|
cp "$VERSIONED_TARGET_APK" "$STANDALONE_DIR/$VERSIONED_APK_NAME"
|
|
cp "$TARGET_META" "$STANDALONE_DIR/boss-android-latest.json"
|
|
fi
|
|
|
|
echo "Published APK to $TARGET_APK"
|
|
echo "Published versioned APK to $VERSIONED_TARGET_APK"
|
|
echo "Metadata written to $TARGET_META"
|