edit

Nesta seção, você encontra a referência de um Hook Declarativo do tipo edit.

O Hook Declarativo edit define as alterações que serão feitas em arquivos existentes.

Ações Disponíveis

  • path: Define o caminho do arquivo que será editado. O caminho pode ser composto por expressões Jinja.

    path: "./some/dir/{{file_name}}"
    

  • trigger: Campo para definir gatilhos que informam o momento em que a edição de arquivos deve ocorrer.
    • 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 do 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: Nesse campo é definido o tipo de ação que será feita no arquivo, as opção são insert e search.
    • insert: Ação que permite inserir um texto em um arquivo existente.
      • line: Define a linha do arquivo em que ocorrerá a inserção. A primeira linha do arquivo corresponde ao índice 0. Para fazer a inserção na última linha do arquivo, o índice é o -1.
      • value: Define o texto a ser inserido na linha.
      • snippet: Define um arquivo que contém o texto para ser inserido no arquivo. A inserção do texto será no arquivo informado no campo path.
      • when: Ação condicional que avalia se a inserção será efetivada. As opções disponíveis são not-exists e not-exists-snippet, que recebem o texto ou arquivo para serem avaliados pela condição.
        • not-exists: Checa se o texto informado no campo value existe no arquivo. Caso exista, a ação insert não será efetivada.
        • not-exists-snippet: Checa se o conteúdo do arquivo informado no campo snippet existe no arquivo. Caso exista, a ação insert não será efetivada.
  - insert:
    line: 0
    value: "# Text inserted in first line\n\n"
    # or 
    snippet: path/to/snippet.txt
    when:
      not-exists: "# Text inserted in first line"
      # and/or
      not-exists-snippet: path/to/snippet.txt

  • search: A ação de edição busca pela primeira ocorrência do texto no arquivo.
    • string: Define o texto que será utilizado na busca no arquivo editado.
    • pattern: Define o padrão que será utilizado na busca
    • snippet: Define o arquivo com o conteúdo que será utilizado na busca.

Os atributos string, pattern e snippet não devem ser usados em conjunto na ação search.

- search:
  string: "# Text inserted in first line"
  # or
  pattern: (some)\s+(regular)\s+(expression)
  # or
  snippet: snippets/snippet.txt
  • replace-by: Substitui o primeiro match do texto encontrado na busca pelo conteúdo de snippet e value. - insert-before: Insere o value ou snippet na linha anterior à linha onde o primeiro match foi encontrado. - insert-after: Insere o value ou snippet na próxima linha em relação à linha onde o primeiro match foi encontrado.
replace-by:
  snippet: snippets/snippet.txt
  # or  
  insert-before:
    value: some string
  # or
  insert-after:
   snippet: snippets/snippet2.txt
  • snippet: Define um arquivo que contém o texto para ser usado ao encontrar o primeiro match no arquivo.
  • value: Define uma string para ser usada ao encontrar o primeiro match no arquivo.
snippet: snippets/snippet.txt
# or
value: a string
  • when: Ação condicional que avalia se a busca será efetivada. As opções disponíveis são not-exists e not-exists-snippet, que recebem o texto ou arquivo para serem avaliados pela condição.
    • not-exists: Checa se o texto informado no campo value existe no arquivo. Caso exista, a ação search não será efetivada.
    • not-exists-snippet: Checa se o conteúdo do arquivo informado no campo snippet existe no arquivo. Caso exista, a ação search não será efetivada.

Exemplo de um Hook Declarativo edit com a 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"
          # or
          pattern: (some)\s+(regular)\s+(expression)
          # or
          snippet: snippets/snippet.txt
          replace-by:
            snippet: snippets/snippet.txt
            # or
            value: \1 \2 \3
          # or
          insert-before:
            snippet: snippets/snippet.txt
            # or
            value: a string
          # or
          insert-after:
            snippet: snippets/snippet.txt
            # or
            value: a string
          when:
            not-exists: "# Text inserted before first line"

Leia também