Metadata-Version: 2.4
Name: sushicore
Version: 0.4.0
Summary: Shared core for the Sushi* developer CLIs (hub / sr / se / sa / sb / sd / st): workspace resolution, layered config, presentation, and the cmake/ctest driver.
Author-email: Mustafa Garip <mustafagarip@sushisystems.io>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/SushiSystems/SushiCore
Project-URL: Source, https://github.com/SushiSystems/SushiCore
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: rich>=13.0
Requires-Dist: tomli>=2.0; python_version < "3.11"
Provides-Extra: typer
Requires-Dist: typer>=0.12; extra == "typer"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: typer>=0.12; extra == "test"
Requires-Dist: click>=8.0; extra == "test"
Dynamic: license-file

# sushicore

The shared core of the Sushi developer CLIs. `hub`, `sr`, `se`, `sa`, `sb`, `sd` and `st` all
import it for the same five things: locating a workspace, loading layered TOML configuration,
printing to a terminal or to a JSON stream, driving cmake and ctest, and reading the
`sushistack.deps.toml` fragment a repository writes about what it needs.

```bash
pip install sushicore
```

It is a library for those CLIs rather than a tool of its own: it installs no console script and
it knows nothing about SYCL, a renderer, or any one module's schema.

| Module | What it does |
|---|---|
| `sushicore.workspace` | Walks up for a marker, merges a `[tool]` table with its platform override |
| `sushicore.config_base` | The layered load: defaults, file, local file, environment |
| `sushicore.console`, `renderer`, `events`, `theme`, `icons` | One seam for human output and for `--json` |
| `sushicore.ui`, `sushicore.brand` | One file per terminal element (logo, header, panel, table, title, usage, definition list); each draws itself from a `Theme`, the logo from `brand` |
| `sushicore.help`, `sushicore.typer_help` | A themed help screen for a Typer CLI: `typer.Typer(cls=help_group(provider))` |
| `sushicore.cmake_driver`, `cmake_cache`, `proc`, `toolchain_args` | The configure, build and test driver the CLIs share |

The manual is in `docs/README.md`. Licensed under the terms in `LICENSE`.
