blob: f40203332e0410c9fdb2513dd57c431bf4567970 [file] [edit]
---
title: 'template_ctx'
---
A context object that is passed to the action template expansion function.
## Members
* [args](#args)
* [declare_file](#declare_file)
* [run](#run)
## args {#args}
```
Args template_ctx.args()
```
Returns an Args object that can be used to build memory-efficient command lines.
## declare_file {#declare_file}
```
File template_ctx.declare_file(filename, *, directory)
```
Declares that implementation creates a file with the given filename within the specified directory.
Remember that in addition to declaring a file, you must separately create an action that emits the file. Creating that action will require passing the returned `File` object to the action's construction function.
### Parameters
| Parameter | Description |
| --- | --- |
| `filename` | [string](../core/string); required The relative path of the file within the directory. |
| `directory` | [File](../builtins/File); required The directory in which the file should be created. |
## run {#run}
```
None template_ctx.run(*, outputs, inputs=[], executable, tools=None, arguments=[], progress_message=None)
```
Creates an action that runs an executable.
### Parameters
| Parameter | Description |
| --- | --- |
| `outputs` | [sequence](../core/list) of [File](../builtins/File)s; required List of the output files of the action. |
| `inputs` | [sequence](../core/list) of [File](../builtins/File)s; or [depset](../builtins/depset); default is `[]` List or depset of the input files of the action. |
| `executable` | [File](../builtins/File); or [string](../core/string); or [FilesToRunProvider](../providers/FilesToRunProvider); required The executable file to be called by the action. |
| `tools` | <a class="anchor" href="../core/list.html">sequence</a>; or <a class="anchor" href="../builtins/depset.html">depset</a>; or `None`; default is `None`<br/> List or <a href="../builtins/depset.html">`depset`</a> of any tools needed by the action. Tools are executable inputs that may have their own runfiles which are automatically made available to the action. <p> When a list is provided, it can be a heterogenous collection of: <ul> <li>`File`s</li> <li>`FilesToRunProvider` instances</li> <li>`depset`s of `File`s</li> </ul> `File`s from <a href="../builtins/ctx#executable">`ctx.executable`</a> and `FilesToRunProvider`s which are directly in the list will have their runfiles automatically added. All tools are implicitly added as inputs. </p> |
| `arguments` | [sequence](../core/list); default is `[]` Command line arguments of the action. Must be a list of strings or [`actions.args()`](#args) objects. |
| `progress_message` | [string](../core/string); or `None`; default is `None` Progress message to show to the user during the build. |