feat: add idempotent install.sh bootstrap script
- checks Node >= 20, installs Pi if missing, runs pi install with PI_KIT_REPO (single source of the repo address, no version ref) - verifies API key env var (Anthropic/proxy TODO), prints where to get it - prints cheat sheet: run, update, commands, internal course link (TODO)
This commit is contained in:
Executable
+91
@@ -0,0 +1,91 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# pi-kit bootstrap — one-shot setup for new engineers. Idempotent: safe to re-run.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# curl -fsSL https://git.codelab.vc/ai/pi-kit/-/raw/main/install.sh | bash
|
||||||
|
# # or, from a checkout:
|
||||||
|
# ./install.sh
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# The ONLY place the repository address appears. No version ref on purpose, so
|
||||||
|
# `pi update --extensions` always pulls the latest main.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
PI_KIT_REPO="git:git.codelab.vc/ai/pi-kit"
|
||||||
|
|
||||||
|
MIN_NODE_MAJOR=20
|
||||||
|
INTERNAL_COURSE_URL="TODO: ссылка на внутренний курс по Pi"
|
||||||
|
|
||||||
|
info() { printf '\033[1;34m==>\033[0m %s\n' "$*"; }
|
||||||
|
warn() { printf '\033[1;33m[!]\033[0m %s\n' "$*"; }
|
||||||
|
err() { printf '\033[1;31m[x]\033[0m %s\n' "$*" >&2; }
|
||||||
|
|
||||||
|
# --- 1. Node.js -------------------------------------------------------------
|
||||||
|
if ! command -v node >/dev/null 2>&1; then
|
||||||
|
err "Node.js не найден. Установи Node.js >= ${MIN_NODE_MAJOR} (https://nodejs.org) и запусти скрипт снова."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NODE_MAJOR="$(node -p 'process.versions.node.split(".")[0]')"
|
||||||
|
if [ "$NODE_MAJOR" -lt "$MIN_NODE_MAJOR" ]; then
|
||||||
|
err "Нужен Node.js >= ${MIN_NODE_MAJOR}, а установлен $(node -v). Обнови Node.js и запусти скрипт снова."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
info "Node.js $(node -v) — ок."
|
||||||
|
|
||||||
|
# --- 2. Pi ------------------------------------------------------------------
|
||||||
|
if command -v pi >/dev/null 2>&1; then
|
||||||
|
info "Pi уже установлен ($(pi --version 2>/dev/null || echo 'версия неизвестна'))."
|
||||||
|
else
|
||||||
|
info "Ставлю Pi..."
|
||||||
|
curl -fsSL https://pi.dev/install.sh | sh
|
||||||
|
# Make pi available in the current shell if the installer added a new PATH dir.
|
||||||
|
if ! command -v pi >/dev/null 2>&1; then
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
fi
|
||||||
|
if ! command -v pi >/dev/null 2>&1; then
|
||||||
|
err "Pi установлен, но не найден в PATH. Открой новый терминал (или поправь PATH) и запусти скрипт снова."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 3. Install the corporate package --------------------------------------
|
||||||
|
info "Устанавливаю корпоративный пакет: ${PI_KIT_REPO}"
|
||||||
|
pi install "$PI_KIT_REPO"
|
||||||
|
info "Пакет установлен. Обновляться потом: pi update --extensions"
|
||||||
|
|
||||||
|
# --- 4. API keys ------------------------------------------------------------
|
||||||
|
# TODO: если используется корпоративный прокси-провайдер вместо прямого Anthropic —
|
||||||
|
# заменить проверку ниже на нужную переменную (напр. PI_PROXY_TOKEN) и адрес.
|
||||||
|
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
|
||||||
|
info "ANTHROPIC_API_KEY найден в окружении — ок."
|
||||||
|
else
|
||||||
|
warn "Не найден ANTHROPIC_API_KEY (или ключ корпоративного прокси-провайдера)."
|
||||||
|
cat <<'EOF'
|
||||||
|
Где взять ключ:
|
||||||
|
TODO: инструкция компании — портал доступов / прокси-провайдер.
|
||||||
|
Затем добавь в свой ~/.zshrc или ~/.bashrc, например:
|
||||||
|
export ANTHROPIC_API_KEY="..."
|
||||||
|
Также для скилла работы с трекером понадобятся:
|
||||||
|
export TRACKER_URL="..." # адрес трекера (или возьмётся из корп. контекста)
|
||||||
|
export JIRA_TOKEN="..." # personal access token трекера
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 5. Cheat sheet ---------------------------------------------------------
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
────────────────────────────────────────────────────────
|
||||||
|
Готово! Памятка:
|
||||||
|
|
||||||
|
Запуск: pi
|
||||||
|
Обновление: pi update --extensions
|
||||||
|
Команды: /bugfix <тикет> /feature <тикет>
|
||||||
|
/review [фокус] /rfc <тема> /kit-config
|
||||||
|
Проверка: /kit-config — покажет действующие корпоративные значения
|
||||||
|
|
||||||
|
Внутренний курс по Pi: ${INTERNAL_COURSE_URL}
|
||||||
|
────────────────────────────────────────────────────────
|
||||||
|
EOF
|
||||||
Reference in New Issue
Block a user