Skip to content

Comando documentar passa a reportar resultado explícito e gerar opena…#123

Merged
leonelsanchesdasilva merged 1 commit into
DesignLiquido:principalfrom
oxbar:corrige-documentar-silencioso-114
Jul 13, 2026
Merged

Comando documentar passa a reportar resultado explícito e gerar opena…#123
leonelsanchesdasilva merged 1 commit into
DesignLiquido:principalfrom
oxbar:corrige-documentar-silencioso-114

Conversation

@oxbar

@oxbar oxbar commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Comando documentar passa a reportar resultado explícito e gerar openapi.json

Fixes #114

Problema

npx liquido documentar imprimia o banner e terminava em silêncio absoluto. Na prática, o comando não fazia nada observável: o documento OpenAPI era montado em memória pelo AutoDocumentador e descartado pela camada de CLI (havia até um // TODO: Terminar após finalizar auto-documentador. no wrapper) — nenhum arquivo gravado, nenhuma mensagem de resultado, nenhum erro.

Solução

O comando agora sempre termina com um desfecho explícito, cobrindo a sugestão da issue ("reportar ação realizada — arquivo gerado, caminho — ou motivo de não ter feito nada"):

Quando há rotas — grava a especificação em openapi.json na raiz do projeto e reporta:

Documentação OpenAPI gerada com 3 rota(s) em: /caminho/do/projeto/openapi.json

Quando não há rotas — informa exatamente onde procurou e por que nada foi gerado:

Nenhum arquivo de rota (.delegua) foi encontrado em: /caminho/do/projeto/rotas/rest
Nenhum arquivo de documentação foi gerado.

Avisos de análise — erros acumulados pelo AutoDocumentador agora são exibidos com prefixo Aviso: (em amarelo, via chalk já usado no projeto), em vez de morrerem silenciosamente no array interno.

A função documentar() também aceita um caminho de saída opcional, o que facilita testes e usos programáticos.

Correção acessória necessária (AutoDocumentador)

O reset this.erros = [] ficava dentro de lerControlador, executado por arquivo — apagando tanto os erros de análise registrados por obterEstruturasDeAltoNivelDeControlador (que roda antes dele) quanto os erros de arquivos anteriores. Na prática, os avisos nunca sobreviviam para serem reportados. O reset foi movido para o início de documentar(), acumulando todos os avisos de uma execução. Os testes existentes do AutoDocumentador seguem passando sem alteração (cada teste instancia um objeto novo).

Testes

Novo testes/interface-linha-comando/documentar.test.ts com 3 casos:

  1. Sem rotas → mensagens explícitas (diretório varrido + "nenhum arquivo gerado") e nenhum openapi.json criado;
  2. Com rota → openapi.json válido gravado (openapi: 3.0.0, path presente), contagem e caminho reportados, e avisos de análise visíveis;
  3. Caminho de saída customizado respeitado e reportado.
Test Suites: 15 passed, 15 total
Tests:       160 passed, 160 total
(suítes interface-linha-comando + infraestrutura + liquido.test.ts)

Observação de escopo (relaciona-se ao achado M3)

Os métodos HTTP de cada rota ainda saem vazios na especificação: o avaliador sintático não conhece o global liquido e registra Variável não definida: 'liquido' para todo arquivo de rota — inclusive para o fixture do próprio repositório (testes/exemplos/rotas/inicial.delegua; o teste existente só verifica Array.isArray, então passa mesmo com a análise falhando). Essa é a causa-raiz do achado M3 (OpenAPI gerado vazio) e merece correção própria — provavelmente pré-registrando liquido no escopo do avaliador. Com este PR, o aviso correspondente ao menos se torna visível ao usuário, em vez de ser engolido.

Checklist

  • Comando nunca mais termina em silêncio (os três desfechos são reportados)
  • Arquivo gerado com caminho explícito, conforme sugestão da issue
  • Bug de acúmulo de erros corrigido com justificativa
  • 3 testes de regressão novos; 160 testes passando nas suítes relacionadas
  • Sem novas dependências; mensagens 100% em português

…pi.json (DesignLiquido#114)

O comando 'liquido documentar' imprimia apenas o banner e terminava em
silêncio: o documento OpenAPI era montado em memória pelo
AutoDocumentador e descartado pela camada de CLI, sem gerar arquivo e
sem qualquer mensagem de resultado.

Mudanças:

- interface-linha-comando/documentar: o comando agora sempre termina
  com um desfecho explícito no console:
  * quando há rotas, grava a especificação em openapi.json na raiz do
    projeto (ou em caminho customizado via parâmetro) e reporta o
    número de rotas documentadas e o caminho do arquivo gerado;
  * quando não há rotas, informa o diretório varrido
    (rotas/rest, com padrão *.delegua) e que nenhum arquivo foi gerado;
  * avisos de análise acumulados são exibidos com prefixo 'Aviso:'.

- infraestrutura/auto-documentacao: o reset de 'erros' saiu de
  lerControlador (onde apagava, a cada arquivo, os erros de análise
  registrados por obterEstruturasDeAltoNivelDeControlador e os erros
  de arquivos anteriores) e passou para o início de documentar(),
  permitindo acumular e reportar todos os avisos de uma execução.

- Testes de regressão (documentar.test.ts) cobrindo os três desfechos:
  nenhum arquivo de rota encontrado (mensagem explícita, sem arquivo
  gerado), geração com contagem/caminho reportados e avisos visíveis,
  e caminho de saída customizado.

Observação de escopo: os métodos HTTP de cada rota ainda saem vazios
na especificação porque o avaliador sintático não conhece o global
'liquido' ('Variável não definida'), afetando inclusive o fixture do
próprio repositório. Essa é a causa-raiz do achado M3 (OpenAPI vazio)
e fica para correção própria; com esta mudança, o aviso correspondente
ao menos se torna visível ao usuário.

Fixes DesignLiquido#114
@github-actions

Copy link
Copy Markdown

Coverage report

St.
Category Percentage Covered / Total
🟢 Statements 84.22% 1158/1375
🟡 Branches 61.58% 428/695
🟢 Functions 89.29% 175/196
🟢 Lines 84.79% 1132/1335

Test suite run success

237 tests passing in 24 suites.

Report generated by 🧪jest coverage report action from 2302de3

@leonelsanchesdasilva leonelsanchesdasilva left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado!

@leonelsanchesdasilva
leonelsanchesdasilva merged commit 2aa0257 into DesignLiquido:principal Jul 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[MÉDIA] Comando documentar silencioso

2 participants