Skip to main content

Crate abbaye

Crate abbaye 

Source
Expand description

§Abbaye

logo

Abbaye is a Static Site Generator (SSG) for your software. As GitHub, Gitea, Forgejo and consorts offer, Abbaye can be used to generate a website with your software’s presentation, documentation, and distribution, per version.

Here’s an example file structure:

.
├── index.html # the main page of the website, enabling choosing a version, defaults to "latest" (contains a list of available versions and a iframe to the selected version?)
├── releases.feed # the RSS feed of the releases
├── latest -> v2.0.0 # symlink to the latest version (biggest version number)
├── v1.0.0/ # the directory containing the version 1.0.0 of the software
│   ├── index.html # the main page of the version 1.0.0, from the README.md file.
│   │   # Contains a sidebar with links to the documentation and distribution.
│   │   # After the readme content, A changelog is displayed.
│   ├── docs/ # the directory containing the documentation of the version 1.0.0
│   │   ├── index.html # the main page of the documentation of the version 1.0.0
│   │   └── …
│   ├── docs.tar.gz # the tarball containing the documentation of the version 1.0.0
│   └── dist/ # the directory containing the distribution of the version 1.0.0
│       ├── source.tgz # the source code of the version 1.0.0
│       ├── mybin-v1.0.0-x86_64-unknown-linux-gnu
│       └── mybin-v1.0.0-x86_64-unknown-linux-musl
└── v2.0.0/ # the directory containing the version 2.0.0 of the software
    ├── index.html # the main page of the version 2.0.0
    ├── …
    └── …

§Why the name “Abbaye”?

An Abbaye is a French word for Abbey. An Abbey is a type of monastery, on the big-ish side, but still a small, quiet place.

Anyway, that’s where you store and display your relics (your software distribution).

§Installation

§Pre-built binaries

You can grab a pre-built binary from the releases page.

The -musl binaries are statically linked and should run everywhere, while the -gnu binaries are dynamically linked and require a compatible system library(which is probably available if you’re not using an exotic distribution).

§From source

To build from source, you need to have Rust installed. You can install Rust using rustup. If you don’t have rust installed, this project won’t be of much use to you, as it currently only implements rust builders :stuck_out_tongue:

You can clone the repository and build the project using cargo build --release.

§Usage

Create a abbaye.toml configuration file in the root of your project. Here’s an example configuration file to get you started:

[site]
name = "Abbaye"

[version_extractor]
type = "git" # extract version from git tags
tag_prefix = "v"

[changelog] # use the default changelog parser (Keepachangelog format in CHANGELOG.md)

[[builders]]  # builds the project using cargo build --release
type = "cargo"
targets = ["x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl"]

[[builders]]  # generates documentation using cargo doc
type = "cargo_doc"
no_deps = true  # Don't include dependencies in the documentation

[[builders]]
type = "archive"  # creates a compressed tarball of the source code (can be of anything, really)

Then run abbaye to build the site. The site will be generated in the public/ directory by default. Now you can copy the contents of public/ to your web server to deploy the site. For instance, with rsync: rsync --progress -avz --links --perms --update public/ ololduck@vit.am:public_html/abbaye/

Modules§

builders
All builders for the site (ex: cargo build, cargo doc, etc.).
changelog
Parses the changelog file and generates a changelog page for the site.
config
Handles the abbaye.toml configuration file.
site
Generates the site from the configuration and builds it.
version_extractors
Extracts current version information from different sources (ex: git tags, cargo metadata, etc.).

Functions§

main 🔒