Yet another static site generator for Git
yagit aims to provide a minimalist user interface and implement the following simple feature set:
- Accessible and optimized HTML output implementing current best practices
- Simple static web-pages with no need for JavaScript
- Incremental builds: only render pages for commits and blobs if necessary
For a live example please see https://git.pablopie.xyz!
yagit maintains a store of Git repositories at STORE_PATH/ and
renders HTML pages for such repositories at the location OUTPUT_DIR/.
By default, yagit renders HTML pages in incremental mode: pages for Git
commits and blobs are only renderer if the relevant commits are newer than the
page's last modification date. This option can be disabled with the
--full-build flag.
yagit also maintains a store of Git repositories at PRIVATE_STORE_PATH/,
which can be switched on using the --private flag. The HTML pages for
repositories at PRIVATE_STORE_PATH/ are rendered at
OUTPUT_PATH/PRIVATE_OUTPUT_ROOT/.
To render the HTML pages for a single repository using yagit run:
$ yagit render REPO_NAMETo render HTML pages for all repositories at STORE_PATH run:
$ yagit render-batchTo initiliaze an empty repository at repository store run
$ yagit init REPO_NAMERepositories managed by yagit can be deleted using the delete command:
$ yagit delete REPO_NAMEFor more information check the yagit.1 man page.
- yagit is only supported on UNIX systems
- yagit is single threaded: this is because my personal VPS has a single core
- yagit does not support customization of the HTML output (see the Configuration section bellow)
yagit provides a number of configuration keys at compile-time, such as
STORE_PATH, OUTPUT_PATH, etc. See config.toml for a full list of
configuration keys.
The user is expected to modify the source code to customize the HTML output, no templating system is provided. The idea is that instead of relying in a complex and inflexible HTML templating systems, users should fork the application to adapt it for their own needs.
yagit can be installed from source using the following commands:
$ git clone git://git.pablopie.xyz/yagit
$ cargo build --release
# install -m 755 ./target/release/yagit /usr/bin/yagit
# install -m 644 ./yagit.1 /usr/share/man/man1/yagit.1
# mandb