# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

FROM ubuntu:24.04

ARG DYNAMO_COMMIT_SHA
ENV DYNAMO_COMMIT_SHA=$DYNAMO_COMMIT_SHA

# Version for documentation (e.g., "0.3.0" for releases, "dev" for main/PRs)
ARG DYNAMO_DOCS_VERSION=dev
ENV DYNAMO_DOCS_VERSION=$DYNAMO_DOCS_VERSION

# TODO: Pin uv image to a specific version tag for reproducibility (e.g. ghcr.io/astral-sh/uv:0.10.7)
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        build-essential=12.10ubuntu1 \
        curl=8.5.0-2ubuntu10.6 \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /workspace/dynamo

# Copy pyproject.toml first for better layer caching
COPY pyproject.toml .

# Create venv and install docs dependencies from dependency group
# Note: We use `uv pip install --group` instead of `uv run --only-group` because
# uv run always tries to resolve project dependencies (including ai-dynamo-runtime),
# even with --only-group flag. Using a dedicated venv lets us build the docs without
# needing to build the runtime first.
ENV VIRTUAL_ENV=/workspace/dynamo/.venv-docs
RUN uv venv $VIRTUAL_ENV --python 3.12 && \
    uv pip install --python $VIRTUAL_ENV --group docs

# Set visitor script to be included on every HTML page
ENV VISITS_COUNTING_SCRIPT="//assets.adobedtm.com/b92787824f2e0e9b68dc2e993f9bd995339fe417/satelliteLib-7ba51e58dc61bcb0e9311aadd02a0108ab24cc6c.js"

# Copy the rest of the code
COPY . /workspace/dynamo

# Run docs generation using uv run with the docs venv
RUN uv run --python .venv-docs --no-project docs/generate_docs.py