mirror of https://github.com/pypa/hatch.git
55 lines
1.9 KiB
Markdown
55 lines
1.9 KiB
Markdown
# Context formatting
|
|
|
|
-----
|
|
|
|
You can populate configuration with the values of certain supported fields using the syntax of Python's [format strings](https://docs.python.org/3/library/string.html#formatstrings). Each field interprets the modifier part after the colon differently, if at all.
|
|
|
|
## Global fields
|
|
|
|
Any configuration that declares support for context formatting will always support these fields.
|
|
|
|
### Paths
|
|
|
|
| Field | Description |
|
|
| --- | --- |
|
|
| `root` | The root project directory |
|
|
| `home` | The user's home directory |
|
|
|
|
All paths support the following modifiers:
|
|
|
|
| Modifier | Description |
|
|
| --- | --- |
|
|
| `uri` | The normalized absolute URI path prefixed by `file:` |
|
|
| `real` | The path with all symbolic links resolved |
|
|
| `parent` | The parent of the preceding path |
|
|
|
|
!!! tip
|
|
The `parent` modifier can be chained and may be combined with either the `uri` or `real` modifier, with the latter placed at the end. For example:
|
|
|
|
```toml config-example
|
|
[tool.hatch.envs.test]
|
|
dependencies = [
|
|
"example-project @ {root:parent:parent:uri}/example-project",
|
|
]
|
|
```
|
|
|
|
### System separators
|
|
|
|
| Field | Description |
|
|
| --- | --- |
|
|
| `/` | `\` on Windows, `/` otherwise |
|
|
| `;` | `;` on Windows, `:` otherwise |
|
|
|
|
### Environment variables
|
|
|
|
The `env` field and its modifier allow you to select the value of an environment variable. If the environment variable is not set, you must specify a default value as an additional modifier e.g. `{env:PATH:DEFAULT}`.
|
|
|
|
## Field nesting
|
|
|
|
You can insert fields within others. For example, if you wanted a [script](environment/overview.md#scripts) that displays the value of the environment variable `FOO`, with a fallback to the environment variable `BAR`, with its own fallback to the user's home directory, you could do the following:
|
|
|
|
```toml config-example
|
|
[tool.hatch.envs.test.scripts]
|
|
display = "echo {env:FOO:{env:BAR:{home}}}"
|
|
```
|