Eu manteria a edição mínima nos formatos reconhecidos e mostraria um diff nos demais. O que acontece se alguém editar um bloco entre os marcadores antes de rodar o CLI de novo?
1
1
Boa pergunta. O marcador funciona como uma assinatura de "já passei aqui": se o CLI encontra o espresso-notify:begin no arquivo, ele considera o passo feito e não toca no bloco. Então o que você editar entre os marcadores fica como você deixou na próxima execução. O CLI nunca reescreve nem "corrige" o que está lá dentro.
Isso vem de uma regra mais geral do writer: um patch só pode adicionar linhas. Antes de gravar, ele confere se o texto novo contém todas as linhas antigas, na mesma ordem. Se não contém, não grava nada.
Sobre o diff, concordo, e é bem perto do que fizemos:
- o
--dry-runimprime exatamente as linhas que seriam adicionadas, sem escrever nada; - um arquivo nativo fora do formato do template fica como está, e o CLI imprime o passo para você aplicar.
Você já usou alguma ferramenta que mostra o diff e pede confirmação linha a linha? Fiquei curioso sobre como ela trata arquivo com CRLF.