calender.app/build-android-app.sh

76 lines
2.2 KiB
Bash
Executable file

#!/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
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 <<EOF
cat > /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'"$(date -Iseconds) starting build"'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\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" "$@"