run
Nesta seção, você encontra a referência de um Hook Declarativo do tipo
run.
Os Hooks Declarativos do tipo run servem para executar comandos. Alguns exemplos interessantes de utilização são:
- Instalar dependências no projeto;
- Executar comandos de alguma ferramenta que faz parte do Plugin;
- Executar configurações por meio de scripts shell ou batch.
Confira um exemplo simples de um Hook Declarativo do tipo run:
hooks:
- type: run
trigger: before-input
commands:
- echo hello from before-input!
- echo you can define multiple commands in a run hook!
Ao aplicar o Template ou Plugin que define esse Hook Declarativo, antes de perguntar os parâmetros de entrada, o console mostra as seguintes frases:
hello from before-input!you can define multiple commands in a run hook!.
É possível utilizar operadores condicionais com o parâmetro condition em um Hook. Confira o exemplo:
name: my-plugin
description: Describe your plugin explaining its purpose
types:
- app
spec:
inputs:
- label: Deseja instalar as dependências?
type: bool
name: install_dependencies
hooks:
- type: run
trigger: after-render
commands:
- echo Instalando dependências
- npm install
condition:
variable: install_dependencies
operator: "=="
value: true
Neste exemplo, o input do tipo boolean faz uma pergunta à pessoa usuária sobre instalar dependências. A condition faz com que o Hook seja executado apenas quando a resposta for verdadeira (operador == e valor true). Só então o comando npm install será executado para instalar as dependências.
É possível definir comandos diferentes por sistema operacional. Confira o exemplo:
hooks:
- type: run
trigger: before-input
working-dir: "{{project_name}}/some/dir"
linux:
- echo hello from before-input on linux!
windows:
- cmd /c echo hello from before-input on windows!
mac:
- echo hello from before-input on mac!
Neste caso, ao aplicar o Template ou Plugin, a mensagem que aparece no console será diferente para cada sistema operacional. Os sistemas operacionais suportados são:
linuxmacwindows
Operadores de encadeamento de comandos e redirecionamento de saída (|, ||, &&, &, >, >>, ;) não são suportados e são interpretados como strings ao serem executados.
Comando run no Windows
Para executar outras aplicações por meio do run no Windows, utilize um dos exemplos:
- Usando o
cmd. Nesse caso, abre uma janela do CMD extra quando o Plugin está sendo aplicado, mas depois ela é fechada automaticamente.
hooks:
- type: run
trigger: after-render
working-dir: "{{project_name}}/some/dir"
linux:
- npm install
windows:
- cmd /c npm install
mac:
- npm install
- Chamando o binário do npm diretamente. Nesse caso, o npm é executado na mesma janela:
hooks:
- type: run
trigger: after-render
working-dir: "{{project_name}}/some/dir"
linux:
- npm install
windows:
- npm.cmd install
mac:
- npm install
Ações Disponíveis do Hook Declarativo run
trigger:
Campo para definir gatilhos que informam o momento em que a execução de comandos deve ocorrer.
before-input
Executa os comandos do Hook antes de receber os parâmetros de entrada da pessoa usuária.
trigger: before-input
before-render
Executa os comandos do Hook antes de o Template gerar arquivos no projeto.
trigger: before-render
after-render
Executa os comandos do Hook após o Template gerar arquivos no projeto.
trigger: after-render
working-dir: (Opcional)
Permite que você defina um diretório relativo à raiz do projeto onde os comandos serão executados. Quando não informado, os comandos serão executados na raiz do projeto. No campo working-dir é possível utilizar expressões Jinja, por exemplo:
working-dir: "{{project_name}}/some/dir"
commands:
Permite que você defina um ou mais comandos para serem executados.
commands:
- echo hello from before-input!
- echo you can define multiple commands in a run hook!
Para utilizar os comandos no Windows, a ferramenta CMD deve ser executada pelo argumento cmd /c. Confira um exemplo:
commands:
- cmd /c echo hello from before-input!
- cmd /c echo you can define multiple commands in a run hook!
linux: (Opcional)
Permite definir um ou mais comandos, especificando a execução em sistemas Linux.
linux:
- npm install
windows: (Opcional)
Permite definir um ou mais comandos, especificando a execução em sistemas Windows.
windows:
- cmd /c npm install
mac: (Opcional)
Permite definir um ou mais comandos, especificando a execução em sistemas macOS.
mac:
- npm install
Nas ações do Hook Declarativo run, operadores de encadeamento de comandos e redirecionamento de saída (|, ||, &&, &, >, >>, ;) não são suportados e são interpretados como strings quando executados.