edit
Nesta seção, você encontra a referência do Hook Declarativo do tipo edit.
O Hook Declarativo do tipo edit define alterações em arquivos existentes. Veja um exemplo de definição abaixo:
hooks:
- type: edit
trigger: after-render
path: src/some-file.txt
changes:
- insert:
line: 0
value: "# Text inserted in first line\n\n"
when:
not-exists: "# Text inserted in first line"
- search:
string: "# Text inserted in first line"
insert-before:
snippet: snippets/insert-before-first-line.txt
when:
not-exists: "# Text inserted before first line"
- search:
pattern: (Text )inserted in( first line)
replace-by:
value: \1moved from\2
when:
not-exists: print(f"Hello {name}!")
Ações Disponíveis
path
Define o caminho do arquivo a ser editado. O caminho pode conter expressões Jinja.
path: "./some/dir/{{file_name}}"
trigger
Define os gatilhos que indicam o momento da edição dos arquivos.
before-input
Executa o Hook Declarativo antes de receber os parâmetros de entrada da pessoa usuária.
trigger: before-input
before-render
Executa o Hook Declarativo antes de o Template gerar arquivos no projeto.
trigger: before-render
after-render
Executa o Hook Declarativo após o Template gerar arquivos no projeto.
trigger: after-render
changes
Define o tipo de ação realizada no arquivo. As opções são insert e search.
insert
Insere um texto em um arquivo existente.
line
Define a linha do arquivo onde ocorre a inserção. A primeira linha corresponde ao índice 0. Para inserir na última linha, use o índice -1.
value
Define o texto a ser inserido na linha.
snippet
Define o caminho de um arquivo que contém o texto a ser inserido. A inserção ocorre no arquivo definido no campo path.
when
Ação condicional que avalia se a inserção deve ocorrer. As opções not-exists e not-exists-snippet recebem o texto ou arquivo para avaliação.
not-exists
Verifica se o texto informado em value já existe no arquivo alvo. Se existir, a ação insert não é executada.
not-exists-snippet
Verifica se o conteúdo do arquivo informado em snippet já existe no arquivo alvo. Se existir, a ação insert não é executada.
É possível utilizar as opções not-exists e not-exists-snippet simultaneamente. Nesse caso, ambas as condições são verificadas. A ação insert só será executada se nenhum dos conteúdos (de value e de snippet) for encontrado no arquivo.
hooks:
- type: edit
# ...
changes:
- insert:
line: 0
value: "# Text inserted in first line\n\n"
# ou
snippet: path/to/snippet.txt
when:
not-exists: "# Text inserted in first line"
# e/ou
not-exists-snippet: path/to/snippet.txt
search
Busca pela primeira ocorrência de um texto ou padrão no arquivo para realizar uma edição.
string
Define o texto literal para busca.
pattern
Define uma expressão regular (Regex) para busca.
snippet
Define um arquivo cujo conteúdo será usado para busca.
Os atributos
string,patternesnippetnão devem ser usados em conjunto na mesma açãosearch.
- search:
string: "# Text inserted in first line"
# ou
pattern: (some)\s+(regular)\s+(expression)
# ou
snippet: snippets/snippet.txt
replace-by
Substitui a primeira ocorrência encontrada pelo conteúdo de snippet ou value.
insert-before
Insere o value ou snippet na linha anterior à linha onde a primeira ocorrência foi encontrada.
insert-after
Insere o value ou snippet na linha seguinte à linha onde a primeira ocorrência foi encontrada.
Apenas uma operação de edição (replace-by, insert-before ou insert-after) deve ser definida por busca.
replace-by:
snippet: snippets/snippet.txt
# ou
insert-before:
value: some string
# ou
insert-after:
snippet: snippets/snippet2.txt
snippet
Define um arquivo com o texto a ser usado na operação.
value
Define uma string a ser usada na operação.
Os atributos value e snippet não devem ser usados em conjunto dentro da mesma operação.
snippet: snippets/snippet.txt
# ou
value: a string
when
Ação condicional que avalia se a busca e a edição devem ocorrer.
not-exists
Verifica se o texto informado em value já existe no arquivo. Se existir, a ação search não é executada.
not-exists-snippet
Verifica se o conteúdo do arquivo informado em snippet já existe no arquivo. Se existir, a ação search não é executada.
Exemplo de Hook Declarativo edit com ação insert
hooks:
- type: edit
trigger: after-render
path: src/some-file.txt
changes:
- insert:
line: 0
value: "# Text inserted in first line\n\n"
when:
not-exists: "# Text inserted in first line"
Exemplo de Hook Declarativo edit com opções de search
hooks:
- type: edit
trigger: after-render
path: src/some-file.txt
changes:
- search:
string: "# Text inserted in first line"
# Opções de ação abaixo (escolha uma):
replace-by:
value: \1 \2 \3
# ou
insert-before:
snippet: snippets/snippet.txt
# ou
insert-after:
value: a string
# Condicional
when:
not-exists: "# Text inserted before first line"