whiskers.git / tools / android-gradle.sh
1#!/usr/bin/env bash
2# Run Gradle in android/ with the optional -Pwhiskers.* properties taken from the environment.
3#
4#     tools/android-gradle.sh :app:assembleDebug [more gradle arguments]
5#
6# Optional environment (each unset one is left to Gradle's default; see android/README.md):
7#   WHISKERS_HOST            -Pwhiskers.host            default service address baked into the APK
8#   WHISKERS_VERSION_NAME    -Pwhiskers.versionName     e.g. 2026.10.5
9#   WHISKERS_VERSION_CODE    -Pwhiskers.versionCode     e.g. 2026100501
10#   WHISKERS_APPLICATION_ID  -Pwhiskers.applicationId
11#   WHISKERS_ABIS            -Pwhiskers.abis            e.g. arm64-v8a,x86_64
12# Required: ANDROID_HOME (and ANDROID_NDK_HOME for the Rust core), JAVA_HOME or java, gradle and cargo-ndk
13# on PATH. mise.toml provides them; so does `nix develop`; so can you.
14set -euo pipefail
15cd "$(dirname "$0")/../android"
16for v in ANDROID_HOME ANDROID_NDK_HOME; do
17  [ -n "${!v:-}" ] || { echo "$v is not set: run this through mise (mise run android:debug) or export it" >&2; exit 1; }
18done
19[ -d "$ANDROID_HOME/platforms" ] || { echo "no Android platform in $ANDROID_HOME: run mise run android:sdk" >&2; exit 1; }
20command -v gradle >/dev/null || { echo "gradle is not on PATH (mise install)" >&2; exit 1; }
21args=()
22[ -z "${WHISKERS_HOST:-}" ] || args+=("-Pwhiskers.host=$WHISKERS_HOST")
23[ -z "${WHISKERS_VERSION_NAME:-}" ] || args+=("-Pwhiskers.versionName=$WHISKERS_VERSION_NAME")
24[ -z "${WHISKERS_VERSION_CODE:-}" ] || args+=("-Pwhiskers.versionCode=$WHISKERS_VERSION_CODE")
25[ -z "${WHISKERS_APPLICATION_ID:-}" ] || args+=("-Pwhiskers.applicationId=$WHISKERS_APPLICATION_ID")
26[ -z "${WHISKERS_ABIS:-}" ] || args+=("-Pwhiskers.abis=$WHISKERS_ABIS")
27exec gradle --console=plain "$@" ${args[@]+"${args[@]}"}