Metadata-Version: 2.5
Name: pyshellforge
Version: 0.1.0
Summary: A Python-native DSL for building, composing and rendering structured Bash scripts.
Project-URL: Homepage, https://github.com/Archont561/PyShellForge
Project-URL: Documentation, https://github.com/Archont561/PyShellForge/tree/main/docs
Project-URL: Repository, https://github.com/Archont561/PyShellForge
Project-URL: Issues, https://github.com/Archont561/PyShellForge/issues
Project-URL: Changelog, https://github.com/Archont561/PyShellForge/blob/main/CHANGELOG.md
Author: PyShellForge contributors
License: MIT
Keywords: ast,automation,bash,code-generation,compiler,developer-tools,dsl,python,shell,shell-script,transpiler
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
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 :: Unix Shell
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Compilers
Classifier: Topic :: System :: Shells
Classifier: Typing :: Typed
Requires-Python: >=3.11
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: hypothesis>=6.0; extra == 'dev'
Requires-Dist: mypy>=1.11; extra == 'dev'
Requires-Dist: pyfiglet<2,>=1.0.4; extra == 'dev'
Requires-Dist: pytest-bdd<10,>=9; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: pyyaml>=6.0; extra == 'dev'
Requires-Dist: rude-clean-code<0.2,>=0.1; extra == 'dev'
Requires-Dist: rude<0.2,>=0.1a4; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Requires-Dist: tox>=4.20; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: alint>=0.20; extra == 'docs'
Requires-Dist: gherlint>=0.5; extra == 'docs'
Requires-Dist: pyfiglet<2,>=1.0.4; extra == 'docs'
Requires-Dist: pyyaml>=6.0; extra == 'docs'
Description-Content-Type: text/markdown

<!--
  Generated file - do not edit README.md by hand.

  Source template : automation/readme/README.ejs
  Generator       : readme-md-generator (pinned in package.json)
  Regenerate with : pixi run automation readme   (python -m automation.readme)
  Verify in CI    : pixi run automation readme-check
-->

<h1 align="center">PyShellForge</h1>

<pre style="font-family: monospace">
██████╗ ██╗   ██╗███████╗██╗  ██╗███████╗██╗     ██╗     ███████╗ ██████╗ ██████╗  ██████╗ ███████╗
██╔══██╗╚██╗ ██╔╝██╔════╝██║  ██║██╔════╝██║     ██║     ██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔════╝
██████╔╝ ╚████╔╝ ███████╗███████║█████╗  ██║     ██║     █████╗  ██║   ██║██████╔╝██║  ███╗█████╗
██╔═══╝   ╚██╔╝  ╚════██║██╔══██║██╔══╝  ██║     ██║     ██╔══╝  ██║   ██║██╔══██╗██║   ██║██╔══╝
██║        ██║   ███████║██║  ██║███████╗███████╗███████╗██║     ╚██████╔╝██║  ██║╚██████╔╝███████╗
╚═╝        ╚═╝   ╚══════╝╚═╝  ╚═╝╚══════╝╚══════╝╚══════╝╚═╝      ╚═════╝ ╚═╝  ╚═╝ ╚═════╝ ╚══════╝</pre>

<p>
  <img alt="Version: 0.1.0" src="https://img.shields.io/badge/version-0.1.0-blue.svg?cacheSeconds=2592000" />
  <a href="https://github.com/Archont561/pyshellforge/blob/main/docs/README.md" target="_blank">
    <img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" />
  </a>
  <img alt="python 3.11+" src="https://img.shields.io/badge/python-%3E%3D3.11-blue.svg" />
  <a href="https://codecov.io/gh/Archont561/pyshellforge" target="_blank">
    <img alt="Coverage" src="https://img.shields.io/codecov/c/github/Archont561/pyshellforge.svg" />
  </a>
  <a href="https://github.com/Archont561/pyshellforge/blob/main/LICENSE" target="_blank">
    <img alt="License: MIT" src="https://img.shields.io/github/license/Archont561/pyshellforge" />
  </a>
</p>

> Write shell scripts in Python. Render clean Bash.
>
> A Python-native DSL for building, composing and rendering structured Bash
> scripts. The first Bash renderer supports comments, literal assignments,
> commands and checked text interpolation.

### 🏠 [Homepage](https://github.com/Archont561/PyShellForge#readme)

## Documentation

The [`docs/`](../../docs/README.md) directory is the source of truth for using and
working on this repository:

- [Documentation index](../../docs/README.md): everything, organized by purpose
- [Install](../../docs/guides/install.md): prerequisites, installation, the locked developer sandbox
- [AST design](../../docs/concepts/ast-design.md): nodes, renderers and interpolation
- [API reference](../../docs/reference/api-reference.md): the script, nodes and Bash renderer
- [Repository layout](../../docs/reference/repository-layout.md): what lives where and why
- [Linting](../../docs/reference/linting.md): the Rude plugin, its rule codes, and the rules that wait for the validator
- [Project status](../../docs/concepts/version-only-scaffold.md): what exists today and what the roadmap adds
- [Contributing](../../docs/development/contributing.md): setup, the checks CI runs, the commit and merge policy
- [Testing](../../docs/development/testing.md): test layout, what each layer proves, coverage
- [Tooling](../../docs/development/tooling.md): the `automation` CLI, its task graph, hooks and linters
- [Documentation](../../docs/development/documentation.md): policy, structure, validation and definition of done
- [Releasing](../../docs/development/releasing.md): the tag-triggered release and trusted publishing

Planned work is tracked in [`backlog/`](../../backlog/), and the release history is
[`CHANGELOG.md`](../../CHANGELOG.md).

## Install

```sh
pip install pyshellforge
```

## Usage

```sh
python -c 'from pyshellforge import ShellScript, Echo; print(ShellScript().add(Echo("Hello")).render())'
```

## Run tests

```sh
pixi run automation test-all
```

## Author

👤 **PyShellForge contributors**

- Website: [archont561.github.io/Archont561](https://archont561.github.io/Archont561/)
- GitHub: [@Archont561](https://github.com/Archont561)

## 🤝 Contributing

Contributions, issues and feature requests are welcome!<br />Feel free to check
the [issues page](https://github.com/Archont561/PyShellForge/issues). You can also take a look at the
[contributing guide](../../CONTRIBUTING.md): it covers setup, the checks a change has
to pass and the merge policy.

## Show your support

Give a ⭐️ if this project helped you!

## 📝 License

Copyright © 2026 [PyShellForge contributors](https://github.com/Archont561).<br />
This project is [MIT](https://github.com/Archont561/pyshellforge/blob/main/LICENSE) licensed.

***

*This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator) from [`automation/readme/README.ejs`](../../automation/readme/README.ejs).*
