feat: автоопределение BIN_DIR — ~/bin если есть в PATH, иначе ~/.local/bin
- BIN_DIR теперь определяется по наличию ~/bin в PATH (для Mint, где нет .bashrc) - source путей в генерируемых скриптах заменены на self-referential (через BASH_SOURCE) - agy_bin подменяется post-generation sed при нестандартном BIN_DIR - add_path_to_rc() формирует PATH динамически с учётом BIN_DIR - при миграции на ~/bin старые скрипты из ~/.local/bin удаляются Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,12 @@
|
||||
# ============================================================
|
||||
|
||||
CONFIG_DIR="$HOME/.config/ai-setup"
|
||||
BIN_DIR="$HOME/.local/bin"
|
||||
# Автоопределение: ~/bin если есть в PATH, иначе ~/.local/bin
|
||||
if [[ ":$PATH:" == *":$HOME/bin:"* ]]; then
|
||||
BIN_DIR="$HOME/bin"
|
||||
else
|
||||
BIN_DIR="$HOME/.local/bin"
|
||||
fi
|
||||
NPM_GLOBAL="$HOME/.npm-global"
|
||||
PROXY_BIN="$BIN_DIR/claude-code-proxy"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
@@ -744,13 +749,14 @@ clean_rc "$HOME/.zshrc"
|
||||
|
||||
add_path_to_rc() {
|
||||
local rc_file="$1"
|
||||
local bin_rel="${BIN_DIR#$HOME/}"
|
||||
if [ -f "$rc_file" ]; then
|
||||
if ! grep -q 'NPM_GLOBAL' "$rc_file" 2>/dev/null; then
|
||||
cat >> "$rc_file" << 'PATHEOF'
|
||||
cat >> "$rc_file" << PATHEOF
|
||||
|
||||
# Claude Code Launcher PATH
|
||||
export NPM_GLOBAL="$HOME/.npm-global"
|
||||
export PATH="$NPM_GLOBAL/bin:$HOME/.local/bin:$PATH"
|
||||
export NPM_GLOBAL="\$HOME/.npm-global"
|
||||
export PATH="\$NPM_GLOBAL/bin:\$HOME/${bin_rel}:\$PATH"
|
||||
PATHEOF
|
||||
success "PATH добавлен в $rc_file"
|
||||
fi
|
||||
@@ -1027,7 +1033,7 @@ chmod +x "$HELPERS_FILE"
|
||||
cat > "$BIN_DIR/ai-gpt" << 'GPTEOF'
|
||||
#!/usr/bin/env bash
|
||||
# ai-gpt - запуск нативного OpenAI Codex
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true
|
||||
|
||||
codex_bin="$HOME/.npm-global/bin/codex"
|
||||
[ ! -f "$codex_bin" ] && codex_bin="$(command -v codex 2>/dev/null)"
|
||||
@@ -1060,7 +1066,7 @@ chmod +x "$BIN_DIR/ai-gpt"
|
||||
# === ai-deepseek ===
|
||||
cat > "$BIN_DIR/ai-deepseek" << 'DEEPSEEKEOF'
|
||||
#!/usr/bin/env bash
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true
|
||||
|
||||
key_file="$HOME/.config/ai-setup/deepseek_key"
|
||||
api_key=""
|
||||
@@ -1135,7 +1141,7 @@ chmod +x "$BIN_DIR/ai-deepseek"
|
||||
cat > "$BIN_DIR/ai-kimi" << 'KIMIEOF'
|
||||
#!/usr/bin/env bash
|
||||
# ai-kimi - запуск Claude Code через официальный Kimi Code API
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true
|
||||
|
||||
key_file="$HOME/.config/ai-setup/kimi_key"
|
||||
api_key=""
|
||||
@@ -1207,7 +1213,7 @@ chmod +x "$BIN_DIR/ai-kimi"
|
||||
cat > "$BIN_DIR/ai-openrouter" << 'OPENROUTEREOF'
|
||||
#!/usr/bin/env bash
|
||||
# ai-openrouter - запуск Claude Code через OpenRouter (любые модели)
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true
|
||||
|
||||
key_file="$HOME/.config/ai-setup/openrouter_key"
|
||||
api_key=""
|
||||
@@ -1297,19 +1303,21 @@ if [ -z "$agy_bin" ] || [ ! -f "$agy_bin" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true
|
||||
|
||||
# agy нативно подтягивает правила и проектные .md файлы,
|
||||
# поэтому ручная инъекция SYS_PROMPT больше не требуется.
|
||||
exec "$agy_bin" --dangerously-skip-permissions "$@"
|
||||
GEMINIEOF
|
||||
chmod +x "$BIN_DIR/ai-gemini"
|
||||
# Подменяем путь к agy, если BIN_DIR отличается от ~/.local/bin
|
||||
[ "$BIN_DIR" != "$HOME/.local/bin" ] && sed -i "s|\$HOME/\.local/bin|\$HOME/${BIN_DIR#$HOME/}|g" "$BIN_DIR/ai-gemini"
|
||||
|
||||
# === ai-claude ===
|
||||
cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF'
|
||||
#!/usr/bin/env bash
|
||||
# ai-claude - запуск оригинального Claude Code (Anthropic)
|
||||
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true
|
||||
_PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX)
|
||||
trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM
|
||||
_build_ai_sys_prompt > "$_PROMPT_FILE"
|
||||
@@ -1332,6 +1340,14 @@ fi
|
||||
info "Удаляю старые версии скриптов (claude_*)..."
|
||||
rm -f "$BIN_DIR/claude_gpt" "$BIN_DIR/claude_deepseek" "$BIN_DIR/claude_kimi" "$BIN_DIR/claude_gemini" "$BIN_DIR/claude_api_helpers.sh"
|
||||
|
||||
# Если переехали на ~/bin — удаляем старые скрипты из ~/.local/bin
|
||||
if [ "$BIN_DIR" != "$HOME/.local/bin" ]; then
|
||||
warn "BIN_DIR=$BIN_DIR — удаляю старые скрипты из ~/.local/bin/ ..."
|
||||
rm -f "$HOME/.local/bin/ai-gpt" "$HOME/.local/bin/ai-deepseek" "$HOME/.local/bin/ai-kimi" \
|
||||
"$HOME/.local/bin/ai-openrouter" "$HOME/.local/bin/ai-gemini" "$HOME/.local/bin/ai-claude" \
|
||||
"$HOME/.local/bin/ai-api-helpers.sh" "$HOME/.local/bin/claude-gpt-effort-proxy.py"
|
||||
fi
|
||||
|
||||
success "Скрипты сгенерированы."
|
||||
|
||||
# ── 9. Итог ──────────────────────────────────────────────────
|
||||
@@ -1340,7 +1356,7 @@ echo -e "${GREEN}═════════════════════
|
||||
echo -e "${GREEN} Установка завершена!${NC}"
|
||||
echo -e "${GREEN}════════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
echo "Доступные команды (теперь это независимые скрипты в ~/.local/bin):"
|
||||
echo "Доступные команды (теперь это независимые скрипты в ~/${BIN_DIR#$HOME/}):"
|
||||
echo ""
|
||||
echo " На базе Claude Code:"
|
||||
echo -e " ${CYAN}ai-claude${NC} - Оригинальный Claude Code (Anthropic)"
|
||||
|
||||
2
setup.sh
2
setup.sh
@@ -56,7 +56,7 @@ else
|
||||
echo -e " ${GRY}Тесты маршрутизации: .ru напрямую, остальное через Amnezia.${CLR}"
|
||||
echo ""
|
||||
echo -e " ${BLD}7) Обновить${CLR}"
|
||||
echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/.local/bin.${CLR}"
|
||||
echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/bin (или ~/.local/bin).${CLR}"
|
||||
echo ""
|
||||
echo -n "Выбери [1-7] или Enter для выхода: "
|
||||
read -r choice
|
||||
|
||||
Reference in New Issue
Block a user