# syntax=docker/dockerfile:1
ARG BASE_IMAGE=node:23-bookworm-slim

FROM ${BASE_IMAGE}

ARG LLVM_VERSION=16
ARG TARGETARCH

# common tools
RUN --mount=type=cache,target=/var/lib/apt \
    --mount=type=cache,target=/var/lib/cache \
    --mount=type=cache,target=/var/cache/apt \
    apt-get update && \
    apt-get install -y \
    sudo \
    git-lfs \
    ca-certificates \
    curl \
    jq \
    gnupg \
    gcc \
    clang-${LLVM_VERSION} \
    llvm-${LLVM_VERSION} \
    libbpf-dev \
    make \
    unzip \
    libgraphite2-3 \
    zstd && \
    ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang /usr/bin/clang && \
    ln -s -f /usr/lib/llvm-${LLVM_VERSION}/bin/llc /usr/bin/

ADD --chmod=444 https://cli.github.com/packages/githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg
ADD --chmod=444 https://download.docker.com/linux/debian/gpg /etc/apt/keyrings/docker.asc

# Docker and other tools
RUN --mount=type=cache,target=/var/lib/apt \
    --mount=type=cache,target=/var/lib/cache \
    --mount=type=cache,target=/var/cache/apt \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list && \
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list && \
    apt-get update && \
    apt-get install -y \
    gh \
    docker-ce docker-ce-cli containerd.io docker-buildx-plugin

# AWS CLI
RUN --mount=type=cache,target=/tmp \
    if [ "${TARGETARCH}" = "amd64" ]; then \
    curl -o "/tmp/awscliv2.zip" "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"; \
    elif [ "${TARGETARCH}" = "arm64" ]; then \
    curl -o "/tmp/awscliv2.zip" "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip"; \
    else \
    echo "Unsupported architecture: ${TARGETARCH}"; \
    exit 1; \
    fi && \
    unzip -o /tmp/awscliv2.zip -d /tmp && \
    /tmp/aws/install