Módulo que fornece funções para criar ações. Acesse este módulo usando ctx.actions
.
Membros
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- executar
- run_shell
- link simbólico
- template_dict
- escrever
args
Args actions.args()Retorna um objeto Args que pode ser usado para criar linhas de comando com eficiência de memória.
declare_directory
File actions.declare_directory(filename, *, sibling=None)Declara que a regra ou o aspecto cria um diretório com o nome determinado no pacote atual. Você precisa criar uma ação que gere o diretório. O conteúdo do diretório não pode ser acessado diretamente pelo Starlark, mas pode ser expandido em um comando de ação com o
Args.add_all()
. Somente arquivos e diretórios normais podem estar no conteúdo expandido de um declare_directory.
Parâmetros
Parâmetro | Descrição |
---|---|
filename
|
required Se nenhum "sibling" for fornecido, o caminho do novo diretório, relativo ao pacote atual. Caso contrário, um nome de base para um arquivo ("sibling" define um diretório). |
sibling
|
Arquivo ou None ;
o padrão é None Um arquivo que fica no mesmo diretório que o diretório recém-declarado. O arquivo precisa estar no pacote atual. |
declare_file
File actions.declare_file(filename, *, sibling=None)Declara que a regra ou aspecto cria um arquivo com o nome de arquivo fornecido. Se
sibling
não for especificado, o nome do arquivo será relativo ao diretório do pacote. Caso contrário, o arquivo estará no mesmo diretório que sibling
. Não é possível criar arquivos fora do pacote atual.Lembre-se de que, além de declarar um arquivo, é necessário criar separadamente uma ação que o emita. Para criar essa ação, é necessário transmitir o objeto File
retornado para a função de construção da ação.
Os arquivos de saída pré-declarados não precisam ser declarados (nem podem ser) usando essa função. Em vez disso, é possível acessar os objetos File
em ctx.outputs
. Confira um exemplo de uso.
Parâmetros
Parâmetro | Descrição |
---|---|
filename
|
required Se nenhum "sibling" for fornecido, o caminho do novo arquivo, relativo ao pacote atual. Caso contrário, um nome base para um arquivo ("irmão" determina um diretório). |
sibling
|
File ou None ;
o padrão é None Um arquivo que fica no mesmo diretório que o arquivo recém-criado. O arquivo precisa estar no pacote atual. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)Declara que a regra ou o aspecto cria um link simbólico com o nome especificado no pacote atual. Você precisa criar uma ação que gere esse link simbólico. O Bazel nunca vai remover a referência a esse link simbólico e vai transferi-lo literalmente para sandboxes ou executores remotos. No momento, não há suporte para links simbólicos dentro de artefatos de árvore.
Parâmetros
Parâmetro | Descrição |
---|---|
filename
|
obrigatório Se nenhum "sibling" for fornecido, o caminho do novo link simbólico em relação ao pacote atual. Caso contrário, um nome base para um arquivo ('irmão' define um diretório). |
sibling
|
Arquivo ou None ;
o padrão é None Um arquivo que fica no mesmo diretório que o link simbólico recém-declarado. |
do_nothing
None
actions.do_nothing(mnemonic, inputs=[])
Cria uma ação vazia que não executa um comando nem produz saída, mas é útil para inserir "ações extras".
Parâmetros
Parâmetro | Descrição |
---|---|
mnemonic
|
obrigatório Uma descrição de uma palavra da ação, por exemplo, CppCompile ou GoLink. |
inputs
|
Sequência de Files; ou depset
o padrão é [] Lista dos arquivos de entrada da ação. |
expand_template
None
actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)
Cria uma ação de expansão de modelo. Quando a ação for executada, ela vai gerar um arquivo com base em um modelo. Partes do modelo serão substituídas pelo dicionário substitutions
, na ordem em que as substituições são especificadas. Sempre que uma chave do dicionário aparece no modelo (ou é o resultado de uma substituição anterior), ela é substituída pelo valor associado. Não há sintaxe especial para as chaves. Você pode, por exemplo, usar chaves para evitar conflitos (por exemplo, {KEY}
). Confira um exemplo de uso.
Parâmetros
Parâmetro | Descrição |
---|---|
template
|
obrigatório O arquivo de modelo, que é um arquivo de texto codificado em UTF-8. |
output
|
obrigatório O arquivo de saída, que é um arquivo de texto codificado em UTF-8. |
substitutions
|
padrão é {} Substituição a ser feita ao expandir o modelo. |
is_executable
|
O padrão é False Se o arquivo de saída precisa ser executável. |
computed_substitutions
|
TemplateDict;
o padrão é unbound Substituições a serem feitas ao expandir o modelo. |
run
None
actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)
Cria uma ação que executa um executável. Confira um exemplo de uso.
Parâmetros
Parâmetro | Descrição |
---|---|
outputs
|
Sequência de Files;
obrigatório Lista dos arquivos de saída da ação. |
inputs
|
Sequência de Files; ou depset
o padrão é [] Lista ou exclusão dos arquivos de entrada da ação. |
unused_inputs_list
|
File ou None ;
o padrão é None O arquivo contém uma lista de entradas não usadas pela ação. O conteúdo desse arquivo (geralmente uma das saídas da ação) corresponde à lista de arquivos de entrada que não foram usados durante toda a execução da ação. As alterações nesses arquivos não podem afetar de maneira alguma as saídas da ação. |
executable
|
Arquivo ou string ou FilesToRunProvider.
obrigatório O arquivo executável que será chamado pela ação. |
tools
|
sequence; ou depset
o padrão é unbound Lista ou desativação de todas as ferramentas necessárias para a ação. As ferramentas são entradas com runfiles adicionais que são disponibilizados automaticamente para a ação. Quando uma lista é fornecida, ela pode ser uma coleção heterogênea de arquivos, instâncias do FilesToRunProvider ou depsets de arquivos. Os arquivos de execução que estiverem diretamente na lista e vindos de ctx.executable terão seus arquivos de execução adicionados automaticamente. Quando um armazenamento é fornecido, ele deve conter apenas arquivos. Em ambos os casos, os arquivos em depsets não são cruzados com ctx.executable para runfiles. |
arguments
|
sequência:
o padrão é [] Argumentos de linha de comando da ação. Precisa ser uma lista de strings ou objetos actions.args() .
|
mnemonic
|
string; ou None
o padrão é None Uma descrição de uma palavra da ação, por exemplo, CppCompile ou GoLink. |
progress_message
|
string ou None ;
o padrão é None Mensagem de progresso para mostrar ao usuário durante o build, por exemplo, "Compiling foo.cc to create foo.o". A mensagem pode conter padrões %{label} , %{input} ou %{output} , que são substituídos pela string de rótulo, pela primeira entrada ou pelo caminho da saída, respectivamente. Prefira usar padrões em vez de strings estáticas, porque as primeiras são mais eficientes.
|
use_default_shell_env
|
o padrão é False Define se a ação precisa usar o ambiente shell padrão, que consiste em algumas variáveis que dependem do SO, além de variáveis definidas via --action_env .Se |
env
|
dict; ou None
o padrão é None Define o dicionário de variáveis de ambiente. Se |
execution_requirements
|
dict; ou None
o padrão é None Informações para programar a ação. Consulte tags para ver chaves úteis. |
input_manifests
|
sequence ou None ;
o padrão é None (Experimental) define os metadados de runfiles de entrada, que geralmente são gerados por resolve_command. |
exec_group
|
string ou None ;
o padrão é None Executa a ação na plataforma de execução do grupo de execução especificado. Se não houver nenhuma, será usada a plataforma de execução padrão do destino. |
shadowed_action
|
Ação:
o padrão é None . Executa a ação usando as entradas e o ambiente da ação sombreada adicionadas à lista de entradas e ao ambiente da ação. O ambiente da ação pode substituir qualquer uma das variáveis de ambiente da ação oculta. Se não houver, serão usadas apenas as entradas da ação e o ambiente fornecido. |
resource_set
|
callable; ou None
o padrão é None Uma função de callback que retorna um dicionário de conjunto de recursos, usada para estimar o uso de recursos no tempo de execução, se essa ação for executada localmente. A função aceita dois argumentos posicionais: uma string que representa o nome do SO (por exemplo, "osx") e um número inteiro que representa o número de entradas para a ação. O dicionário retornado pode conter as seguintes entradas, cada uma das quais pode ser um ponto flutuante ou int:
Se esse parâmetro for definido como O callback precisa ser de nível superior. Funções aninhadas e lambda não são permitidas. |
toolchain
|
Rótulo ou string ou None ;
o padrão é unbound Tipo de cadeia de ferramentas do executável ou ferramentas usadas nesta ação. O parâmetro precisa ser definido para que a ação seja executada na plataforma de execução correta. No momento, ele está em ambiente autônomo, mas recomendamos defini-lo quando um conjunto de ferramentas for usado, porque ele será necessário nas próximas versões do Bazel. Observe que a regra que cria essa ação precisa definir esse conjunto de ferramentas dentro de sua "rule()" função. Quando os parâmetros "conjunto de ferramentas" e "exec_group" estiverem definidos, "exec_group" será usado. Um erro é gerado caso o "exec_group" não especifique o mesmo. |
run_shell
None
actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)
Cria uma ação que executa um comando do shell. Confira um exemplo de uso.
Parâmetros
Parâmetro | Descrição |
---|---|
outputs
|
Sequência de Files;
obrigatório Lista dos arquivos de saída da ação. |
inputs
|
Sequência de Files; ou depset
o padrão é [] Lista ou exclusão dos arquivos de entrada da ação. |
tools
|
Sequência de Files; ou depset
o padrão é unbound Lista ou desativação de todas as ferramentas necessárias para a ação. As ferramentas são entradas com outros arquivos de execução disponibilizados automaticamente para a ação. A lista pode conter instâncias de Files ou FilesToRunProvider. |
arguments
|
sequência:
o padrão é [] Argumentos de linha de comando da ação. Precisa ser uma lista de strings ou objetos actions.args() .O Bazel transmite os elementos nesse atributo como argumentos para o comando.O comando pode acessar esses argumentos usando substituições de variáveis de shell, como No caso em que |
mnemonic
|
string; ou None
o padrão é None Uma descrição de uma palavra da ação, por exemplo, CppCompile ou GoLink. |
command
|
string ou sequência de strings;
comando do shell necessário para execução. Pode ser uma string (preferencial) ou uma sequência de strings (descontinuado). Se (Descontinuado) Se O Bazel usa o mesmo shell para executar o comando das regras gerais. |
progress_message
|
string; ou None
o padrão é None Mensagem de progresso a ser exibida ao usuário durante a compilação, por exemplo, "Compiling foo.cc to create foo.o". A mensagem pode conter padrões %{label} , %{input} ou %{output} , que são substituídos pelo rótulo, pela primeira entrada ou pelo caminho de saída, respectivamente. Prefira usar padrões em vez de strings estáticas, porque as primeiras são mais eficientes.
|
use_default_shell_env
|
default é False Define se a ação deve usar o ambiente de shell padrão, que consiste em algumas variáveis dependentes do SO e variáveis definidas por --action_env .Se |
env
|
dict; ou None
o padrão é None Define o dicionário de variáveis de ambiente. Se |
execution_requirements
|
dict; ou None
o padrão é None Informações para programar a ação. Consulte tags para ver chaves úteis. |
input_manifests
|
sequence; ou None
o padrão é None (Experimental) define os metadados dos arquivos de execução de entrada; geralmente são gerados por "resolve_command". |
exec_group
|
string; ou None
o padrão é None Executa a ação na plataforma de execução de determinado grupo de execução. Se não houver nenhuma, será usada a plataforma de execução padrão do destino. |
shadowed_action
|
Ação:
o padrão é None . Executa a ação usando as entradas descobertas da ação sombreada adicionadas à lista de entradas da ação. Se nenhuma, usa apenas as entradas da ação. |
resource_set
|
callable; ou None
o padrão é None Uma função de callback para estimar o uso de recursos se executada localmente. Consulte ctx.actions.run() .
|
toolchain
|
Rótulo ou string ou None .
O padrão é unbound . Tipo de cadeia de ferramentas do executável ou ferramentas usadas nesta ação. O parâmetro precisa ser definido para que a ação seja executada na plataforma de execução correta. No momento, ele está em ambiente autônomo, mas recomendamos defini-lo quando um conjunto de ferramentas for usado, porque ele será necessário nas próximas versões do Bazel. Observe que a regra que cria essa ação precisa definir esse conjunto de ferramentas dentro de sua "rule()" função. Quando os parâmetros "conjunto de ferramentas" e "exec_group" estiverem definidos, "exec_group" será usado. Um erro será gerado caso "exec_group" não especifique o mesmo. conjunto de ferramentas. |
link simbólico
None
actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)
Cria uma ação que grava um link simbólico no sistema de arquivos.Essa função precisa ser chamada com exatamente um dos target_file
ou target_path
especificados.
Ao usar target_file
, declare output
com declare_file()
ou declare_directory()
e corresponda ao tipo de target_file
. Isso faz com que o link simbólico aponte para target_file
. O Bazel invalida a saída dessa ação sempre que o destino do link simbólico ou o conteúdo dele muda.
Caso contrário, ao usar target_path
, declare output
com declare_symlink()
. Nesse caso, o link simbólico aponta para target_path
. O Bazel nunca resolve o link simbólico, e a saída dessa ação é invalidada apenas quando o conteúdo de texto do link simbólico (ou seja, o valor de readlink()
) muda. Em particular, isso pode ser usado para criar um link simbólico pendente.
Parâmetros
Parâmetro | Descrição |
---|---|
output
|
obrigatório A saída desta ação. |
target_file
|
Arquivo ou None
o padrão é None O arquivo para o qual o link simbólico de saída apontará. |
target_path
|
string ou None ;
o padrão é None O caminho exato para o qual o link simbólico de saída vai apontar. Nenhuma normalização ou outro processamento é aplicado. |
is_executable
|
o padrão é False Só pode ser usado com target_file , não com target_path . Se verdadeiro, quando a ação for executada, o caminho do target_file será verificado para confirmar se ele é executável. Caso contrário, um erro será informado. Definir is_executable como falso não significa que o destino não é executável, apenas que nenhuma verificação foi feita.Esse recurso não faz sentido para |
progress_message
|
string ou None ;
o padrão é None Mensagem de progresso para mostrar ao usuário durante o build. |
template_dict
TemplateDict actions.template_dict()Retorna um objeto TemplateDict para expansão de modelo com eficiência de memória.
gravação
None
actions.write(output, content, is_executable=False)
Cria uma ação de gravação de arquivo. Quando a ação é executada, ela grava o conteúdo especificado em um arquivo. Ele é usado para gerar arquivos usando as informações disponíveis na fase de análise. Se o arquivo for grande e com muito conteúdo estático, considere usar expand_template
.
Parâmetros
Parâmetro | Descrição |
---|---|
output
|
obrigatório O arquivo de saída. |
content
|
string ou Args;
necessário o conteúdo do arquivo. Pode ser uma string ou um objeto actions.args() .
|
is_executable
|
O padrão é False Se o arquivo de saída precisa ser executável. |