Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
59 lines
4.3 KiB
Markdown
59 lines
4.3 KiB
Markdown
# 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` для изменённых скриптов чистые.
|
|
- Не коммитить: коммиты делает оркестратор.
|
|
|
|
Отчёт: строки до/после, время до/после, принятые самостоятельно решения,
|
|
что осталось спорным.
|