1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# Hatch Build Scripts
[](https://pypi.org/project/hatch_build_scripts)
[](https://pypi.org/project/hatch_build_scripts)
[](https://opensource.org/licenses/MIT)
A plugin for [Hatch](https://github.com/pypa/hatch) that allows you to run arbitrary
build scripts and include their artifacts in your package distributions.
## Installation
To set up `hatch-build-scripts` for your project you'll need to configure it in your
project's `pyproject.toml` file as a `build-system` requirement:
```toml
[build-system]
requires = ["hatchling", "hatch-build-scripts"]
build-backend = "hatchling.build"
```
## Usage
Now you'll need to configure the build scripts you want to run. This is done by adding
an array of scripts to the `tool.hatch.build.hooks.build-scripts.scripts` key in your
`pyproject.toml` file. Each script is configured with the following keys:
| Key | Default | Description |
| ----------------- | -------- | ------------------------------------------------------------------------------------------------------- |
| `commands` | required | An array of commands to run. Each command is run in a separate shell. |
| `artifacts` | `[]` | An array of artifact patterns (same as `.gitignore`) to include in your package distributions. |
| `out_dir` | `"."` | The directory to copy artifacts into. |
| `work_dir` | `"."` | The directory to run the commands in. All artifact patterns are relative to this directory. |
| `clean_artifacts` | `true` | Whether to clean files from the `out_dir` that match the artifact patterns before running the commands. |
| `clean_out_dir` | `false` | Whether to clean the `out_dir` before running the commands. |
In practice this looks like:
```toml
[[tool.hatch.build.hooks.build-scripts.scripts]]
out_dir = "out"
commands = [
"echo 'Hello, world!' > hello.txt",
"echo 'Goodbye, world!' > goodbye.txt",
]
artifacts = [
"hello.txt",
"goodbye.txt",
]
[[tool.hatch.build.hooks.build-scripts.scripts]]
# you can add more scripts here...
```
You can configure script defaults for scripts by adding a
`[tool.hatch.build.hooks.build-scripts]` table to your `pyproject.toml` file. The
following keys are supported:
| Key | Default | Description |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------- |
| `out_dir` | `"."` | The directory to copy artifacts into. |
| `work_dir` | `"."` | The directory to run the commands in. All artifact patterns are relative to this directory. |
| `clean_artifacts` | `true` | Whether to clean files from the `out_dir` that match the artifact patterns before running the commands. |
| `clean_out_dir` | `false` | Whether to clean the `out_dir` before running the commands. |
|