Команда duo

Тот же движок в виде инструмента командной строки — и две вещи, которые он отказывается делать наполовину

← Вся документация

У того же движка есть командная строка. duo подключается к настоящему DuoUpdaterCore, поэтому использует те же источники в том же порядке, ту же политику установки и те же правила игнорирования и пропуска, что и строка меню, — расхождение между ними двумя — это баг, а не разница во мнениях.

make cli          # → ~/.local/libexec/duo, симлинк в ~/.local/bin/duo

duo list                     # что установлено, без обращения к сети
duo check --json             # что имеет обновление, один JSON-объект на строку
duo install Cursor           # применить одно, или --all
duo doctor                   # может ли эта машина вообще что-то установить
duo backups                  # список точек отката, или восстановление одной из них

duo check и duo list также принимают --source sparkle,github,… и --include-hidden. duo ignore и duo skip записывают те же самые настройки, которые читает приложение, поэтому скрытое в одном месте скрыто и в другом.

Две вещи, которые он отказывается делать наполовину

Обновления App Store. Этот путь требует либо привилегированного помощника — чья регистрация SMAppService требует bundle приложения, — либо API «Универсальный доступ», управляющего App Store.app. У инструмента командной строки нет ни того, ни другого, поэтому он сообщает об этом прямо, вместо того чтобы наполовину провалить попытку.

Захват блокировки установки силой. Если приложение в строке меню сейчас выполняет установку, duo завершает работу и называет того, кто держит блокировку, вместо того чтобы подменить bundle прямо у него из-под рук.

Обслуживающая сторона

duo verify, duo triage и duo reconcile проверяют каждый написанный вручную рецепт по его действующей конечной точке, спрашивают у модели, почему сломался неисправный, и превращают результат в issue. Именно это выполняет ночная проверка. Для обычного использования они не нужны.