No description
Find a file
Johann f8c6034342 Improve dir creation during copy
This fixes two minor problems introduced by 02f866cade:

- We disallow the use of unsafe `unwrap`, even if they were unlikely to
  blow up, because errors should not invoke a panic but be returned as a
  Result. In this case the unwrap is especially unsafe, since
  path.parent() returns None on paths like `/`.
- `dest.clone()` was called without need
2016-03-21 17:18:47 +01:00
src Improve dir creation during copy 2016-03-21 17:18:47 +01:00
tests added integration test for copy_files bug 2016-03-14 22:19:14 -04:00
.gitignore Add tests 2015-11-06 21:22:45 +01:00
.travis.yml Update .travis.yml 2015-11-07 09:48:51 +01:00
Cargo.toml Bump to v0.2 2016-03-03 08:51:56 +01:00
CHANGELOG.md Bump to v0.2 2016-03-03 08:51:56 +01:00
CONTRIBUTING.md Update CONTRIBUTING.md 2016-02-14 11:31:00 +01:00
LICENSE Fix autogenerated attribution 2016-01-07 10:13:03 -08:00
README.md Implement custom template extensions (closes #54) 2016-03-03 08:45:04 +01:00

Cobalt

Gitter

A static site generator written in Rust.

Installation

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

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.tpl

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 .tpl, .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.