~ecs/wersh

Static site generator based on POSIX sh
Miscellaneous fixes
Don't emit extra newline at start
Quote more variables

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~ecs/wersh
read/write
git@git.sr.ht:~ecs/wersh

You can also use your local clone with git send-email.

wersh

Static site generation with POSIX shell scripts, loosely inspired by werc.

USAGE

wersh [input] [output]

wersh takes files from input/**.w, converts them into shell scripts with
wersh.awk, then sources these scripts to produce output files as output/**.
Files that don't match *.w are copied directly to the output. Any files or
directories that begin with _ are ignored.

Files parsed with wersh.awk produce scripts. Any line prefixed with % will be
added to the script, and any line without will be automatically output by the
target script. Run wersh.awk < input > output to get an idea of how it works.

PREPROCESSING

You can use a preprocessor to convert script output into some other format. For
example, to convert script output to markdown:

% preprocessor="hoedown"

Your script output will be piped into the preprocessor, and its output used as
your script output.

ENVIRONMENT

When your script executes, the working directory is set to the input directory
and the following variables are available:

- root: top level input directory
- input: path to the input file being processed
- output: path to the output file
- outputdir: top level output directory

The wsource function is also available, which behaves like the source builtin,
but it will run the file through wersh.awk first. This is useful for making
templates or including files.

TEMPLATES

The recommended method for making templates is to overwrite the render()
function in the template script and source the template script from any files
that will use it. The render() function is piped the preprocessed script output
and is expected to print the final output. You may use wersh.awk for your
template - any output lines are printed directly during the render() function.

SITE-WIDE CONFIGURATION

If present, the special file _config.sh will be sourced. Note that it will not
be preprocessed by wersh.awk.

EXAMPLES

See example/ for an example wersh site. Run the following:

    ./wersh example
    lighttpd -Df lighttpd.conf

Then browse to http://localhost:8080 to check out the example site.