coleslaw/README.md

65 lines
3.2 KiB
Markdown
Raw Normal View History

2012-08-26 14:48:23 -04:00
# coleslaw
2012-08-29 14:58:49 -04:00
<img src="https://raw.github.com/redline6561/coleslaw/master/logo_medium.jpg" alt="coleslaw logo" align="right"/>
2011-04-16 15:45:37 -04:00
2012-08-29 14:58:49 -04:00
> [Czeslaw Milosz](http://blog.redlinernotes.com/tag/milosz.html) 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
2012-08-19 00:29:44 -04:00
* Git for storage
2012-08-22 00:11:33 -04:00
* RSS feeds!
* Markdown Support with Code Highlighting provided by [colorize](http://www.cliki.net/colorize).
* Currently supports: Common Lisp, Emacs Lisp, Scheme, Clojure, C, C++, Java, Python, Erlang, Haskell, Obj-C, Diff.
2012-08-19 00:29:44 -04:00
* Plugins to...
2012-08-26 14:41:32 -04:00
* Use LaTeX (inside pairs of $$) via Mathjax
* Import from wordpress
2012-08-19 00:29:44 -04:00
2012-08-29 14:58:49 -04:00
## 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:
2012-08-26 14:48:23 -04:00
2012-08-26 14:41:32 -04:00
1. Setup git and create a bare repo as shown [here](http://git-scm.com/book/en/Git-on-the-Server-Setting-Up-the-Server).
2. Install Lisp and [Quicklisp](http://quicklisp.org/).
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/
2012-08-26 14:48:23 -04:00
2012-08-26 14:41:32 -04:00
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.
2012-08-29 14:58:49 -04:00
## The Post Format
2012-08-26 14:41:32 -04:00
Coleslaw expects post files to be formatted as follows:
```
;;;;;
title: foo
tags: bar, baz
2012-09-01 00:42:01 +01:00
date: yyyy-mm-dd timestamp
2012-08-26 14:41:32 -04:00
format: html (for raw html) or md (for markdown)
;;;;;
your post
```
2012-08-29 14:58:49 -04:00
## Importing from Wordpress
2012-08-26 14:41:32 -04:00
There is a "plugin" to import from wordpress. At some point, it should be turned into a standalone script. Until then...
2012-08-26 14:48:23 -04:00
2012-08-26 14:41:32 -04:00
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")```
2012-08-26 14:48:23 -04:00
2012-08-26 14:41:32 -04:00
The XML will be read and placed into .post files in the :repo location specified in your [.coleslawrc](http://github.com/redline6561/coleslaw/blob/master/example.coleslawrc).
2012-08-29 14:58:49 -04:00
## Writing your own plugins
For now, see the [API](http://redlinernotes.com/docs/coleslaw.html) and the [mathjax plugin](https://github.com/redline6561/coleslaw/blob/master/plugins/mathjax.lisp) for an example.
A proper guide about this will be written later.
2012-08-26 14:44:36 -04:00
2012-08-29 14:58:49 -04:00
## Theming
2012-08-26 14:44:36 -04:00
A default theme, hyde, is provided. Themes are made using Google's closure-template and the source for [hyde](https://github.com/redline6561/coleslaw/tree/master/themes/hyde) should be simple and instructive until I can provide better docs.