Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yet-another-static-site-generator/yass

Yet Another Static Site (Generator)
https://github.com/yet-another-static-site-generator/yass

ada markdown static-site-generator yass

Last synced: 14 days ago
JSON representation

Yet Another Static Site (Generator)

Awesome Lists containing this project

README

        

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.

## Features

* 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

## Downloading YASS

The easiest way to get YASS is by downloading the [latest release](https://github.com/yet-another-static-site-generator/yass/releases/latest) for your operating system. For example, if you have windows, then download ` yass-windows_x86_64.zip`.

## Build from sources

### Using alire

The easiest way to build YASS is via [Alire](https://alire.ada.dev/). If don't
have alire already, you can get it from the main website or auto-install it via
[Getada.dev](https://www.getada.dev/).

To build and install it, simply run `alr install yass` and yass will automatically be
added to alire's binary folder (default is `$HOME/.alire/bin`).

If you'd rather just download and build manually, navigate to a folder where you
wish to build YASS and issue the following commands:
1. `alr get yass`
2. `cd yass*`
3. `alr update && alr build`
YASS will now be in the project's `./bin` directory.

This should automatically pull all of the dependencies in, ie AWS and libcmark.

### Using gprbuild

To build you need:

* compiler: GCC with enabled Ada support or GNAT from:

https://www.adacore.com/download/

* gprbuild: it is included in GNAT from AdaCore 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:

https://github.com/commonmark/cmark

* 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

https://github.com/AdaCore/aws

* 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/xmlada

Navigate to the main directory(where this file is) to compile:

* The easiest way to compile program is use Gnat 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](https://github.com/thindil/bob) you can type `bob debug`
for build in debug mode or `bob 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.

### Build unit tests

**Note:** Unit tests are currently being migrated to aunit and alire so this may
not work as expected.

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](https://github.com/thindil/bob) installed, type
`bob tests`.

## Running the program

### Linux

To see all available options, type in console `./yass help` in directory where
binary file is. It works that same way for downloaded AppImage version of
program. More information 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.

### Windows

To see all available options, type in console `yass.exe help` in the directory
where binary file is. If you want to run the program from other directory, you
should set the environment variable `YASSDIR` to your current directory.
Example: `set YASSDIR="C:\yass"`

### Running unit tests

From the main directory (where this file is) go to `test/driver` directory
and type in console `./test_runner`. If you have [Bob](https://github.com/thindil/bob)
installed, you can type `bob runtests`.

### Testing versions

Here are available testing versions of the program. You can find them
in [GitHub Actions](https://github.com/yet-another-static-site-generator/yass/actions/workflows/ada.yml).
Just select option from the list of results to see Artifacts list.
To use them, first you must download normal release. Then, for Linux: inside
directory where the program is, type `./yass-x86_64.AppImage --appimage-extract`
to extract whole program to directory *squashfs-root*. And then move files
from the archive to the proper location. To run that version, enter
*squashfs-root* directory and type in console `./AppRun`. For Windows:
unzip files (replace existing) to the proper location where the program is installed.

* yass-development-windows.tar contains Windows 64-bit version of the program.

* yass-development-linux.tar contains Linux 64-bit version of the program.

Size is a file's size after unpacking. You will download it compressed with
Zip.

## Generating code documentation

To generate (or regenerate) code documentation, you need [ROBODoc](https://rfsber.home.xs4all.nl/Robo/)
and [Tcl](https://tcl.tk) scripting language. If you have them, in main program
directory (where this file is) enter terminal command: `others/generatedocs.tcl`.
For more information about this script, please look [here](https://github.com/thindil/roboada#generatedocspy).
This version of script have set all default settings for the YASS code. If you
have [Bob](https://github.com/thindil/bob) installed, you can type
`bob docs`.

## Contributing to the project
For detailed information about contributing to the project (bugs reporting,
ideas propositions, code conduct, etc), see [CONTRIBUTING.md](CONTRIBUTING.md)

## Licenses

* Yass is released under GNU GPL v3 license.

* Libcmark library distributed with the program is released under
[a few Open Sources licenses](https://github.com/commonmark/cmark/blob/master/COPYING)

https://github.com/commonmark/cmark

## TODO (someday or if someone wants to contribute)

* More unit tests
* Formally verify the project with SPARK
* Your propositions?

----

As usual, I probably forgot about something important here :)

Bartek thindil Jasicki & A.J. Ianozi