@shadecloud/cli
v0.1.0
Published
Official command line interface for Shade Cloud.
Maintainers
Readme
Shade Cloud CLI
CLI oficial da Shade Cloud para autenticar, listar projetos, consultar status, enviar deploys por ZIP e ler logs pela API pública.
Instalação
npm install -g @shadecloud/cliRequer Node.js 20.10 ou superior.
Login
Crie uma API key no painel da Shade Cloud em Configurações / API pública e habilite os escopos necessários:
projects:readprojects:writedeployments:readdeployments:writelogs:read
shade loginA API key fica salva no storage local do usuário via conf. Ela nunca é escrita em .shadeconfig e nunca é exibida inteira no terminal.
Também é possível usar variável de ambiente:
SHADE_API_KEY=shade_sk_xxx shade projectsPrimeiro uso
Dentro da pasta do seu projeto, rode:
shade initO CLI vai perguntar como conectar esta pasta à Shade Cloud:
- Usar um projeto que já existe na Shade Cloud: escolha na lista e o CLI salva o ID no
.shadeconfig. - Criar um novo projeto a partir do GitHub: informe
usuário/repositórioe branch. - Colar o ID de um projeto que você já tem: use quando alguém já te passou um ID como
proj_123. - Configurar este diretório agora e vincular o projeto depois: cria só os arquivos locais. Depois rode
shade deploy --project proj_xxx.
Deploy
Fluxo principal:
shade deployOpções úteis:
shade deploy --project proj_xxx
shade deploy --cwd ./apps/web
shade deploy --message "release inicial"
shade deploy --no-confirm
shade deploy --dry-runO deploy detecta o diretório atual, lê .shadeconfig, aplica .shadeignore, prepara arquivos em etapas com listr2, cria um ZIP temporário e envia para:
POST /projects/{projectId}/deployments/uploadPor padrão, arquivos sensíveis e pesados são excluídos, incluindo node_modules, .git, dist, build, .next, .cache, .turbo, logs, .env, .env.*, arquivos temporários e logs. .env.example é preservado.
Use --dry-run para ver checklist, card de resumo, arquivos incluídos, tamanho aproximado e destino sem enviar nada.
Configuração
Formato local:
{
"projectId": "proj_xxx",
"name": "minha-api",
"source": {
"type": "local"
},
"deploy": {
"include": [],
"exclude": []
}
}Formato GitHub:
{
"projectId": "proj_xxx",
"name": "minha-api",
"source": {
"type": "github",
"repository": "usuario/repositorio",
"branch": "main"
}
}O arquivo é validado com zod e campos extras retornados pela API são tolerados no client.
.shadeignore
Sintaxe compatível com .gitignore.
node_modules
.git
dist
build
.next
.cache
.turbo
.env
.env.*
*.log
.DS_StoreComandos
shade --help
shade help deploy
shade lang set pt
shade lang clear
shade login
shade logout
shade whoami
shade init
shade projects
shade projects list
shade ls
shade status --project proj_xxx
shade deploy
shade logs --project proj_xxx --deployment dep_xxx
shade cancel --project proj_xxx --deployment dep_xxxA ajuda é localizada. Para salvar um idioma padrão neste computador, use shade lang set pt ou shade lang set en.
Para comandos que precisam de projeto, como status, logs e cancel, o --project é opcional quando existe projectId no .shadeconfig. Se o CLI não encontrar um projeto configurado, ele pergunta se você quer escolher um projeto da sua conta ou colar o ID manualmente.
Variáveis de ambiente
SHADE_API_KEY: API key usada no headerAuthorization: Bearer.SHADE_API_URL: URL base da API. Default:https://api.acq.lat/public/v1.SHADE_LANG:ptouen. Sobrescreve temporariamente o idioma salvo. Sem valor salvo, o CLI usa o idioma do sistema quando possível.
Também há flags globais:
shade --api-url https://api.acq.lat/public/v1 projectsPara salvar o idioma padrão do usuário:
shade lang set pt
shade lang set en
shade lang clearUX do terminal
O CLI usa:
picocolorspara cores e destaque.orapara spinners em operações curtas.listr2para checklist visual do fluxo de deploy.@inquirer/promptspara inputs, passwords, confirmações e seleções.cli-table3para tabelas Unicode.boxenpara cards de resumo.terminal-linkpara URLs clicáveis quando o terminal suporta.
Troubleshooting
API key inválida ou revogada
shade loginOu:
SHADE_API_KEY=shade_sk_xxx shade whoamiEscopo insuficiente
Revise os escopos no painel da Shade Cloud. Deploy por ZIP requer deployments:write; listagem/status requer projects:read; logs requerem logs:read.
ID do projeto não encontrado
shade init
shade deploy --project proj_xxxSegurança
.shadeconfignão armazena API key..enve.env.*nunca entram no ZIP por padrão.- Tokens são mascarados como
shade_sk_****abcd. - Headers sensíveis não são impressos em erros.
- O ZIP de deploy é temporário e removido após o upload.
Desenvolvimento
npm install
npm run dev -- --help
npm run build
npm run typecheck
npm run lint
npm testPublicação:
npm run prepublishOnly
npm publish --access public