hscloud/tools/gostatic
Serge Bazanski 491542589b tools/gostatic: init
This adds Bazel/hscloud integration to gostatic, via gostatic_tarball.

A sample is provided in //tools/gostatic/example, it can be built using:

    bazel build //tools/gostatic/example

The resulting tarball can then be extracted and viewed in a web
browser.

Change-Id: Idf8d4a8e0ee3a5ae07f7449a25909478c2d8b105
2020-10-26 12:08:33 +01:00
..
example tools/gostatic: init 2020-10-26 12:08:33 +01:00
tarify tools/gostatic: init 2020-10-26 12:08:33 +01:00
BUILD tools/gostatic: init 2020-10-26 12:08:33 +01:00
README.md tools/gostatic: init 2020-10-26 12:08:33 +01:00
rules.bzl tools/gostatic: init 2020-10-26 12:08:33 +01:00

gostatic site generator

This implements support for gostatic, a static site generator, inside hscloud.

Creating a gostatic site

To get started, copy over the skeleton from //tools/gostatic/example into a new directory.

mkdir -p personal/foo
cp -rv tools/gostatic/example personal/foo/mysite

You can also build your own gostatic_tarball from scratch if you are familiar enough with gostatic.

You can then then build a tarball of your site by running:

bazel build //personal/foo/mysite

Your site will be built and tarred up into bazel-bin/personal/foo/mysite/mysite.tar. You can then use this to populate a container in docker_rules.

TODO(q3k): add a target that starts up a simple web server for testing the rendered site.

Configuring a gostatic site

Configuration is done via the gostatic_tarball rule. This mostly generates an upstream gostatic configuration file - please refer to that file for more information.

Field Description Example
templates List of template sources/targets. This is used to populate the TEMPLATES config option. [ ":site.tmpl" ]
source_dir BUILDfile-relative source directory containing site sources. This is used to populate the SOURCE config option. All files given in srcs must be contained within this directory. "src"
srcs List of template sources/targets. This is what will be available to gostatic during compilation. [ "src/blog/first.md" ]
extra_config Rest of the gostatic config, ie. rules.

Running gostatic-the-tool

If you want to run plain gostatic for some odd reason, it's available under:

bazel run //tools/gostatic

TODO(q3k): allow running this against a gostatic_tarball's config.