Flexible Lisp Blogware
Find a file
2013-01-01 18:18:43 -05:00
docs Bump version to 0.6.5, update docs. 2012-09-12 14:26:25 -04:00
examples Multi-site support 2012-12-31 14:00:54 +02:00
plugins Fix destructuring and other minor thinkos. 2012-09-20 19:14:10 -04:00
src First pass at support for multiple content-types. WARNING: Indices and feeds are broken. 2013-01-01 18:18:43 -05:00
tests Rework ASDs, add stub md+rst plugins, docs script, and stub tests. 2012-08-14 23:58:28 -04:00
themes Rename rss->rss-feed for template name consistency. 2012-11-28 15:56:09 -05:00
.gitignore Implement DEPLOY, package updates, minor tweaks. 2012-08-19 00:29:33 -04:00
coleslaw.asd First pass at support for multiple content-types. WARNING: Indices and feeds are broken. 2013-01-01 18:18:43 -05:00
gen-docs.sh Rework ASDs, add stub md+rst plugins, docs script, and stub tests. 2012-08-14 23:58:28 -04:00
README.md Update README to mention support for multi-site publishing. 2013-01-01 18:18:11 -05:00
TODO Add TODO note. 2012-09-25 19:29:10 -04:00

coleslaw

coleslaw logo

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 aims to be flexible blog software suitable for replacing a single-user static site compiler such as Jekyll.

Features

  • Git for storage
  • RSS and Atom feeds!
  • Markdown Support with Code Highlighting provided by colorize.
    • Currently supports: Common Lisp, Emacs Lisp, Scheme, C, C++, Java, Python, Erlang, Haskell, Obj-C, Diff.
  • Multi-site publishing support.
  • Plugins for...
    • Comments via Disqus
    • Using LaTeX (inside pairs of ) via Mathjax
    • Importing posts from wordpress
  • There is also a Heroku buildpack maintained by Jose Pereira.
  • Example sites: redlinernotes and (lisp :is 'fun).

Installation

This software should be portable to any conforming Common Lisp implementation but this guide will assume SBCL is installed. Testing has also been done on CCL. Server side setup:

  1. Setup git and create a bare repo as shown here.
  2. Install Lisp and Quicklisp.
  3. wget -c https://raw.github.com/redline6561/coleslaw/master/example.coleslawrc -O ~/.coleslawrc # and edit as necessary
  4. wget -c https://raw.github.com/redline6561/coleslaw/master/example.post-receieve -O your-blog.git/hooks/post-receive # and edit as necessary
  5. chmod +x your-blog/.git/hooks/post-receive
  6. Create or clone your blog repo locally. Add your server as a remote with git remote add prod git@my-host.com:path/to/repo.git
  7. Point the web server of your choice at the symlink /path/to/deploy-dir/.curr/

Now whenever you push a new commit to the server, coleslaw will update your blog automatically! You may need to git push -u prod master the first time.

The Post Format

Coleslaw expects post files to be formatted as follows:

;;;;;
title: foo
tags: bar, baz
date: yyyy-mm-dd hh:mm:ss
format: html (for raw html) or md (for markdown)
;;;;;
your post

Importing from Wordpress

There is a "plugin" to import from wordpress. At some point, it should be turned into a standalone script. Until then...

  1. Export your posts from wordpress.
  2. In your lisp of choice, do the following:
    1. (ql:quickload 'coleslaw)
    2. (in-package :coleslaw)
    3. (load-plugins '(import))
    4. (coleslaw-import::import-posts "/path/to/export.xml")

The XML will be read and placed into .post files in the :repo location specified in your .coleslawrc.

Writing your own plugins

For now, see the API and the mathjax plugin for an example. A proper guide about this will be written later.

Theming

A default theme, hyde, is provided. Themes are made using Google's closure-template and the source for hyde should be simple and instructive until I can provide better docs.