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ível

Faz 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.
Exemplo $ gize new shop --database mysql --api-version 1
gize make app <nome>Disponível

Cria 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.
Exemplo $ gize make app products
gize make model <Nome> campo:Tipo …Disponível

Gera 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).
Exemplo $ gize make model User name:String email:String
gize make crud <Nome> campo:Tipo …Disponível

O 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.
Exemplo $ gize make crud Product name:String price:i32 active:bool
gize make migration [nome]Disponível

Cria 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.
Exemplo $ gize make migration add_index_to_users
gize make adminDisponível

Gera 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).
Exemplo $ gize make admin
gize migrate [--status]Disponível

Aplica 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.
Exemplo $ gize migrate --status
gize createadminDisponível

Cria 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).
Exemplo $ gize createadmin --email admin@example.com --name Admin --password-env GIZE_ADMIN_PASSWORD
gize serveDisponível

Roda 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.
Exemplo $ gize serve --api-only
gize syncDisponível

Reconcilia 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).
Exemplo $ gize sync
gize doctorDisponível

Faz 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.
Exemplo $ gize doctor
gize fmtDisponível

Formata 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.
Exemplo $ gize fmt
gize checkDisponível

Faz 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.
Exemplo $ gize check

Seguro 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.