4 small blog system using the redo build system, with blog article files written
5 in (pandoc) Markdown or ReStructured Text.
12 - uuidgen (Debian package: uuid-runtime)
24 To set up a directory with symbolic links to the relevant files in ./processor/,
25 run ./add_dir.sh DIRECTORY.
27 You can then enter the directory and run redo there. This will generate article
28 .html files from all .md and .rst files, plus a ./index.html, and a ./feed.xml.
29 These files will be linked to symbolically in a directory ./public/.
31 Some metadata files will also be generated below ./metadata/: For each article,
32 there will be generated a .automatic_metadata (to contain an article's UUID,
33 checksum, and creation/modification dates) and a .intermediate file (to contain
34 pandoc-formatted article content like title and body); furthermore, files for
35 data used in ./feed.xml and ./index.html will, if non-existant, be built there
36 and can be edited to customize the blog – namely the files url, author, title,
37 index.tmpl, index_snippet.tmpl, article.tmpl. A blog-specific UUID and creation
38 date is stored in ./metadata/automatic_metadata
40 recipe to remotely manage a redo blog with git
41 ----------------------------------------------
43 On your server, install the dependencies listed above. Then set up a repository
44 for your blog files. Let's assume we want it to sit in our home directory and be
49 git init --bare blog.git
50 cat << EOF > blog.git/hooks/post-update
53 export GIT_DIR=\$(pwd)
54 export GIT_WORK_TREE="\$blog_dir"
58 git add metadata/author metadata/url metadata/title metadata/*.tmpl metadata/*.automatic_metadata metadata/automatic_metadata
59 status=\$(git status -s)
60 n_updates=\$(printf "$status" | grep -vE '^\?\?' | wc -l)
61 if [ "\$n_updates" -gt 0 ]; then
62 git commit -a -m 'Update metadata'
65 chmod a+x blog.git/hooks/post-update
67 Enable management of `~/blog` via redo-blog:
69 git clone https://github.com/plomlompom/redo-blog/
74 Link to the `public` subdirectory from wherever your web server expects your
75 public web content to sit:
77 ln -s ~/blog/public /var/www/html/blog
79 Client-side, do this (you obviously need to customize this code; at least
80 replace the username `user` and the server name `example.org`):
85 git remote add origin ssh://user@example.org:/home/user/blog.git
87 echo 'https://example.org/blog/' > metadata/url
89 git commit -m 'set up blog metadata'
90 git push origin master
92 If successful, the git hook will furthermore commit some ~/blog/metadata/ files
93 generated by redo, that can be pulled into the client-side local repository:
95 git pull origin master
97 bugs and peculiarities
98 ----------------------
100 Don't create a index.rst or index.md in the redo-managed directory, that will
103 The article title is derived in .md files from a first line prefixed with `%`,
104 while all other headings are treated as sub-headings. In .rst files, the title
105 is derived from a heading that must be at the top of the document, and be of an
106 adornment style (such as underlining with `=`) that must be used only once in