Pular para o conteúdo principal

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:

  • linux
  • mac
  • windows
Cuidado!

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:

  1. 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
  1. 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
Cuidado!

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.