Building overhaul

Apart from the switch to a more night friendly site style-sheet I’ve also now switch to a new build system for my not-a-blog. Full script at the bottom. Repo link.

The nice thing about this new script? Way more features, more unixy so it ends up being really straight forward to use, oh and it has a nice name now gensite. The only major dependency it has is pandoc but I’m slowly going to phase that out for another script which accomplishes the same thing so far; it just can’t do tables yet.

Anyway I’ve been messing about with more shell scripting things as I’ve been ded for nearly 3 weeks on account of a really epic eye infection which has left me needing glasses.

# Uses pandoc to turn markdown into html for my personal blog


assert_arg() {
	[ -z $1 ] && echo No argument provided && exit 1

mirror_scaffold() {
	# Setup mirror directory so that we can later truck through building new posts and pages
	mkdir -p $mirror/
	cp -r media/ $mirror/media/
	cp partials/style.css $mirror/

fix_tables_imgs_pure() {
	sed -i "s/{TITLE}/<title>$(basename --suffix=.html 1)<\/title>/g" "$1"
	sed -i 's/<img/<img class="pure-img"/g' "$1"
	sed -i 's/<table>/<table class="pure-table">/g' "$1"

create_post() {
	fname=$(basename $1).html
	mkdir -p $mirror/post/
	pandoc $1 | cat partials/header.html - partials/footer.html \
		> $mirror/post/$fname

	fix_tables_imgs_pure $mirror/post/$fname

build_root_page() {
	fname=$(basename $1).html
	mkdir -p $mirror/
	if [ ${1: -5} = ".html" ];then
		cat partials/header.html $1 partials/footer.html > $mirror/$fname
		pandoc $1 | cat partials/header.html - partials/footer.html \
			> $mirror/$fname
	fix_tables_imgs_pure $mirror/$fname

refresh_root_src() {
	cp root/* $mirror

copy_media() {
	mkdir -p $mirror/media/
	cp root/style.css $mirror/
	cp -r media/ $mirror/

new_project() {
	mkdir -p "$1"
	cd "$1"
	mkdir -p media/fonts/ media/img/
	mkdir partials/ posts/ pages/ root/
	touch partials/header.html partials/footer.html
	echo Project \""$1"\" created.

_help_prompt() {
cat <<EOF
   new project_path: Create a new project folder
   P|page file.path: Build the root level page
   p|post file.path: Build that one post into the site mirror folder's posts directory
   r|root file.path: Build that root page, these live like /index.html /about.html etc.
   R|roots: Copy over the new/updated root resources
   m|media: Copy over the media folder contents
   s|scaffold: Build mirror directory
   server: Run python live server 

[ -z $1 ] && _help_prompt && exit 0

opt=`echo $1 | tr -d '-'`
case $opt in
	new) assert_arg $2;new_project $2;;
	P|page) assert_arg $2; build_root_page $2;;
	p|post) assert_arg $2;create_post $2;;
	r|root) assert_arg $2;build_root_page $2;;
	R|roots) refresh_root_src;;
	m|media) copy_media;;
	s|scaffold) mirror_scaffold;;
	server) cd $mirror && python -m SimpleHTTPServer 8080;;
	*) _help_prompt;;