Pular para o conteúdo principal

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.

Atenção!

É 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

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, pattern e snippet não devem ser usados em conjunto na mesma ação search.

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

Atenção!

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.

Atençã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"
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"