YASS - Yet Another Static Site (Generator)
As name says, it is static site generator written in Ada. It is headless application (no user interface). The program documentation is included in distribution.
- Support almost infinite amount of custom tags in HTML templates (depends on available RAM)
- Separated tags for whole site and each page
- Fast
- Can be extended with modules written in any script/programming language
- Generating sitemaps
- Generating Atom feeds
- Auto reconfigure server when configuration file was changed
To build you need:
-
compiler - GCC with enabled Ada support or (best option) GNAT from:
-
gprbuild - it is included in GNAT and should be available in most Linux distributions too.
-
libcmark - should be available in every Linux distribution, if not, you can download source code from:
-
Ada Web Server (AWS) - if you use GNAT from AdaCore it is included in package. In other situations, you may need to download it from:
https://www.adacore.com/download/more
or
-
XmlAda - if you use GNAT from AdaCore it is included in package. In other situation, you may need to download it from:
https://www.adacore.com/download/more
or
https://github.com/AdaCore/xmlad://github.com/AdaCore/xmlada
Navigate to the main directory(where this file is) to compile:
-
Easiest way to compile program is use Gnat Programming Studio included in GNAT. Just run GPS, select yass.gpr as a project file and select option
Build All
. -
If you prefer using console: in main source code directory type
gprbuild
for debug mode build or for release mode:gprbuild -XMode=release
. If you have installed Bob you can typebob debug
for build in debug mode orbob release
to prepare release for the program.
If you want to be able to print content of README.md file to terminal (by
readme
program command), copy file README.md to bin
directory.
Note: If you want to move the program around, compile it in release mode. In debug mode the program may have problems with finding all dependencies.
Navigate to tests/driver
directory from the main directory (where this
file is):
- From console: type
gprbuild -P test_driver.gpr
Or if you have Bob installed, type bob tests
.
To see all available options, type in console ./yass help
in directory where
binary file is. It work that same way for downloaded AppImage version of
program. More informations about using AppImage files you can find here:
https://docs.appimage.org/user-guide/run-appimages.html
If you want to run the program from other directory, you should set the
environment variable YASSDIR
to your current directory. Example:
export YASSDIR=$(pwd)
. You don't need to set it manually when you use
AppImage version of the program.
From the main directory (where this file is) go to test/driver
directory
and type in console ./test_runner
. If you have Bob installed, you can type
bob runtests
.
Here are available also testing versions of the program. You can find them
in Releases.
To use them, first you must download normal release. Then, inside directory
where the program is, type ./yass-x86_64.AppImage --appimage-extract
to extract whole program to directory squashfs-root. And then just move files
from the archive to proper locations. To run that version, just enter
squashfs-root directory and type in console ./AppRun
.
To generate (or regenerate) code documentation, you need ROBODoc
If you have it, in main program directory (where this file is) enter terminal
command: others/generatedocs.py
. For more information about this script,
please look here. This
version of script have set all default settings for Hunter code. If you have
Bob installed, you can type bob docs
.
For detailed informations about contributing to the project (bugs reporting, ideas propositions, code conduct, etc), see CONTRIBUTING.md
-
Yass is released under GNU GPL v3 license.
-
Libcmark library distributed with AppImage version of the program is released under few Open Sources licenses
https://github.com/commonmark/cmark
- Windows version of the program
- More unit tests
- Your propositions?
As usual, I probably forgot about something important here :)
Bartek thindil Jasicki