build-android-app.sh: color, command

This commit is contained in:
Alexander Mahr 2024-12-28 09:39:22 +01:00
parent 911170325e
commit e6df08287e

View file

@ -1,11 +1,11 @@
#!/bin/sh #!/bin/sh
set -ex set -e
CONTAINERRUNTIMES='docker podman nerdctl' CONTAINERRUNTIMES='docker podman nerdctl'
for CONTAINERRUNTIME in $CONTAINERRUNTIMES / for CONTAINERRUNTIME in $CONTAINERRUNTIMES /
do do
type $CONTAINERRUNTIME 2>/dev/null && break type $CONTAINERRUNTIME >/dev/null 2>/dev/null && break
test "$CONTAINERRUNTIME" = / && { test "$CONTAINERRUNTIME" = / && {
echo "install a container runtime (e.g ${CONTAINERRUNTIMES//\ /\/})" >&2 echo "install a container runtime (e.g ${CONTAINERRUNTIMES//\ /\/})" >&2
exit 2 exit 2
@ -15,7 +15,7 @@ done
HASHES='md5sum cksum sha1sum base64 uuencode' HASHES='md5sum cksum sha1sum base64 uuencode'
for HASH in $HASHES / for HASH in $HASHES /
do do
type $HASH 2>/dev/null && break type $HASH >/dev/null 2>/dev/null && break
test "$HASH" = / && { test "$HASH" = / && {
echo "install checksum (e.g ${HASHES//\ /\/})" >&2 echo "install checksum (e.g ${HASHES//\ /\/})" >&2
exit 3 exit 3
@ -26,32 +26,45 @@ DockerfileContent(){
cat << 'DOCKERFILEEOF' cat << 'DOCKERFILEEOF'
FROM debian:latest FROM debian:latest
RUN apt-get update -y && apt-get install -y make openjdk-17-jdk-headless unzip zip wget curl whiptail 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 JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64/"
ENV ANDROID_SDK_ROOT="/app/android-sdk" ENV ANDROID_SDK_ROOT="/app/android-sdk"
ENV BUILD_TOOLS_LATEST="$ANDROID_SDK_ROOT/cmdline-tools/latest" ENV BUILD_TOOLS_LATEST="$ANDROID_SDK_ROOT/cmdline-tools/latest"
ENV PATH="$BUILD_TOOLS_LATEST/bin:$PATH" ENV PATH="$BUILD_TOOLS_LATEST/bin:$PATH"
ENV LIBRARY_PATH="$LIBRARY_PATH:$BUILD_TOOLS_LATEST/lib" ENV LIBRARY_PATH="$LIBRARY_PATH:$BUILD_TOOLS_LATEST/lib"
CMD ["make","--trace"]
DOCKERFILEEOF DOCKERFILEEOF
} }
diff Dockerfile <(DockerfileContent) 2>/dev/null > /dev/null || { diff Dockerfile <(DockerfileContent) 2>/dev/null > /dev/null || {
test -f Dockerfile && {
read -p 'reset/start Dockerfile[Y/n]' YES read -p 'reset/start Dockerfile[Y/n]' YES
test "$YES" = "n" && { echo "aborting..." >&2; exit 1; } test "$YES" = "n" && { echo "aborting..." >&2; exit 1; }
}
DockerfileContent > Dockerfile DockerfileContent > Dockerfile
} }
IMAGE=android-app:"$($HASH Dockerfile | tr -cd '[a-zA-Z0-9]' | head -c 12)" IMAGE=build-android-app:"$($HASH Dockerfile | tr -cd '[a-zA-Z0-9]' | head -c 12)"
docker image inspect "$IMAGE" >/dev/null 2>/dev/null || { docker image inspect "$IMAGE" >/dev/null 2>/dev/null || {
$CONTAINERRUNTIME build --tag "$IMAGE" . $CONTAINERRUNTIME build --tag "$IMAGE" .
} }
#(optional) tag the latest image build
docker tag $IMAGE build-android-app:latest
$CONTAINERRUNTIME run --name build-android-app-$(date +%F--%H-%M-%S) \ time $CONTAINERRUNTIME run --name build-android-app-$(date +%F--%H-%M-%S) \
--workdir=/app \ --workdir=/app \
--hostname build-android-app \ --hostname build-android-app \
--volume ./app:/app \ --volume ./app:/app \
-it \ -it \
--rm \ --rm \
"$IMAGE" "$IMAGE" "$@" | {
test "$#" -eq 0 && {
# colur output in case this script was called without]
# command line arguments
sed 's/^Makefile:/\n\n'$'\033[0;32m''Makefile:'$'\033[0m''/g'
} || {
# no modification else
cat
}
}