O comando duo

O mesmo motor como ferramenta de linha de comando, e as duas coisas que ele se recusa a fazer pela metade.

← Toda a documentação

O mesmo motor tem uma linha de comando. O duo é vinculado ao DuoUpdaterCore de verdade, então ele usa as mesmas fontes na mesma ordem, a mesma política de instalação e as mesmas regras de ignorar e pular que a barra de menus — uma divergência entre os dois é um bug, não uma diferença de opinião.

make cli          # → ~/.local/libexec/duo, com um link simbólico em ~/.local/bin/duo

duo list                     # o que está instalado, sem tocar na rede
duo check --json             # o que tem atualização, um objeto JSON por linha
duo install Cursor           # aplica uma, ou --all
duo doctor                   # se esta máquina realmente consegue instalar algo
duo backups                  # lista os pontos de reversão, ou recoloca um no lugar

duo check e duo list também aceitam --source sparkle,github,… e --include-hidden. duo ignore e duo skip gravam as mesmas preferências que o app lê, então esconder algo num deles esconde no outro também.

Duas coisas que ele se recusa a fazer pela metade

Atualizações da App Store. Esse caminho precisa do auxiliar privilegiado — cujo registro via SMAppService exige um bundle de app — ou da API de Acessibilidade controlando o App Store.app. Uma ferramenta de linha de comando não tem nenhum dos dois, então ela avisa isso em vez de falhar no meio do caminho.

Tomar a trava de instalação à força. Se o app da barra de menus está no meio de uma instalação, o duo encerra e diz quem está segurando a trava, em vez de trocar um bundle debaixo dele.

O lado de manutenção

duo verify, duo triage e duo reconcile varrem cada receita escrita à mão contra seu endpoint em produção, perguntam a um modelo por que uma receita quebrada deixou de funcionar, e transformam o resultado em issues. É isso que a verificação noturna roda. Eles não são necessários para o uso comum.