2019-05-18 18:00:12 +00:00
|
|
|
# kiln
|
|
|
|
|
2020-09-22 20:42:14 +00:00
|
|
|
A simple static site generator for Gemini.
|
2019-05-18 18:00:12 +00:00
|
|
|
|
|
|
|
## Features
|
|
|
|
|
2020-09-22 20:42:14 +00:00
|
|
|
- Zero configuration
|
2019-05-18 18:00:12 +00:00
|
|
|
- Simple and fast
|
2020-09-22 20:42:14 +00:00
|
|
|
- Gemini support
|
|
|
|
- Go templates
|
2019-05-18 18:00:12 +00:00
|
|
|
|
2020-09-22 20:43:33 +00:00
|
|
|
## Installation
|
|
|
|
|
|
|
|
```
|
|
|
|
go install
|
|
|
|
```
|
|
|
|
|
2019-05-18 18:00:12 +00:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
```
|
|
|
|
kiln
|
|
|
|
```
|
|
|
|
|
2020-09-22 20:42:14 +00:00
|
|
|
## Directory Structure
|
|
|
|
|
|
|
|
A kiln site is organized in the following way:
|
|
|
|
|
|
|
|
```
|
2020-09-23 01:11:56 +00:00
|
|
|
src/ Site source
|
|
|
|
templates/ Templates
|
|
|
|
page.gmi Page template
|
|
|
|
directory.gmi Directory template
|
|
|
|
dst/ Site destination
|
2020-09-22 20:42:14 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Running `kiln` takes the contents in `src`, runs them through the templates in
|
2020-09-23 17:54:40 +00:00
|
|
|
`templates`, and writes the result to `dst`.
|
2020-09-22 20:42:14 +00:00
|
|
|
|
|
|
|
## Pages
|
|
|
|
|
|
|
|
Page templates are provided with the following information:
|
|
|
|
|
|
|
|
- `Title`: The title parsed from the first heading in the file
|
|
|
|
- `Date`: The date parsed from the filename (e.g. `2020-09-22-hello-world.gmi`)
|
|
|
|
- `Path`: Relative path to the page
|
|
|
|
- `Permalink`: Permalink to the page
|
|
|
|
- `Content`: The contents of the file (including the title)
|
|
|
|
|
2020-09-23 17:50:25 +00:00
|
|
|
Pages can specify dates in their filenames. kiln will recognize the date and
|
|
|
|
remove it from the permalink.
|
|
|
|
|
|
|
|
Pages can also specify titles in their content. kiln will parse and remove the
|
|
|
|
title from the content. Example:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ cat src/hello-world.gmi
|
|
|
|
# Hello, world!
|
|
|
|
|
|
|
|
This is some content.
|
|
|
|
|
|
|
|
$ cat templates/page.gmi
|
|
|
|
Title: {{ .Title }}
|
|
|
|
Content:
|
|
|
|
{{ .Content }}
|
|
|
|
|
|
|
|
$ cat dst/hello-world.gmi
|
|
|
|
Title: Hello, world!
|
|
|
|
Content:
|
|
|
|
This is some content.
|
|
|
|
```
|
|
|
|
|
2020-09-23 01:11:56 +00:00
|
|
|
## Directories
|
2020-09-22 20:42:14 +00:00
|
|
|
|
2020-09-23 01:11:56 +00:00
|
|
|
Directory templates are provided with the following information:
|
2020-09-22 20:42:14 +00:00
|
|
|
|
2020-09-23 01:11:56 +00:00
|
|
|
- `Path`: Relative path to the directory
|
|
|
|
- `Permalink`: Permalink to the directory
|
|
|
|
- `Pages`: The pages in this directory
|
|
|
|
- `Directories`: The subdirectories of this directory
|
2020-09-22 20:42:14 +00:00
|
|
|
|
2020-09-23 17:50:25 +00:00
|
|
|
Directory templates are written to `index.gmi` in the corresponding directory.
|
|
|
|
Example:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ ls src/posts/
|
|
|
|
src/posts/post-1.gmi
|
|
|
|
src/posts/post-2.gmi
|
|
|
|
|
|
|
|
$ cat templates/directory.gmi
|
2020-09-23 17:54:40 +00:00
|
|
|
{{ range .Pages }}=> .Permalink
|
2020-09-23 17:50:25 +00:00
|
|
|
{{ end }}
|
|
|
|
|
|
|
|
$ cat dst/posts/index.gmi
|
|
|
|
=> /posts/post-1.gmi
|
|
|
|
=> /posts/post-2.gmi
|
|
|
|
```
|
|
|
|
|
2020-09-22 20:42:14 +00:00
|
|
|
## Templates
|
|
|
|
|
|
|
|
Templates are located in the `templates` directory.
|
|
|
|
|
|
|
|
There are currently two supported templates:
|
|
|
|
|
|
|
|
- `page.gmi`: The template used for pages
|
2020-09-23 01:11:56 +00:00
|
|
|
- `directory.gmi`: The template used for directories
|
2020-09-23 17:50:25 +00:00
|
|
|
|
2020-09-23 17:56:10 +00:00
|
|
|
If `page.gmi` does not exist, page files will not be created.
|
|
|
|
If `directory.gmi` does not exist, directory index files will not be created.
|
2020-09-23 17:50:25 +00:00
|
|
|
|
|
|
|
## Permalinks
|
|
|
|
|
|
|
|
Every page and directory in the site is assigned a path and a permalink.
|
|
|
|
|
|
|
|
```
|
|
|
|
file: src/posts/2020-09-22-hello-world.gmi
|
|
|
|
path: posts/2020-09-22-hello-world.gmi
|
|
|
|
permalink: /posts/hello-world.gmi
|
|
|
|
```
|
|
|
|
|
|
|
|
Paths are relative and point to the source file.
|
|
|
|
Permalinks are absolute and point to the destination file.
|
|
|
|
|
|
|
|
Here is an example of a directory:
|
|
|
|
|
|
|
|
```
|
|
|
|
directory: src/posts/
|
|
|
|
path: posts
|
|
|
|
permalink: /posts/
|
|
|
|
```
|