Расширяемый CLI-инструмент для взаимодействия с сайтами для заказа автозапчастей, а также неофициальные API-обёртки над autodoc.ru и armtek.ru.
Как расширить? – См. интерфейс провайдера.
$ adoc part n90954802 VAG
n90954802 · VAG · armtek, autodoc
# ПРОВАЙДЕР БРЕНД НАЗВАНИЕ ЦЕНА НАЛИЧИЕ СРОК ПРОДАВЕЦ РЕЙТИНГ ССЫЛКА
1 armtek VAG Болт 380 ₽ 3 шт 2 дня armtek 4.5★ (10) https://armtek.ru/product/…
2 autodoc VAG Болт 407 ₽ 12 шт 1 день Москва 4.9★ (56) https://www.autodoc.ru/man/657/part/n90954802Вся полученная информация может быть неточной, неполной и устаревшей — см. docs/autodoc-api.md, docs/armtek-api.md.
Список команд и флагов — adoc --help, команды самого сайта — adoc <сайт> --help.
Кроме цен по артикулу это поиск по названию под машину гаража, применимость,
кросс-номера, отзывы, корзины и заказы всех сайтов сразу:
$ adoc search "опора амортизатора"
$ adoc fits 815010730 FAG$ bun install -g github:pashokitsme/adoc
$ gh skill install pashokitsme/adoc adocСтавятся три бинаря: adoc — обёртка, adoc-autodoc и adoc-armtek —
провайдеры. Обычно нужен только первый.
Адрес страницы печатается везде, где сайт его даёт: последней колонкой
ССЫЛКА в самой строке — сводить номер строки со списком под таблицей больше
не нужно, а строка, найденная сразу на нескольких сайтах, держит все свои
адреса в той же ячейке через пробел. Адреса не режутся: обрезанный адрес не
открыть. В терминале, который умеет терминальные ссылки (OSC 8), колонки нет
вовсе — адрес вшит в номер, артикул, название и имя сайта. Режим переключает
ADOC_LINKS.
$ adoc login autodoc # диалог в терминале, пароль без эха
$ adoc accounts # кто авторизован у всех сайтов сразу
$ adoc logout autodoc # забыть аккаунтВход нужен каждому сайту отдельно. Пароль вводится только с терминала и на диск
не пишется; токены лежат в ~/.config/adoc/accounts/<id>.json с правами 600.
adoc login токенов не печатает — а вот adoc <сайт> login --json печатает
аккаунт целиком, и этот вывод нельзя ни логировать, ни пересылать. Имя, email и
телефон показываются как есть: это личные данные владельца аккаунта.
adoc — обёртка, а каждый сайт — отдельная программа, реализующая
интерфейс провайдера. Встроенные лежат в
src/providers/*/main.ts, чужие — это любые исполняемые файлы adoc-<id> в
PATH, на любом языке. Что подключено и что умеет — adoc providers.
Подробности поведения — команды, порядок «артикул → бренд», применимость, кросс-ссылки, корзина и гараж — описаны для агентов в skills/adoc/SKILL.md.
| переменная | кто читает | что делает | по умолчанию |
|---|---|---|---|
ADOC_CONFIG_DIR |
обёртка и все провайдеры | каталог настроек: гараж, кэш последней выдачи part, файлы аккаунтов |
$XDG_CONFIG_HOME/adoc, а без него — ~/.config/adoc |
ADOC_PROVIDERS_DIR |
обёртка | берёт провайдеров только из этого каталога (подкаталог с main.ts на провайдера), заменяя и встроенные, и найденные в PATH |
встроенные + adoc-<id> из PATH |
ADOC_LINKS |
вывод для человека | osc8 — адреса терминальными ссылками в тексте, list — колонкой «ССЫЛКА», off — не показывать; см. Ссылки |
osc8 в TTY знакомого терминала, иначе list |
NO_COLOR |
вывод для человека | гасит цвет; на ссылки не влияет | цвет включён в TTY |
ADOC_DEBUG |
обёртка и все провайдеры | трассировка сети в stderr: «→ метод адрес», «← статус время тело»; токены и пароль не печатаются (то же на один вызов — --verbose, кратко -v) |
выключена |
ADOC_NO_WARN |
обёртка и все провайдеры | гасит предупреждения (то же самое на один вызов — --quiet, кратко -q): жёлтые строки отказов, заметки сайтов, подсказку про клик. Ошибки, выдача и код возврата те же |
предупреждения печатаются |
ARMTEK_PHONE, ARMTEK_PASSWORD |
провайдер armtek | учётка для adoc armtek login без терминала; нужны обе |
вход спрашивает человека |
PATH и XDG_CONFIG_HOME — общесистемные, но обёртка смотрит и в них: в
первом ищет провайдеров adoc-<id>, во втором — каталог настроек.
Только для тестов, в обычной работе не нужны:
| переменная | что делает |
|---|---|
ADOC_FIXTURES |
провайдер autodoc читает записанные ответы из этого каталога вместо сети |
ADOC_AUTODOC_BASE |
адрес API autodoc; принимается только localhost |
ADOC_TIMEOUT_MS |
таймаут HTTP-запроса провайдера autodoc, мс |
ARMTEK_FIXTURES |
маршруты фикстур для test/fixtures/armtek-cli.ts: JSON «кусок пути → файл» |
FAKE_<ID>_*, NOISY_STDERR_BYTES |
ручки фиктивных провайдеров из test/fixtures: задержка, отказ нужным кодом, пустая выдача, отсутствие capability, мусор в stderr |
$ bun test
$ bun run typecheckТесты не ходят в сеть и не трогают настоящий конфиг: ADOC_CONFIG_DIR уводит
конфиг во временный каталог, ADOC_PROVIDERS_DIR подменяет весь набор
провайдеров фикстурами из test/fixtures/providers, а провайдеры читают
записанные ответы вместо сети — autodoc через ADOC_FIXTURES, armtek через
подменённый транспорт (test/fixtures/armtek-cli.ts). Все переменные —
в разделе Переменные окружения.
$ ADOC_FIXTURES=test/fixtures/autodoc/http adoc autodoc info n90954802Имя файла фикстуры — метод и путь запроса, где / заменены на _:
GET /api/goods-service/goods/info → GET__api_goods-service_goods_info.json.