CLI `truo`
npm install -g @truocloud/clibrew install truocloud/tap/truoscoop bucket add truocloud https://github.com/truocloud/scoop-bucket && scoop install truocurl -fsSL https://raw.githubusercontent.com/truocloud/truo-devkit/main/install.sh | shLos binarios se publican con su SHA256SUMS, y brew, scoop y install.sh lo
verifican. Los paquetes de npm salen con
provenance.
truo auth logintruo services listtruo vps power svc_10432 stopEl árbol de comandos se genera del OpenAPI. Un endpoint nuevo aparece en el CLI —con su ayuda, sus argumentos y sus valores válidos— sin que nadie escriba código de CLI.
Tabla por defecto. Todo lo que no son datos —progreso, avisos, confirmaciones—
va a stderr, así truo vps list -o json > f.json siempre sale limpio.
truo vps list -o json | jq '.[].hostname'truo vps list -o jsonl # una línea por elemento, para streameartruo vps list -o id | xargs -n1 truo vps gettruo vps get svc_1 --field hostname # recorta la salidaOperaciones que tardan
Sección titulada «Operaciones que tardan»Se esperan por defecto. Un CLI que devuelve antes de que la cosa pase obliga a cada script a escribir su propio bucle de polling, y la mitad no lo escribe.
truo vps power svc_10432 stop # esperatruo vps power svc_10432 stop --no-wait # imprime el id y sale 0truo operation wait op_01JQ8X… # retomar despuésSi vence el tiempo de espera, el CLI sale con 9 e imprime el id: la operación sigue corriendo, solo dejamos de mirarla.
Confirmaciones
Sección titulada «Confirmaciones»Todo lo marcado destructive en el contrato pregunta antes. --yes lo saltea, y
sin terminal interactiva el CLI falla en vez de asumir que sí.
Códigos de salida
Sección titulada «Códigos de salida»Contrato público, para que un script no parsee el texto del error.
0 ok |
1 bug del CLI |
2 uso incorrecto |
3 sin credencial |
4 sin scope o permiso |
5 no existe |
6 conflicto |
7 rate limit |
8 la API falló |
9 venció la espera |
10 cancelaste |
130 Ctrl-C |
Perfiles
Sección titulada «Perfiles»truo config use producciontruo config set base_url https://api.truo.cloudtruo config listLa configuración vive en ~/.truo/config.json y las credenciales en un archivo
aparte (credentials.json, modo 0600). Están separadas a propósito:
mezcladas, es cuestión de tiempo que alguien pegue un token en un ticket.
Precedencia: --token → TRUO_TOKEN → perfil.
El escape hatch
Sección titulada «El escape hatch»Para lo que la API ya expone y el CLI todavía no envuelve. No valida argumentos ni pide confirmación: es crudo a propósito.
truo api GET /v1/vpstruo api POST /v1/vps/svc_1/power --body-json '{"action":"stop"}'Existe para que nunca haya que esperar una versión del CLI para usar algo que la API ya tiene.
Autocompletado
Sección titulada «Autocompletado»eval "$(truo completion bash)" # bash · zsh · fishTambién se genera del árbol de comandos, así que tampoco puede quedar viejo.