kiln/README.md

130 lines
2.6 KiB
Markdown
Raw Normal View History

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
## 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/
```