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