Files
dotfiles/.scratch/proxy-client-simplify/issues/02-installer-shell.md
T
2026-09-28 09:21:39 -04:00

4.3 KiB

02. Упростить установщик пакета, shell-тесты и запускалку

Status: ready-for-agent

Спецификация: ../spec.md (читать целиком).

Файлы

  • proxy-client/install.sh
  • proxy-client/.config/proxy-client/shell.bash — только если упрощение очевидно; поведение proxy_on/proxy_off/pclaude/pcodex не меняется.
  • tests/test_proxy_client_install.sh, tests/test_proxy_launchers.sh, tests/test_proxy_client_full.sh
  • proxy-client/README.md — только разделы «Установка» и «Ручное подключение без установщика» (остальное правит задача 01; при конфликте правки перечитай файл и повтори).

Не трогать: proxy-client/.local/bin/proxy-client, Python-тесты, корневой install.sh и tests/test_install.sh (кроме случая, если они ломаются от твоих правок — тогда минимально поправь и сообщи).

Что сделать

  1. Пункт 5 спецификации: install.sh ставит три симлинка напрямую (ln -s), без Stow и STOW_IGNORE_PATTERNS. Повторный запуск — ничего не меняет. Чужие файлы не перезаписывает и перечисляет все конфликты сразу (битая ссылка — тоже конфликт). ~/.local и ~/.config, которые сами ссылки, допустимы. Блок в ~/.bashrc — дописать, если нет маркера; --no-shell-setup сохраняется. Машинные config и default.url никогда не ссылаются из пакета.
  2. Тесты установщика: свежая установка (три ссылки, права, bash -ic после установки находит proxy-client и proxy_on), повторный запуск ничего не меняет, конфликты (включая битую ссылку) без частичной установки, машинные файлы сохраняются, --no-shell-setup, родительские каталоги-ссылки работают. Тесты удалённого поведения — удалить.
  3. Тесты функций Bash: вместо переопределения внутренней _proxy_cli — поддельный исполняемый файл через PROXY_CLIENT_BIN (посмотри, как это сделано в tests/test_chatgpt_proxy_launcher.sh). Удалить тест голого declare -F, тест «владение перенесено» (охрана давнего рефакторинга) и ловушки curl. Сохранить: proxy_on применяет переменные, неуспешный env не меняет окружение, proxy_off чистит восемь переменных, pclaude/pcodex передают аргументы и код выхода, .bash_custom подключает модули.
  4. tests/test_proxy_client_full.sh запускает только тесты proxy-client (Python-тесты proxy-client, env_sync, shell-тесты proxy-client). Прогон под Python 3.8 через uv — если uv есть, иначе предупреждение и пропуск. В README (раздел «Установка» или новый короткий раздел в конце — согласуй с задачей 01 через простоту: одна строка команды) — как запускать.

Готово, когда

  • Все изменённые shell-тесты зелёные; tests/test_install.sh тоже зелёный.
  • Тесты не требуют установленного stow.
  • bash -n и (если есть) shellcheck для изменённых скриптов чистые.
  • Не коммитить: коммиты делает оркестратор.

Отчёт: строки до/после, время до/после, принятые самостоятельно решения, что осталось спорным.