feat: um comando para ver a ferramenta funcionando - #35
Merged
Conversation
A auditoria de eficiência acrescentou uma dimensão à detecção — o nome que o schema dá às próprias chaves primárias — e a incluiu em Empty(). O renderizador do terminal não foi junto: ele imprime sufixo, prefixo e prefixo de tabela, e não sabe da quarta. Num schema cuja única convenção detectada seja essa, o relatório abre "DETECTED — conventions read from the schema itself", desenha a régua, e não lista nada. Uma seção afirmando ter lido convenções e nomeando nenhuma, que é o oposto do que este relatório promete. O teste percorre as quatro dimensões e falha se alguma contar como evidência sem aparecer, que é a costura que se soltou. Só apareceu porque fui gravar o demo: nenhuma leitura de código pega isto, precisa de um schema com essa forma exata.
Quem chega pelo README dá trinta segundos. Nesse tempo não dava para ver nada: a saída colorida existia, era bonita, e exigia ter um banco. docker compose -f demo/compose.yaml up sobe um Postgres descartável, carrega um schema que quase não declara a própria integridade, e imprime o relatório. Nada do usuário envolvido, e o banco morre com o contêiner. A imagem no topo do README é a saída real renderizada em SVG, não um screenshot: screenshot ninguém consegue versionar, envelhece calado, e o mantenedor não regrava sem a mesma máquina e a mesma fonte. Isto lê os bytes que a ferramenta emite, escapes inclusive, e sai de make demo-svg. O gerador é Go com //go:build ignore — roda por go run, não entra no binário de ninguém e não traz dependência. O SQL do demo passa a ter uma cópia só. docs/DEMO.md carregava a segunda, e duas cópias que precisam concordar sempre acabam discordando. E o alvo constrói na última tag, não na árvore de trabalho: o relatório carimba a própria versão, e uma gravação dizendo v0.1.2-16-g837ec2a-dirty conta ao leitor sobre o checkout do mantenedor em vez de sobre o banco dele.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O demo
$ docker compose -f demo/compose.yaml upSobe um Postgres descartável, carrega um schema que quase não declara a própria integridade, e imprime o relatório. Nada do usuário envolvido, e o banco morre com o contêiner. Testado ponta a ponta.
A imagem no topo do README é saída real renderizada em SVG, não screenshot — screenshot ninguém versiona, envelhece calado, e não se regrava sem a mesma máquina e a mesma fonte.
scripts/termsvg.golê os bytes que a ferramenta emite, escapes inclusive, emake demo-svgregenera. O gerador é Go com//go:build ignore: roda porgo run, não entra no binário e não traz dependência.O SQL do demo passa a ter uma cópia só —
docs/DEMO.mdcarregava a segunda.Dois defeitos que só a gravação revelou
A seção de detecção saía com o cabeçalho vazio. A auditoria de eficiência (#22) acrescentou uma dimensão — o nome que o schema dá às próprias chaves primárias — e a incluiu em
Empty(). O renderizador do terminal não foi junto. Num schema cuja única convenção detectada fosse essa, o relatório abriaDETECTED — conventions read from the schema itself, desenhava a régua, e não listava nada.O teste percorre as quatro dimensões e falha se alguma contar como evidência sem aparecer. Verificado por mutação.
O alvo carimbava a versão da árvore de trabalho. A gravação saía com
v0.1.2-16-g837ec2a-dirty, que conta ao leitor sobre o checkout do mantenedor em vez de sobre o banco dele. Agora constrói na última tag — o que exigiu tornarLDFLAGSrecursivo, porque com:=ele já estava expandido antes de a variável do alvo existir.Nenhum dos dois é pego por leitura de código. O primeiro precisa de um schema com uma forma específica; o segundo só existe quando alguém roda.
Verificação
go test ./...verde,golangci-lintzero issues,make release-checknos três estágiosdocker compose -f demo/compose.yaml uproda até o fim e sai com código 0Para olhar com os próprios olhos
Vale abrir o
assets/demo.svgrenderizado e a pré-visualização do README. É a única parte que não dá para verificar por teste: se a fonte monoespaçada do navegador tiver largura diferente da assumida, as colunas da tabela desalinham.