breakout71/build.sh
2025-04-05 10:38:18 +02:00

62 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
# the version number is just a unix timestamp in minutes
defaultVersionCode=$(($(date +%s) / 60))
versionCode=${1:-$defaultVersionCode}
source ~/.nvm/nvm.sh;
nvm install v21
nvm use v21
if [[ $(node --version) != v21* ]]; then
echo "run first: nvm use v21"
exit 1
fi
set -e
set -x
# clear output folders first, so that they are empty for failed builds
rm -rf ./build/*
rm -rf ./app/src/main/assets/*
rm -rf ./app/build/outputs/apk/release/*
rm -rf ./app/build/outputs/bundle/release/*
# Replace the version code and name in gradle for fdroid and play store
sed -i -e "s/^[[:space:]]*versionCode = .*/ versionCode = $versionCode/" \
-e "s/^[[:space:]]*versionName = .*/ versionName = \"$versionCode\"/" \
./app/build.gradle.kts
echo "\"$versionCode\"" > src/data/version.json
# Update service worker
sed -i -e "s/VERSION = .*/ VERSION = '$versionCode'/" ./src/PWA/sw-b71.js
# remove all exif metadata from pictures, because i think fdroid doesn't like that. odd
find -name '*.jp*g' -o -name '*.png' | xargs exiftool -all= -overwrite_original
npx prettier --write src/
npx jest
# Actual js app build
npx parcel build src/index.html --dist-dir build
# Add public files to the web version, but not to the apk
cp public/* build
# Add only index.html file to the apk, it should be enough
cp build/index.html ./app/src/main/assets/
# generate signed apk for itch.io
./gradlew assembleRelease
# generate signed bundle for play store
./gradlew bundleRelease