refactor(proxy-client): шаблоны прокси для агентов копируются вручную

- Зачем: прокси для агента — выбор конкретной машины. Автоматическая
  правка ~/.codex/.env и ~/.claude/settings.json оказалась слишком
  навязчивой.
- Что: шаблоны перенесены в proxy-client/.config/proxy-client/examples/
  (codex.env, claude-settings.json) и попадают на машину вместе с
  остальными примерами. install.sh больше не трогает настройки Codex и
  Claude, его тесты на это удалены. Инструкция по копированию — в README
  proxy-client.
- Проверка: tests/test_install.sh и tests/test_proxy_client_install.sh
  проходят.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ddadminandClaude Opus 5.5 committed 2026-10-14 18:31:35 +02:00
1 parent ce9270623d
commit e36a756bed
6 files changed
+46 -192

No files matched your search

-69
View File
@@ -505,81 +505,12 @@ if [ -d "$SKILLS_SRC" ]; then
ensure_symlink "$SKILLS_SRC" "$HOME/.claude/skills"
fi
# Прокси для Claude Code: блок env из claude/proxy-settings.json добавляется в
# ~/.claude/settings.json. Значения из env перекрывают унаследованное окружение.
# Если в env уже есть хоть одна proxy-переменная, файл не трогаем: машинный
# выбор (свой адрес или очищенные значения) важнее шаблона.
CLAUDE_PROXY_SRC="$DOTFILES_DIR/claude/proxy-settings.json"
CLAUDE_SETTINGS="$HOME/.claude/settings.json"
if [ -f "$CLAUDE_PROXY_SRC" ]; then
if [ -L "$CLAUDE_SETTINGS" ]; then
warn "~/.claude/settings.json — симлинк, прокси не добавляю"
elif ! command -v python3 &>/dev/null; then
warn "python3 не найден, прокси в ~/.claude/settings.json не добавлен"
else
claude_proxy_status=0
python3 -I - "$CLAUDE_PROXY_SRC" "$CLAUDE_SETTINGS" <<'PY' || claude_proxy_status=$?
import json
import os
import sys
import tempfile
src, dst = sys.argv[1:3]
with open(src, encoding="utf-8") as f:
template = json.load(f)["env"]
settings = {}
if os.path.exists(dst):
try:
with open(dst, encoding="utf-8") as f:
settings = json.load(f)
except ValueError:
sys.exit(2)
if not isinstance(settings, dict) or not isinstance(settings.get("env", {}), dict):
sys.exit(2)
env = settings.setdefault("env", {})
if any(key.lower() in ("http_proxy", "https_proxy", "all_proxy", "no_proxy") for key in env):
sys.exit(3)
env.update(template)
mode = os.stat(dst).st_mode & 0o777 if os.path.exists(dst) else 0o600
fd, tmp = tempfile.mkstemp(dir=os.path.dirname(dst), prefix=".settings.json.")
with os.fdopen(fd, "w", encoding="utf-8") as f:
json.dump(settings, f, indent=2, ensure_ascii=False)
f.write("\n")
os.chmod(tmp, mode)
os.replace(tmp, dst)
PY
case "$claude_proxy_status" in
0) info "В ~/.claude/settings.json добавлен прокси 127.0.0.1:12334" ;;
3) info "В ~/.claude/settings.json прокси уже задан, оставляю как есть" ;;
2) warn "~/.claude/settings.json не разобран как JSON-объект, прокси не добавлен" ;;
*) warn "Не удалось добавить прокси в ~/.claude/settings.json" ;;
esac
fi
fi
# ── Codex ────────────────────────────────────────────────────────────
# Пакета в репозитории нет: ~/.codex — обычный каталог, его заполняет Codex.
# Миграция раскрывает старый свёрнутый симлинк и переносит рантайм-данные.
migrate_folded_symlink "$HOME/.codex" .gitkeep
# ~/.codex/.env Codex читает при старте, и его значения перекрывают
# унаследованное окружение. По умолчанию кладём прокси на 127.0.0.1:12334.
# Готовый файл на машине не трогаем: где прокси не нужен, его очищают вручную.
CODEX_ENV_SRC="$DOTFILES_DIR/codex/proxy.env"
if [ -f "$CODEX_ENV_SRC" ]; then
mkdir -p "$HOME/.codex"
if [ -e "$HOME/.codex/.env" ] || [ -L "$HOME/.codex/.env" ]; then
info "~/.codex/.env уже есть, оставляю как есть"
else
cp "$CODEX_ENV_SRC" "$HOME/.codex/.env"
info "Создан ~/.codex/.env: Codex работает через прокси 127.0.0.1:12334"
fi
fi
# ── Bash: .bashrc ────────────────────────────────────────────────────
BASHRC="$HOME/.bashrc"