#!/bin/sh set -e CONTAINERRUNTIMES='docker podman nerdctl' for CONTAINERRUNTIME in $CONTAINERRUNTIMES / do type $CONTAINERRUNTIME >/dev/null 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 >/dev/null 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 build-essential 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" CMD ["make","--trace"] RUN < /bin/makefile-bash-wrapper.sh << 'WRAPPER' #!/bin/bash printf $'\033[0;32m''#----------------------------------------\n'$'\033[0m' >&2 bash -e "$@" || { EXITCODE=$? printf $'\033[0;31m''ERROR EXITCODE='"$EXITCODE"'\n'$'\033[0m' >&2 exit $EXITCODE } printf '\n\n\n\n' >&2 WRAPPER chmod u+x /bin/makefile-bash-wrapper.sh EOF DOCKERFILEEOF } printf $'\033[0;33m''$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n'$'\033[0m' 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=build-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" . } #(optional) tag the latest image build docker tag $IMAGE build-android-app:latest time $CONTAINERRUNTIME run --name build-android-app-$(date +%F--%H-%M-%S) \ --workdir=/app \ --env LINES=10 \ --env COLUMNS=$COLUMNS \ --hostname build-android-app \ --volume ./app:/app \ -it \ --rm \ "$IMAGE" "$@"