# Use OpenJDK 19 as base image
FROM openjdk:19-jdk-bullseye

# Set JAVA_HOME and update PATH to ensure Java tools are available
ENV JAVA_HOME=/usr/local/openjdk-19
ENV PATH=$JAVA_HOME/bin:$PATH

# Install system dependencies
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    curl \
    git \
    nodejs \
    npm \
    vim \
    wget \
    && rm -rf /var/lib/apt/lists/*

# Install code-server
RUN curl -fsSL https://code-server.dev/install.sh | sh

# Install Java extensions for VS Code
RUN code-server \
    --install-extension redhat.java \
    --install-extension vscjava.vscode-java-pack \
    --install-extension vscjava.vscode-java-debug \
    --install-extension vscjava.vscode-maven \
    --install-extension eamodio.gitlens

# Create workspace directory
RUN mkdir -p /workspace

# Set working directory
WORKDIR /workspace

# Configure code-server
RUN mkdir -p ~/.config/code-server && \
    echo "bind-addr: 0.0.0.0:8080" > ~/.config/code-server/config.yaml && \
    echo "auth: none" >> ~/.config/code-server/config.yaml && \
    echo "cert: false" >> ~/.config/code-server/config.yaml

# Create VS Code settings for Java
RUN mkdir -p /workspace/.vscode && \
    echo '{' > /workspace/.vscode/settings.json && \
    echo '  "java.home": "/usr/local/openjdk-19",' >> /workspace/.vscode/settings.json && \
    echo '  "java.configuration.runtimes": [' >> /workspace/.vscode/settings.json && \
    echo '    {' >> /workspace/.vscode/settings.json && \
    echo '      "name": "JavaSE-19",' >> /workspace/.vscode/settings.json && \
    echo '      "path": "/usr/local/openjdk-19"' >> /workspace/.vscode/settings.json && \
    echo '    }' >> /workspace/.vscode/settings.json && \
    echo '  ]' >> /workspace/.vscode/settings.json && \
    echo '}' >> /workspace/.vscode/settings.json

# Create a .bashrc to ensure PATH is set in terminal sessions
RUN echo 'export JAVA_HOME=/usr/local/openjdk-19' >> ~/.bashrc && \
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc && \
    echo 'echo "Java Development Environment Ready!"' >> ~/.bashrc && \
    echo 'echo "Java version: $(java -version 2>&1 | head -n 1)"' >> ~/.bashrc && \
    echo 'echo "Available commands: javac, java"' >> ~/.bashrc

# Expose port for VS Code server
EXPOSE 8080

# Start code-server
CMD ["code-server", "--host", "0.0.0.0", "--port", "8080", "/workspace"] 