Metadata-Version: 2.1
Name: hatch-build-scripts
Version: 0.0.3
Summary: A plugin for Hatch for writing build scripts
Project-URL: Documentation, https://github.com/rmorshea/hatch-build-scripts#readme
Project-URL: Issues, https://github.com/rmorshea/hatch-build-scripts/issues
Project-URL: Source, https://github.com/rmorshea/hatch-build-scripts
Author-email: rmorshea <ryan.morshead@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Hatch
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.9
Requires-Dist: hatchling
Requires-Dist: pathspec
Description-Content-Type: text/markdown

# Hatch Build Scripts

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` | required | 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. |
