Metadata-Version: 2.1
Name: erect
Version: 0.1
Summary: Build system
Author-Email: Vegard Storheil Eriksen <zyp@jvnv.net>
License: MIT
Requires-Python: >=3.10
Requires-Dist: click>=8.1.7
Requires-Dist: jinja2>=3.1.4
Provides-Extra: diagnostic
Requires-Dist: bokeh>=3.6.0; extra == "diagnostic"
Requires-Dist: graphviz>=0.20.3; extra == "diagnostic"
Description-Content-Type: text/markdown

# Erect

1. (*verb*, *transitive*) To put up by the fitting together of materials or parts.

## Introduction

Erect is a build system aimed at building speciality (e.g. embedded) software.

Design goals include:
- Support for C++20 modules.
- Type annotations and docstrings to help editors help you write blueprints.
- Embeddability (create tasks and run the dependency engine from within another python application).

## Status and roadmap

- Basic functionality is in place.
- The API is not considered stable yet.
- Error handling and path handling needs to be improved.
- Documentation and tests are not written yet.

## Usage

Erect will look for a file named `blueprint.py`, whose contents might look like so:

```python
from erect import Env

env = Env()

env.executable('hello', ['main.cpp'])
```

When you run `erect`, this file will be loaded, which creates a build environment and the tasks necessary to build an executable from `main.cpp`.
All build artifacts will go into the environment's build directory which defaults to `build/`, so the resulting executable will be `build/hello`.
After the blueprint is done, Erect will execute the created tasks in dependency order.
