android-app-persistence/build-android-app.sh

59 lines
1.6 KiB
Bash
Executable file

#!/bin/sh
set -ex
CONTAINERRUNTIMES='docker podman nerdctl'
for CONTAINERRUNTIME in $CONTAINERRUNTIMES /
do
type $CONTAINERRUNTIME 2>/dev/null && break
test "$CONTAINERRUNTIME" = / && {
echo "install a container runtime (e.g ${CONTAINERRUNTIMES//\ /\/})" >&2
exit 2
}
done
HASHES='md5sum cksum sha1sum base64 uuencode'
for HASH in $HASHES /
do
type $HASH 2>/dev/null && break
test "$HASH" = / && {
echo "install checksum (e.g ${HASHES//\ /\/})" >&2
exit 3
}
done
DockerfileContent(){
cat << 'DOCKERFILEEOF'
FROM debian:latest
RUN apt-get update -y && apt-get install -y make openjdk-17-jdk-headless unzip zip wget curl whiptail
ENTRYPOINT ["/bin/bash","-c","make"]
ENV JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64/"
ENV ANDROID_SDK_ROOT="/app/android-sdk"
ENV BUILD_TOOLS_LATEST="$ANDROID_SDK_ROOT/cmdline-tools/latest"
ENV PATH="$BUILD_TOOLS_LATEST/bin:$PATH"
ENV LIBRARY_PATH="$LIBRARY_PATH:$BUILD_TOOLS_LATEST/lib"
DOCKERFILEEOF
}
diff Dockerfile <(DockerfileContent) 2>/dev/null > /dev/null || {
test -f Dockerfile && {
read -p 'reset/start Dockerfile[Y/n]' YES
test "$YES" = "n" && { echo "aborting..." >&2; exit 1; }
}
DockerfileContent > Dockerfile
}
IMAGE=android-app:"$($HASH Dockerfile | tr -cd '[a-zA-Z0-9]' | head -c 12)"
docker image inspect "$IMAGE" >/dev/null 2>/dev/null || {
$CONTAINERRUNTIME build --tag "$IMAGE" .
}
$CONTAINERRUNTIME run --name build-android-app-$(date +%F--%H-%M-%S) \
--workdir=/app \
--hostname build-android-app \
--volume ./app:/app \
-it \
--rm \
"$IMAGE"