# Gitea Action Runner Node.js Image
# 基于 gitea_runner_base 添加多版本 Node.js 和包管理器

FROM timi/gitea_runner_base:latest

LABEL maintainer="www.imyeyu.com"
LABEL description="Gitea Action Runner with Node.js 18/20/22 and multiple package managers"

# Node.js 安装目录
ENV NODE_BASE=/usr/local/node

# 安装 Node.js 多版本环境（Alpine musl 版本）
RUN set -ex \
    && apk add --no-cache libstdc++ \
    && mkdir -p ${NODE_BASE}/versions \
    # 下载并安装 Node.js 18 (musl)
    && wget -q https://unofficial-builds.nodejs.org/download/release/v18.20.8/node-v18.20.8-linux-x64-musl.tar.xz -O /tmp/node18.tar.xz \
    && tar -xJf /tmp/node18.tar.xz -C ${NODE_BASE}/versions \
    && mv ${NODE_BASE}/versions/node-v18.20.8-linux-x64-musl ${NODE_BASE}/versions/18 \
    # 下载并安装 Node.js 20 (musl)
    && wget -q https://unofficial-builds.nodejs.org/download/release/v20.20.0/node-v20.20.0-linux-x64-musl.tar.xz -O /tmp/node20.tar.xz \
    && tar -xJf /tmp/node20.tar.xz -C ${NODE_BASE}/versions \
    && mv ${NODE_BASE}/versions/node-v20.20.0-linux-x64-musl ${NODE_BASE}/versions/20 \
    # 下载并安装 Node.js 22 (musl)
    && wget -q https://unofficial-builds.nodejs.org/download/release/v22.12.0/node-v22.12.0-linux-x64-musl.tar.xz -O /tmp/node22.tar.xz \
    && tar -xJf /tmp/node22.tar.xz -C ${NODE_BASE}/versions \
    && mv ${NODE_BASE}/versions/node-v22.12.0-linux-x64-musl ${NODE_BASE}/versions/22 \
    # 设置默认版本为 20
    && ln -sf ${NODE_BASE}/versions/20/bin/node /usr/local/bin/node \
    && ln -sf ${NODE_BASE}/versions/20/bin/npm /usr/local/bin/npm \
    && ln -sf ${NODE_BASE}/versions/20/bin/npx /usr/local/bin/npx \
    # 安装全局包管理器
    && npm install -g yarn pnpm \
    # 创建版本切换脚本
    && printf '#!/bin/bash\ncase "$1" in\n    18|20|22)\n        export PATH="${NODE_BASE}/versions/$1/bin:${PATH}"\n        ln -sf ${NODE_BASE}/versions/$1/bin/node /usr/local/bin/node\n        ln -sf ${NODE_BASE}/versions/$1/bin/npm /usr/local/bin/npm\n        ln -sf ${NODE_BASE}/versions/$1/bin/npx /usr/local/bin/npx\n        echo "Switched to Node.js $1: $(node -v)"\n        ;;\n    *)\n        echo "Usage: use-node [18|20|22]"\n        exit 1\n        ;;\nesac\n' > /usr/local/bin/use-node \
    && chmod +x /usr/local/bin/use-node \
    # 清理临时文件
    && rm -f /tmp/node*.tar.xz
