|
||
---|---|---|
cli | ||
cli-tests | ||
docs | ||
examples | ||
plugins | ||
roswell | ||
src | ||
tests | ||
themes | ||
.gitignore | ||
.travis.yml | ||
coleslaw-cli.asd | ||
coleslaw-conf.asd | ||
coleslaw-test.asd | ||
coleslaw.asd | ||
LICENSE | ||
NEWS.md | ||
README.md |
coleslaw

Czeslaw Milosz was the writer-in-residence at UNC c. 1992. I used to see him all the time at the Hardback Cafe, always sitting at a two-top drinking coffee, reading, writing, eating chips and salsa. I remember a gentleness behind the enormous bushy eyebrows and that we called him Coleslaw. - anon
Coleslaw is Flexible Lisp Blogware similar to Frog, Jekyll, or Hakyll.
Have questions?
- IRC in #coleslaw on Freenode!
- Subscribe to the mailing list coleslaw@common-lisp.net.
See the wiki for a list of coleslaw-powered blogs.
Coleslaw should run on any conforming Common Lisp implementations but testing is primarily done on SBCL and CCL.
Features
- Git for storage
- RSS/Atom feeds
- A Plugin API and plugins for...
plugins | plugins | plugins |
---|---|---|
Sitemap generation | Incremental builds | Analytics via Google or Piwik |
Comments via Disqus | Comments via isso | Hosting via Amazon S3 |
Hosting via Github Pages | Embedding gfycats | Tweeting about new posts |
Mathjax | Posts in ReStructured Text | Wordpress import |
Pygments | colorize |
Installation/Tutorial
Step 1: Install this library.
With Roswell,
$ ros install coleslaw
$ export PATH="$HOME/.roswell/bin:$PATH" # If you haven't done this before
or
(ql:quickload :coleslaw-cli)
Step 2: Initialize your blog repository.
$ mkdir yourblog ; cd yourblog
$ git init
$ coleslaw setup
(coleslaw-cli:setup)
Step 3: Write a post file in the current directory.
The file should contain a certain metadata, so use the coleslaw new
command,
which instantiates a correct file for you.
$ coleslaw new
Created a post 2017-11-06.post .
(coleslaw-cli:new "post")
Step 4: Generate the site from those post files.
The result goes to the deploy/
subdirectory.
$ coleslaw
(coleslaw-cli:generate)
Step 5: You can also launch a server...
$ coleslaw preview
(coleslaw-cli:preview)
Step 6: and watch the file system to automatically regenerate the site!
$ coleslaw watch # or even better,
$ coleslaw watch-preview
(coleslaw-cli:watch) ;; watch-preview does not work on REPL right now
For further customization, edit the .coleslawrc
file generated by coleslaw setup
.
Consult the config docs.
The Content Format
Coleslaw expects content to have a file extension matching the class
of the content. (I.e. .post
for blog posts, .page
for static pages, etc.)
There should also be a metadata header on all files
starting and ending with the config-specified :separator
, ";;;;;" by
default. Example:
;;;;;
title: foo
tags: bar, baz
date: yyyy-mm-dd hh:mm:ss
format: html (for raw html) or md (for markdown)
excerpt: Can also be extracted from content (see :excerpt-sep config param)
;;;;;
your post
Posts require the title:
and format:
fields.
Pages require the title:
and url:
fields.
To omit a field, simply do not have the line present, empty lines and fields (e.g. "tags:" followed by whitespace) will be ignored.
Theming
Two themes are provided: hyde, the default, and readable (based on bootswatch readable).
A guide to creating themes for coleslaw lives here.
Deploying on a standalone server
Coleslaw can deploy to a standalone server. If you want this server installation, initialize a bare git repo and set up the post-receive hook on that repo.
-
First initialize a git bare repo on the server.
-
Copy example post-receive hook to your blog's bare repo and set the executable bit (
chmod +x
). -
Point the web server at
:deploy-dir
attribute on the config file. Or "deploy-dir/.curr" if theversioned
plugin is enabled.
Hacking
A core goal of coleslaw is to be both pleasant to read and easy to hack on and extend. If you want to understand the internals and bend coleslaw to do new and interesting things, I strongly encourage you to read the Hacker's Guide to Coleslaw. You'll find some current TODO items towards the bottom.