run-script
Nesta seção, você encontra a referência de um Hook Declarativo do tipo
run-script.
Os Hooks Declarativos do tipo run-script servem para executar scripts Python dentro de um arquivo plugin.yaml ou template.yaml. Confira 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 ou Plugin.
O script a ser executado deve estar fora da pasta templates do Plugin ou Template para não ser interpolado.
É comum que esse script defina uma função chamada run. Essa função recebe como parâmetro um objeto da classe Metadata do template framework e deve devolver, em seu retorno, um objeto Metadata, que pode 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:
from templateframework.metadata import Metadata
def run(metadata: Metadata = None):
all_inputs = metadata.all_inputs()
inputs_local = metadata.inputs
inputs_global = metadata.global_inputs
inputs_envs = metadata.inputs_envs
inputs_computed = metadata.computed_inputs
inputs_global_computed = metadata.global_computed_inputs
Confira a descrição de cada item da classe:
all_inputs = metadata.all_inputs(): Retorna todos os inputs processados do Plugin ou Template.inputs_local = metadata.inputs: Dicionário dos inputs.inputs_global = metadata.global_inputs: Dicionário de global inputs.inputs_envs = metadata.inputs_envs: Dicionário de inputs envs.inputs_computed = metadata.computed_inputs: Dicionário de computed inputs.inputs_global_computed = metadata.global_computed_inputs: Dicionário de global computed inputs.
Confira 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 extras que são dependências do STK CLI (StackSpot Command Line Interface). Confira 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 de o 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 ou 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
rundeve receber como parâmetro um objeto da classeMetadatado templateframework. - No retorno, a função deve devolver um objeto
Metadata. Pode ser o mesmo objeto 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ão disponíveis para uso a biblioteca padrão do Python 3.8 e as bibliotecas Requests e Questionary, que são dependências do STK CLI.