Comandos da CLI
Cada comando do gize: o que ele gera, quando usar e as flags que aceita. A CLI segue o formato verbo–subcomando definido no ADR-012.
Flags globais
Valem para todo comando de geração (gize new e gize make …). A geração é segura por padrão: nada é sobrescrito sem você pedir.
--dry-runMostra as operações de arquivo planejadas (create / skip / update) e não escreve nada.--forceSobrescreve arquivos que já existem; sem ela, arquivos existentes são pulados.Comandos
gize new <nome>DisponívelFaz o scaffold de um novo projeto num diretório com o nome <nome>: um app que compila e sobe em segundos.
- Escreve Cargo.toml, gize.toml, .env.example, .gitignore e o layout completo em src/ (app, config, database, middleware, shared, router.rs, state.rs, main.rs).
- Por padrão também gera um recurso users embutido (model, CRUD completo e uma migration com a flag is_admin) já conectado em app/mod.rs e gize.toml.
- Use --no-user para gerar só o esqueleto, sem o recurso users.
- Escolha o banco com --database postgres (padrão), sqlite ou mysql; use --openapi para um spec + UI em /docs, e --api-version 1 para montar todas as rotas sob /api/v1.
- Use --ws para gerar um módulo WebSocket (src/app/ws/) com um endpoint de echo tipado em /ws.
gize new shop --database mysql --api-version 1gize make app <nome>DisponívelCria um módulo de aplicação e o conecta ao projeto.
- Gera os nove arquivos do módulo (mod, model, dto, repository, service, handler, routes, error, tests) com uma rota placeholder.
- Registra mod <nome>; e .merge(<nome>::routes()) em src/app/mod.rs e adiciona o módulo ao gize.toml. Tudo isso é idempotente, então rodar de novo é no-op.
gize make app productsgize make model <Nome> campo:Tipo …DisponívelGera a struct do model e sua migration CREATE TABLE a partir das definições inline de campos.
- model.rs é uma struct sqlx::FromRow; uma chave primária id: Uuid e timestamps created_at / updated_at são adicionados para você.
- O nome da tabela e do módulo é o snake_case pluralizado do model (User → users).
gize make model User name:String email:Stringgize make crud <Nome> campo:Tipo …DisponívelO comando principal: uma fatia vertical completa e conectada para um recurso.
- Gera model, dto, repository (SQLx), service, handler (Axum), routes, um error tipado, tests e a migration.
- Registra o módulo em app/mod.rs e gize.toml, expondo endpoints GET/POST/PUT/DELETE funcionando contra o banco.
gize make crud Product name:String price:i32 active:boolgize make migration [nome]DisponívelCria uma migration SQL em branco, com timestamp, para preencher à mão.
- A saída de emergência para mudanças que o gerador orientado a model não cobre: índices, constraints, backfills de dados, alterações de coluna.
- Os arquivos CREATE TABLE orientados a model vêm de make model / make crud.
gize make migration add_index_to_usersgize make adminDisponívelGera um SPA de admin em React + TypeScript (Vite), standalone, para cada recurso do manifesto.
- Um dashboard com tema escuro inspirado no Django: changelist com busca, filtros por campo, paginação e ações em massa, além de um drawer lateral para criar/editar com selects de chave estrangeira.
- Um artefato separado e deployável em admin/ que fala com a API via JWT por um proxy de dev do Vite, e não é acoplado ao build do backend (ADR-006).
gize make admingize migrate [--status]DisponívelAplica as migrations SQL pendentes de migrations/*.sql contra a DATABASE_URL.
- Usa o migrator do SQLx, que registra as versões aplicadas em _sqlx_migrations, ordenado e idempotente. Não há auto-migration arriscada em runtime.
- Use --status para listar as migrations aplicadas [x] versus pendentes [ ] em vez de aplicá-las.
gize migrate --statusgize createadminDisponívelCria o primeiro usuário admin no banco: o createsuperuser do Gize.
- Interativo por padrão (pergunta email, nome e uma senha oculta e confirmada); não-interativo para CI com --email/--name e a senha lida de --password-env, nunca como argumento direto.
- Faz o hash da senha com Argon2id no formato que o login gerado verifica, marca is_admin, rejeita email duplicado, e funciona com Postgres, SQLite ou MySQL (ADR-017).
gize createadmin --email admin@example.com --name Admin --password-env GIZE_ADMIN_PASSWORDgize serveDisponívelRoda a aplicação gerada e, quando existe um admin, também o dev server do admin ao lado dela.
- Lê DATABASE_URL e PORT (padrão 8080) do ambiente.
- Quando o projeto tem um admin gerado, sobe também o dev server do admin: detecta o gerenciador de pacotes (pnpm, npm ou yarn), instala as deps na primeira vez, imprime as duas URLs e encerra ambos no Ctrl-C.
- Escolha o modo com --api-only, --admin-only ou --with-admin.
gize serve --api-onlygize syncDisponívelReconcilia o projeto a partir do gize.toml: regenera o que falta e reporta drift.
- Dry-run primeiro e com detecção de drift: nunca sobrescreve edições manuais sem --force. Adicione um [[module]] ao gize.toml e o sync gera e conecta o módulo (ADR-009).
gize syncgize doctorDisponívelFaz um check de sanidade do seu ambiente e projeto.
- Reporta a disponibilidade de cargo / rustfmt, se você está dentro de um projeto Gize (gize.toml) e se a DATABASE_URL está definida.
gize doctorgize fmtDisponívelFormata o projeto com rustfmt, um wrapper fino sobre cargo fmt --all.
- Roda no workspace inteiro para o código gerado e o escrito à mão ficarem consistentes.
gize fmtgize checkDisponívelFaz lint do projeto com o clippy, negando warnings.
- Envolve cargo clippy --all-targets -- -D warnings, o mesmo portão de qualidade que a CI aplica.
gize checkSeguro por padrão: arquivos existentes são pulados a menos que você passe --force, e --dry-run mostra o plano completo sem escrever nada. As edições de registro em app/mod.rs e gize.toml são idempotentes.