Atheneum Forge
This project is a boiler-plate generator. In contrast to a static template, the main ideas of the project are to:
- not only be able to generate a "scaffolding" for a new (or existing) project
- but ALSO be able to keep that "scaffolding" up-to-date based on an authoratative source
- and also automate several project-level tasks such as:
- version updating
- checking submodules (fmt, google test, courier) to see if there are newer versions and automating their update
- adding copyright headers
- automating the addition of "include guards" (for C++)
Usage
From Github
Atheneum-forge can be run as an executable directly from Github, with the uv dependency manager:
> uvx --from git+https://github.com/bigladder/atheneum-forge.git forge-cli init . <project_name> --type <cpp | python>
or
> uvx --from git+https://github.com/bigladder/atheneum-forge.git forge
From a clone
The atheneum-forge tool can be used directly from the repository directory, or built into a package.The project is managed with the uv depenency manager; to build, simply use command "uv build" from the atheneum-forge top directory.
Installing the atheneum-forge package will provide two command-line tools: a TUI (text user interface) and a command-line-app.
-
forge-cli allows the user to view all project-generation functionality at a glance;
-
forge can be called with arguments to implement one piece of functionality at a time (forge --help).
Project generation consists of two steps, which may be combined. First, a configuration file is generated (forge.toml), which contains default settings such as the project name and type. If more detailed defaults are desired, the forge.toml file contains project-relevant settings that can be activated by removing the comment character. The project-generation step will automatically import these settings to populate project files (primarily support and build files).
Note
On some Windows PCs, the forge TUI may render with unexpected characters. For a cleaner experience, download and install a Nerd Font (such as FiraCode).
As a Python package
atheneum-forge may be imported as a package dependency directly from git. Include atheneum-forge in your pyproject.toml dependencies list, and set the source as below:
[tool.uv.sources]
atheneum-forge = { git = "https://github.com/bigladder/atheneum-forge" }
In your code,
from atheneum_forge import forge, project_factory
to use the public interface.
For developers
For each language to be supported by a project template, the languages directory contains a <language_name> entry. Currently C++ and Python are supported. Each language pack consists of three conceptual pieces:
Project directory tree
The canonical folder structure for open-source projects, with any standard, non-customizable files that are simply copied into a new project.
Templates:
Files within the folder structure that must be customized (e.g. with the project name) are stored as Jinja templates with a .j2 extension. These are rendered using default parameter values before being copied into a new project.
manifest.toml: provides parameters and indications of how files in the template repository should be used
The manifest is a complete description of every file that comprises a project scaffold. Its sections are:
- static: a list of files or directories to be copied directly
- template: a list of files that will be modified before copying
- template-parameters: a list of substitution parameters for the templates
- deps: a set of dictionaries describing submodule dependencies
TODO: Format of manifest, to/from options, extra keywords
Reference
Poetry and Helix -- how to bring the Helix editor into context with a Python app being developed https://blog.jorisl.nl/helix_python_lsp/
Metadata
Release files for atheneum-forge 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| atheneum_forge-1.0.0.tar.gz | 67.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| atheneum_forge-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 157.0 kB
Release files / atheneum_forge-1.0.0.tar.gz
| Download URL | atheneum_forge-1.0.0.tar.gz |
|---|---|
| Size | 67.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b3fecee1452adca2f747ee1b33c0d913f6e5151885028ab1925ee39dee08331a
|
|
BLAKE2b-256 checksum How to use checksums |
17cbec5264af2ed635a059d7b3e720a4c0b4f60d7466b4bd00b2f8dcb7956cae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / atheneum_forge-1.0.0-py3-none-any.whl
| Download URL | atheneum_forge-1.0.0-py3-none-any.whl |
|---|---|
| Size | 89.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f077232543f7e352fad9b5059767e5270a7b0dc3a5e77c7c42d5baa360c5e82
|
|
BLAKE2b-256 checksum How to use checksums |
05399f6ba49bd670bb3dcd15d11ab67c431c15471004a0573675a1078866f7f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|