Metadata-Version: 2.3
Name: vest-build
Version: 0.0.2
Summary: A Python-based build system for bespoke use
Keywords: build,build-system,build-tool,buildsystem,build-automation,automation,task-runner,task,make,makefile,cli,compile,artifact,developer-tools,toolchain
Author: ascpixi
Author-email: ascpixi <ascpixi@proton.me>
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Compilers
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Dist: packaging>=26.0
Requires-Dist: rich>=15.0.0
Requires-Python: >=3.11
Project-URL: Repository, https://github.com/ascpixi/vest
Description-Content-Type: text/markdown

# 🦺 Vest
[![image](https://img.shields.io/pypi/v/vest-build.svg)](https://pypi.python.org/pypi/vest-build)
[![image](https://img.shields.io/pypi/l/vest-build.svg)](https://github.com/ascpixi/vest/blob/main/LICENSE)
[![image](https://img.shields.io/pypi/pyversions/vest-build.svg)](https://pypi.python.org/pypi/vest-build)
[![Actions status](https://github.com/ascpixi/vest/workflows/CI/badge.svg)](https://github.com/ascpixi/vest/actions)

Vest is a Python-based build system for bespoke use.

## Getting started
First, install Vest from PyPI:
```
pip install vest-build
```

Then, create a `build.vest` file! What this file will do depends on your project. Let's say you're building a C project. In this case, your `.vest` file might look like this:

```py
from vest import *

component(
    name = "my-c-project"
)

@task
def build():
    # Let's turn each C file to an object file...
    for (src, dst) in build_list(
        src = "./src/**/*.c",
        dst = "./obj",
        ext = ".o",
        flatten = True
    ):
        run("gcc", ["-c", src, "-o", dst])

    # ...then link em' all!
    run("gcc", [
        "-o", "./bin/final",
        *glob("./obj/*.o")
    ])

    # Tasks should return all of their final artifacts. This can be a string, list of strings, or a dictionary of strings.
    return "./bin/final"

@task
def run():
    # "run" needs a build to execute!
    artifact = self_dependency(build)

    # Let's run what "build" gave us.
    run(artifact)
```

In the directory you've created the `vest.build` file in, run `vest -t build`.

## Extensions
Vest doesn't assume what languages nor frameworks you're using it for. However, there's a couple of ready PyPI packages for known use-cases:
- [`vest-build-dotnet`](https://github.com/ascpixi/vest-dotnet): support for the .NET SDK.
