FROM eclipse-temurin:17-jdk-jammy

ARG ANDROID_SDK_VERSION=11076708
ARG ANDROID_BUILD_TOOLS=35.0.0
ARG ANDROID_PLATFORM=android-35

ENV ANDROID_HOME=/opt/android-sdk
ENV PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${PATH}"

# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
        unzip curl git \
    && rm -rf /var/lib/apt/lists/*

# Android command-line tools
RUN mkdir -p "${ANDROID_HOME}/cmdline-tools" \
    && curl -sSL "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_VERSION}_latest.zip" -o /tmp/cmdtools.zip \
    && unzip -q /tmp/cmdtools.zip -d "${ANDROID_HOME}/cmdline-tools" \
    && mv "${ANDROID_HOME}/cmdline-tools/cmdline-tools" "${ANDROID_HOME}/cmdline-tools/latest" \
    && rm /tmp/cmdtools.zip

# Accept licenses and install SDK packages
RUN yes | sdkmanager --licenses > /dev/null 2>&1 \
    && sdkmanager --update \
    && sdkmanager \
        "platform-tools" \
        "platforms;${ANDROID_PLATFORM}" \
        "build-tools;${ANDROID_BUILD_TOOLS}"

WORKDIR /project

# Pre-cache Gradle wrapper distribution
COPY gradlew gradlew
COPY gradle/wrapper gradle/wrapper
RUN chmod +x gradlew && ./gradlew --version

# Copy build files first for better layer caching
COPY build.gradle.kts settings.gradle.kts gradle.properties ./
COPY gradle/libs.versions.toml gradle/libs.versions.toml
COPY shared/build.gradle.kts shared/build.gradle.kts
COPY androidApp/build.gradle.kts androidApp/build.gradle.kts

# Create minimal source dirs so Gradle can configure without failing
RUN mkdir -p shared/src/commonMain/kotlin \
             shared/src/commonMain/sqldelight \
             shared/src/androidMain/kotlin \
             shared/src/iosMain/kotlin \
             androidApp/src/main/kotlin \
             androidApp/src/main/res/values

# Pre-download dependencies (this layer is cached until build files change)
RUN ./gradlew :shared:dependencies :androidApp:dependencies --no-daemon 2>&1 || true

# Now copy the full source tree
COPY . .

ENTRYPOINT ["./gradlew"]
CMD ["--no-daemon", ":shared:build"]
