FROM ubuntu:24.04

###############################################################################

### Tools Configuration ###

# Java JDK Setup
ARG JDK_VERSION="17"

# Gradle Setup
ARG GRADLE_VERSION="8.4"
ARG GRADLE_INSTALL_PATH="/opt/gradle"

# CMake Setup (https://github.com/Kitware/CMake)
ARG CMAKE_VERSION="3.31.5"
ARG CMAKE_PKG="cmake-${CMAKE_VERSION}-linux-x86_64.sh"
ARG CMAKE_REPO_URL="https://github.com/Kitware/CMake/releases/download"
ARG CMAKE_PKG_URL="${CMAKE_REPO_URL}/v${CMAKE_VERSION}/${CMAKE_PKG}"

# Android Setup
ARG ANDROID_SDK_VERSION="31"
ARG ANDROID_NDK_VERSION="26.0.10792818"
ARG ANDROID_BUILD_TOOLS_VERSION="30.0.2"
ARG ANDROID_INSTALL_PATH="/opt/android-studio"

###############################################################################

# Set Environment Variable for no user interaction with APT
ARG DEBIAN_FRONTEND=noninteractive

###############################################################################

# Install system packages
RUN apt-get update && \
    apt-get install --yes --no-install-recommends apt-utils && \
    apt-get install --yes --no-install-recommends \
        openjdk-${JDK_VERSION}-jdk \
        wget \
        unzip \
        curl \
        git \
        zip \
        ninja-build \
        build-essential \
        ca-certificates && \
    apt-get clean --yes && \
    rm -rf /var/lib/apt/lists/*

# CMake Installation
RUN wget ${CMAKE_PKG_URL} -O /tmp/cmake.sh && \
    chmod +x /tmp/cmake.sh && \
    /tmp/cmake.sh --skip-license --prefix=/usr/local && \
    rm -f /tmp/cmake.sh

# Gradle Installation
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip -O /tmp/gradle.zip && \
    unzip /tmp/gradle.zip -d /opt && \
    ln -s /opt/gradle-${GRADLE_VERSION} ${GRADLE_INSTALL_PATH} && \
    ln -s ${GRADLE_INSTALL_PATH}/bin/gradle /usr/bin/gradle && \
    rm /tmp/gradle.zip
ENV PATH="${GRADLE_INSTALL_PATH}/bin:${PATH}"

# Install Android SDK Command Line Tools
RUN mkdir -p ${ANDROID_INSTALL_PATH}/cmdline-tools && \
    wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/tools.zip && \
    unzip /tmp/tools.zip -d ${ANDROID_INSTALL_PATH}/cmdline-tools && \
    mv ${ANDROID_INSTALL_PATH}/cmdline-tools/cmdline-tools ${ANDROID_INSTALL_PATH}/cmdline-tools/latest && \
    rm /tmp/tools.zip
ENV ANDROID_SDK_ROOT=${ANDROID_INSTALL_PATH}
ENV PATH="${ANDROID_INSTALL_PATH}/cmdline-tools/latest/bin:${PATH}"

# Accept Android SDK-Manager License
RUN yes | sdkmanager --licenses

# Install Android Tools, SDK and NDK
RUN sdkmanager --update && \
    sdkmanager \
    "platform-tools" \
    "platforms;android-${ANDROID_SDK_VERSION}" \
    "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "ndk;${ANDROID_NDK_VERSION}"
ENV ANDROID_NDK_HOME=${ANDROID_INSTALL_PATH}/ndk/${ANDROID_NDK_VERSION}
ENV PATH=${ANDROID_INSTALL_PATH}/cmdline-tools/latest/bin:${ANDROID_INSTALL_PATH}/platform-tools:${ANDROID_INSTALL_PATH}/build-tools/${ANDROID_BUILD_TOOLS_VERSION}:$PATH

# Container working directory
WORKDIR /workspace

# Add and Setup Container Entry Point Script
COPY ./scripts/entrypoint.sh /opt/entrypoint.sh
RUN chmod +x /opt/entrypoint.sh
ENTRYPOINT ["/opt/entrypoint.sh"]

###############################################################################
