run-script
Os Hooks Declarativos do tipo run-script
servem para executar scripts Python, dentro de um arquivo plugin.yaml
ou template.taml
. Confira abaixo um exemplo de um Hook Declarativo do tipo run-script
:
hooks:
- type: run-script
trigger: before-render
script: path/to/script.py
O atributo script
define o caminho onde o script a ser executado está na estrutura de arquivos do Template/Plugin.
O script a ser executado deve estar fora da pasta templates
do Plugin/Template para não ser interpolado.
É comum esperar que neste script, uma função com o nome run
esteja definida. Essa função recebe como parâmetro um objeto da classe Metadata (class Metadata
) do template framework e que devolve em seu retorno um Metadata, podendo ser o mesmo recebido ou outro criado pela função.
Metadata
Quando o run-script
for executado e exportado usando uma classe Metadata, você pode visualizar uma estrutura como a do exemplo abaixo:
import shutil
import os
from templateframework.metadata import Metadata
def run(metadata: Metadata = None):
inputs = metadata.all_inputs()
inputs_local = metadata.inputs
inputs_global = metadata.global_inputs
inputs_computed_global = metadata.global_computed_inputs
target_path = metadata.target_path
component_path = metadata.component_path
stack_path = metadata.stack_path
Confira a descrição de cada item da classe:
inputs = metadata.all_inputs()
: Retorna todos os inputs processados do Plugin/Template;inputs_local = metadata.inputs
: É o dicionário dos inputs;inputs_global = metadata.global_inputs
: Dicionário de global inputs;inputs_computed_global = metadata.global_computed_inputs
: Dicionário de global conputed inputs;target_path = metadata.target_path
: É o path onde o Plugin/Template está sendo executado.component_path = metadata.component_path
: É o path do Plugin/Template(~/.stk/stacks/<stack_name>/<component_name>)
.stack_path = metadata.stack_path
: É o path da Stack(~/.stk/stacks/<stack_name>)
.
Confira abaixo um exemplo simples de definição de um script, que pode ser executado como um Hook Declarativo:
from templateframework.metadata import Metadata
def run(metadata: Metadata = None):
print("Hello from script.py!")
return metadata
No script você pode usar a biblioteca padrão do Python 3.8 e as bibliotecas extra que são dependências do STK CLI. Confira abaixo algumas que são incluídas:
Ações Disponíveis
trigger:
Campo para definir gatilhos que informam o momento em que a execução de um script Python deve ocorrer.
before-input
:
Executa o script antes de receber os parâmetros de entrada da pessoa usuária.
trigger: before-input
before-render
:
Executa o script antes do Template gerar arquivos no projeto.
trigger: before-render
after-render
:
Executa o script após o Template gerar arquivos no projeto.
trigger: after-render
script:
Define o caminho do script Python que será executado.
script: path/to/script.py
O script a ser executado deve estar fora da pasta templates
do Plugin/Template para não ser interpolado.
Para que o run-script
execute um script Python, o script precisa estar definido com:
- Uma função com o nome
run
. - A função
run
deve receber como parâmetro um objeto da classe Metadata do templateframework. - No retorno, a função deve devolver um metadata. Pode ser o mesmo metadata recebido ou outro criado pela função.
Exemplo de função run
no script Python
from templateframework.metadata import Metadata
def run(metadata: Metadata = None):
print("Hello from script.py!")
return metadata
No script está disponível para uso a biblioteca padrão do Python 3.8 e as bibliotecas Requests e Questionary disponíveis como dependências no STK CLI.
Leia também
Esta página foi útil?