# Ubuntu 20.04 from GitHub mirror
FROM ubuntu:20.04

LABEL maintainer="vitor.roberto3022@gmail.com"

ENV DEBIAN_FRONTEND=noninteractive

# Use Alibaba Cloud mirror for Ubuntu packages
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# Update the package list and install dependencies
RUN apt-get update && \
    apt-get install -y \
    curl \
    gnupg \
    wget \
    unzip \
    make \
    sudo \
    git \
    build-essential

# Add NodeSource APT repository for Node.js (keep for compatibility)
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -

# Install Node.js (include for some tools that still require it)
RUN apt-get install -y nodejs

# Install Bun using official installation script
RUN curl -fsSL https://bun.sh/install | bash

# Set Bun environment variables (official installation location)
ENV BUN_INSTALL="/root/.bun"
ENV PATH="$BUN_INSTALL/bin:$PATH"

# Install expo dependencies with Bun
RUN bun install -g eas-cli
RUN bun install -g sharp-cli

# Setup folder to store the expo apps
RUN mkdir -p /home/expo_apps/

# Install android studio and java dependencies
RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y \
    libc6:i386 \
    libncurses5:i386 \
    libstdc++6:i386 \
    lib32z1 \
    libbz2-1.0:i386 \
    libxrender1 \
    libxtst6 \
    libxi6 \
    libfreetype6 \
    libxft2 \
    xz-utils \
    qemu \
    qemu-kvm \
    libvirt-daemon-system \
    libvirt-clients \
    bridge-utils \
    libnotify4 \
    libglu1-mesa \
    libqt5widgets5 \
    openjdk-17-jdk \
    xvfb

# Get Android SDK command line tools from official Google source
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
RUN unzip commandlinetools-linux-11076708_latest.zip
RUN mkdir -p /android-sdk-linux/cmdline-tools
RUN mv cmdline-tools /android-sdk-linux/cmdline-tools/latest

# Get NDK version 27.1.12297006 from official Google source
RUN wget https://dl.google.com/android/repository/android-ndk-r27-linux.zip
RUN unzip android-ndk-r27-linux.zip

# Set environment variables
ENV ANDROID_HOME=/android-sdk-linux
ENV ANDROID_SDK_ROOT=/android-sdk-linux
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV ANDROID_NDK_HOME=/android-ndk-r27
ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools

# Accept Android SDK licenses
RUN yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses

# Install required Android SDK components for minSDK 24, targetSDK 36
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager \
    "platform-tools" \
    "platforms;android-36" \
    "platforms;android-24" \
    "build-tools;36.0.0" \
    "build-tools;24.0.3"

# Create workspace directory
WORKDIR /workspace

# Configure Gradle for better performance
RUN mkdir -p ~/.gradle
RUN echo 'org.gradle.daemon=true' >> ~/.gradle/gradle.properties
RUN echo 'org.gradle.parallel=true' >> ~/.gradle/gradle.properties
RUN echo 'org.gradle.configureondemand=true' >> ~/.gradle/gradle.properties

# Set environment variables for root user
ENV ANDROID_HOME=/android-sdk-linux
ENV ANDROID_SDK_ROOT=/android-sdk-linux
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV ANDROID_NDK_HOME=/android-ndk-r27
ENV BUN_INSTALL="/root/.bun"
ENV PATH="$BUN_INSTALL/bin:$JAVA_HOME/bin:$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools"

# Verify installations
RUN java -version
RUN node --version
RUN npm --version
RUN bun --version
RUN eas --version
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list

# Expose default ports
EXPOSE 8081 19000 19001 19002

# Default command
CMD ["sleep", "infinity"]