Flexible Lisp Blogware
Find a file
2012-08-26 14:41:32 -04:00
docs Flesh out README. 2012-08-26 14:41:32 -04:00
plugins Add a symlink for index.html, update mathjax config. 2012-08-26 12:37:06 -04:00
src Ensure tags are always lowercased. 2012-08-26 13:01:53 -04:00
tests Rework ASDs, add stub md+rst plugins, docs script, and stub tests. 2012-08-14 23:58:28 -04:00
themes/hyde Tweak css style for highlighting, change mathjax TeX delimiters to \[, \]. 2012-08-22 22:39:41 -04:00
.gitignore Implement DEPLOY, package updates, minor tweaks. 2012-08-19 00:29:33 -04:00
coleslaw.asd Move markdown into core since it's tiny and blows up trying to load split-sequence. 2012-08-22 16:47:12 -04:00
example.coleslawrc Tweak deploy code since post-receive kills $TMP_CLONE_REPO. 2012-08-25 15:12:38 -04:00
example.post-receive Typos. They're super lame. 2012-08-26 13:25:12 -03:00
gen-docs.sh Rework ASDs, add stub md+rst plugins, docs script, and stub tests. 2012-08-14 23:58:28 -04:00
logo_large.jpg Neil was kind enough to make me a logo. Good fun in small, medium and large. 2011-04-23 15:11:17 -04:00
logo_medium.jpg Neil was kind enough to make me a logo. Good fun in small, medium and large. 2011-04-23 15:11:17 -04:00
logo_small.jpg Neil was kind enough to make me a logo. Good fun in small, medium and large. 2011-04-23 15:11:17 -04:00
README Flesh out README. 2012-08-26 14:41:32 -04:00
TODO Scrap done and dumb things. 2012-08-22 13:53:07 -04:00

Coleslaw aims to be flexible blog software suitable for replacing a single-user static site compiler such as Jekyll.

# Features
* Git for storage
* RSS feeds!
* Markdown Support with Code Highlighting provided by [colorize]().
  * Currently supports: Common Lisp, Emacs Lisp, Scheme, C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff.
* Plugins to...
  * Use LaTeX (inside pairs of $$) via Mathjax
  * Import from wordpress

# 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](http://git-scm.com/book/en/Git-on-the-Server-Setting-Up-the-Server).
2. Install Lisp and Quicklisp.
3. For now, git clone https://github.com/redline6561/coleslaw.git inside ~/quicklisp/local-projects/. This is only temporarily necessary until coleslaw is in quicklisp.
4. ```cp coleslaw/example.coleslawrc ~/.coleslawrc``` # and edit as necessary
5. ```cp coleslaw/example.post-receieve your-blog.git/hooks/post-receive``` # and edit as necessary
6. ```chmod +x your-blog/.git/hooks/post-receive```
7. 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```
8. The only thing left to do is point a 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
date: yyyy-mm-dd timestamp
tags: bar, baz
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](http://github.com/redline6561/coleslaw/blob/master/example.coleslawrc).

# Writing your own plugins
For now, see the [API](http://redlinernotes.com/docs/coleslaw.html) the [mathjax plugin](https://github.com/redline6561/coleslaw/blob/master/plugins/mathjax.lisp) for an example.
A proper guide about this should be written later.