Go to file
Nicolás Ortega Froysa 9aa0727af2 Don't process unmodified files. 2020-10-29 18:40:14 +01:00
example Initial commit. 2020-10-25 08:51:56 +01:00
.gitignore Initial commit. 2020-10-25 08:51:56 +01:00
LICENSE Initial commit. 2020-10-25 08:51:56 +01:00
README Fixed README documentation. 2020-10-25 10:24:44 +01:00
TODO Don't process unmodified files. 2020-10-29 18:40:14 +01:00
sssg.sh Don't process unmodified files. 2020-10-29 18:40:14 +01:00

README

============
*** sssg ***
============
Simple Static Site Generator (or sssg) is just what it sounds like. It's
also written in Bash. It's only meant to have the most bare bones
features, and anything further should be implemented via patches.

# Installation
--------------
To install the script, you can simply run the `install.sh` script. By
default this will install the program to `/usr/local/bin/`. If you wish
to install elsewhere, you can do so by specifying the `$PREFIX`
variable.

# Usage
-------
The basic functionality of sssg is to generate pages that use templates
(e.g. for headers and footers), so as to have static web pages, but
without redundancy on the development side.

The basic structure of an sssg project is a root directory with all the
desired HTML files, and two subdirectories:

 - `/_templates/`: used to store HTML templates
 - `/_site/`: where the generated site will be output

These are the default directory names, they can be changed by specifying
flags (see `sssg help` for more information). The sssg will parse all
HTML files found in the root directory that are not in the templates or
generated site directories, looking for includes of templates and
parsing variables.

## Templates
To include a template into an HTML file, you would simply add the line
`#/<file>` to the HTML document where `<file>` is the name of the
template file relative to the `_templates/` directory. For example,
supposing the following file structure:

  /index.html
  /_templates/footer.html
  /_templates/header.html

In order to include `header.html` into the `index.html` document, one
would write `#/header.html` within `index.html`, and likewise could be
done with `footer.html`.

## Variables
Often times we find it necessary to use certain variables in our
templates which depend upon the particular page in which they are being
used. The best example would be page titles. Therefore, variables would
be defined in each individual page, and referenced in the templates. All
variables are strings.

To define a variable in an HTML file, a section must be declared at the
beginning of the file which ends with `%%%`. Within this section,
variables are declared and defined by the syntax `<name>=<string>`. Note
that there is no need to use quotes, as everything after the `=` is
considered part of the string until the end of the line. These variables
can then be used in the template files which are imported with the
syntax `${<name>}`. For example:

index.html:
  my-title=Home Page
  %%%
  #{header.html}
  ...
  #{footer.html}

_templates/header.html:
  ...
  <title>${my-title}</title>
  ...

# Licensing
-----------
This script is licensed under the terms & conditions of the GNU GPL
version 3 or greater (see `LICENSE` file for more information).