cobalt.rs/README.md
2016-04-23 07:38:46 +02:00

3.6 KiB

Cobalt

Gitter

A static site generator written in Rust.

Installation

  $ cargo install --git https://github.com/cobalt-org/cobalt.rs

Examples

There are a few people already using cobalt. Here is a list of projects and their source code that use cobalt.

Usage

  $ cobalt build -s path/to/your/source -d path/to/your/destination

See more options with

  $ cobalt -h

Layouts

You can have custom layouts in the _layouts directory.

Layouts will be compiled as liquid templates.

Posts

Posts live in _posts.

Example:

extends: posts.liquid

title:   My first Blogpost
date:    01 Jan 2016 21:00:00 +0100
---
Hey there this is my first blogpost and this is super awesome.

My Blog is lorem ipsum like, yes it is..

The content before --- are meta attributes ("front matter") made accessible to the template via their key (see below).

The extends attribute specifies which layout will be used.

The date attribute will be used to sort blog posts (from last to first). date must have the format %dd %Mon %YYYY %HH:%MM:%SS %zzzz, so for example 27 May 2016 21:00:30 +0100.

Other files

Any file with the .md or .liquid file extension is considered a liquid template and will be parsed for metadata and compiled using liquid, like a post.

Unlike posts, files outside the _posts directory will not be indexed as blog posts and not passed to the index file in the list of contents.

All other files and directories in the source folder will be recursively added to your destination folder.

You can specify different template extensions by setting the template_extensions field in your config file:

template_extensions: ['txt', 'lqd']

Attributes

All template files have access to a set of attributes.

In example above title is accessible via {{ title }} and date via {{ date }}, for the layout template as well as the post template.

Special Attributes

content

{{ content }} is accessible only to layouts and contains the compiled text below the --- block of the post.

posts

{{ posts }} is a list of the attributes of all templates in the _posts directory. Example usage on a page listing all blog posts:

{% for post in posts %}
 <a href="blog/{{post.name}}.html">{{ post.title }}</a>
{% endfor %}

RSS

To generate an RSS file from the metadata of your _posts, you need to provide the following data in your config.file:

# path where the RSS file should be generated
rss: rss.xml
name: My blog!
description: Blog description
link: http://example.com

None of these fields are optional, as by the RSS 2.0 spec.

Make sure to also provide the fields title, date and description in the front matter of your posts.