FROM coder-devbox-base-config:latest AS base-default

ARG FLUTTER_TESTING_TOOLS="false"

USER coder

RUN echo "[ Installing fvm ]" \
    && curl -fsSL https://fvm.app/install.sh | bash \
    && export PATH="$HOME/fvm/bin:$PATH" \
    && echo "[ Installing Flutter SDK (stable) ]" \
    && "$HOME/fvm/bin/fvm" install stable \
    && "$HOME/fvm/bin/fvm" global stable \
    && "$HOME/fvm/default/bin/flutter" --version

USER root

# Move the installed SDK + fvm binary out of /home/coder into the image
# filesystem, so it survives stale/old persisted home volumes on
# workspace stop/start. Leave nothing important depending on $HOME/fvm.
RUN mkdir -p /usr/local/fvm \
    && cp -a /home/coder/fvm/. /usr/local/fvm/ \
    && REAL_VERSION_DIR="$(readlink -f /home/coder/fvm/default)" \
    && VERSION_NAME="$(basename "$REAL_VERSION_DIR")" \
    && rm -f /usr/local/fvm/default \
    && ln -sfn "/usr/local/fvm/versions/$VERSION_NAME" /usr/local/fvm/default \
    && chown -R coder:coder /usr/local/fvm \
    && ln -sf /usr/local/fvm/bin/fvm             /usr/local/bin/fvm \
    && ln -sf /usr/local/fvm/default/bin/flutter /usr/local/bin/flutter \
    && ln -sf /usr/local/fvm/default/bin/dart    /usr/local/bin/dart \
    && rm -rf /home/coder/fvm
    
USER coder

RUN /usr/local/bin/flutter --version


# Flutter Testing Tools - apt packages baked into the image
RUN if [ "$FLUTTER_TESTING_TOOLS" = "true" ]; then \
        echo "[ Installing Flutter testing tools ]"; \
    fi

RUN if [ "$FLUTTER_TESTING_TOOLS" = "true" ]; then \
        DEBIAN_FRONTEND=noninteractive apt-get update -qq \
        && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
             pkg-config xvfb x11-utils cmake clang mesa-utils libgtk-3-dev ninja-build \
        && echo "[ Testing tools ready: xvfb, cmake, clang, ninja, pkg-config ]"; \
    else \
        echo "[ Skipping Flutter testing tools ]"; \
    fi

USER coder

# marionette_mcp / patrol_cli install into ~/.pub-cache, which lives in the
# persisted home volume — these must be (re)activated per-workspace, not baked
# into the image. Handle this in a startup script instead, e.g.:
#
#   if [ "$FLUTTER_TESTING_TOOLS" = "true" ]; then
#     mkdir -p "$HOME/.pub-cache/bin"
#     dart pub global activate marionette_mcp
#     flutter pub global activate patrol_cli
#     sudo ln -sf "$HOME/.pub-cache/bin/marionette_mcp" /usr/local/bin/marionette_mcp
#     sudo ln -sf "$HOME/.pub-cache/bin/patrol" /usr/local/bin/patrol
#   fi