Files
pi-kit/install.sh
Aleksey Shakhmatov bc4ceb100d fix(install): make provider check provider-agnostic
Engineers use different LLM providers (Anthropic/OpenAI/OpenRouter/...); the
package does not pin a provider or model. install.sh now accepts any known
provider key and README states provider-agnosticism explicitly.
2026-07-16 11:28:12 +03:00

104 lines
4.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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. Provider API keys ---------------------------------------------------
# Pi is provider-agnostic: engineers use different LLM providers (Anthropic,
# OpenAI, OpenRouter, Google, ...). The package does NOT pin a provider/model.
# We only check that *some* provider key is present and hint if none is.
PROVIDER_KEYS=(ANTHROPIC_API_KEY OPENAI_API_KEY OPENROUTER_API_KEY GEMINI_API_KEY GOOGLE_API_KEY GROQ_API_KEY)
found_key=""
for k in "${PROVIDER_KEYS[@]}"; do
if [ -n "${!k:-}" ]; then
found_key="$k"
break
fi
done
if [ -n "$found_key" ]; then
info "Найден ключ LLM-провайдера: ${found_key} — ок."
else
warn "Не найден ни один ключ LLM-провайдера."
cat <<'EOF'
Pi работает с разными провайдерами — выбери свой и задай ключ, например:
export ANTHROPIC_API_KEY="..." # Anthropic
export OPENAI_API_KEY="..." # OpenAI
export OPENROUTER_API_KEY="..." # OpenRouter
Провайдер и модель выбираются флагами --provider/--model или в настройках Pi
(см. `pi --list-models`) — пакет их не навязывает.
Для скилла работы с трекером также понадобятся:
export TRACKER_URL="..." # адрес Jira (или возьмётся из корп. контекста)
export JIRA_TOKEN="..." # Jira personal access token (Server/DC)
EOF
fi
# --- 5. Cheat sheet ---------------------------------------------------------
cat <<EOF
────────────────────────────────────────────────────────
Готово! Памятка:
Запуск: pi
Обновление: pi update --extensions
Команды: /bugfix <тикет> /feature <тикет>
/review [фокус] /rfc <тема> /kit-config
Проверка: /kit-config — покажет действующие корпоративные значения
Внутренний курс по Pi: ${INTERNAL_COURSE_URL}
────────────────────────────────────────────────────────
EOF