diff --git a/Makefile b/Makefile index 3d59722..2452c04 100644 --- a/Makefile +++ b/Makefile @@ -7,9 +7,10 @@ all: @echo Compiled install: all - @echo Installing zod executable to ${PREFIX}/bin + @echo Installing zod executables to ${PREFIX}/bin @mkdir -p ${PREFIX}/bin @cp bin/zod ${PREFIX}/bin + @cp bin/zod_render ${PREFIX}/bin @echo Installing awk lib files to ${AWKLIB} @mkdir -p ${AWKLIB} @cp lib/render.awk ${AWKLIB} @@ -19,6 +20,7 @@ install: all uninstall: @echo Uninstalling zod executable @rm ${PREFIX}/bin/zod + @rm ${PREFIX}/bin/zod_render @echo Uninstalling awk lib files @rm -rf ${AWKLIB} @echo Uninstallation Complete diff --git a/bin/zod.template b/bin/zod.template index f1b0e26..ea89fb6 100644 --- a/bin/zod.template +++ b/bin/zod.template @@ -3,67 +3,23 @@ # ZODIAC - a simple static site generator # Copyright (c) 2011 Chase Allen James -zod_lib=ZODLIB_PATH -markdown_filter_cmd="awk -f $zod_lib/markdown.awk" - -proj=$1 -target=$2 +ZOD_LIB=ZODLIB_PATH +ZOD_PROJECT=$1 +ZOD_TARGET=$2 _zod_error() { echo -e ">>> ERROR: $*" >&2 exit 1 } -[ ! "$1" ] || [ ! "$2" ] && { echo "usage: zod projectdir targetdir"; exit; } -[ ! -d $proj ] && _zod_error "project directory does not exist" -[ ! -d $target ] && _zod_error "target directory does not exist" +[ "$#" -ne 2 ] && { echo "usage: zod projectdir targetdir"; exit; } +[ ! -d "$ZOD_PROJECT" ] && _zod_error "project directory does not exist" +[ ! -d "$ZOD_TARGET" ] && _zod_error "target directory does not exist" -helpers=$proj/helpers.awk -[ -f $helpers ] && helper_opts="-f $(pwd)/$helpers" +export ZOD_LIB ZOD_PROJECT ZOD_TARGET -global_meta=$proj/global.meta -[ -f $global_meta ] && global_meta_opts=$global_meta - -layout=$proj/main.layout -[ -f $layout ] && layout_opts=$layout - -files=$(find $proj -type f \ - ! -name "*.layout" \ - ! -name "*.meta" \ - ! -name "helpers.awk") - -for f in $files; do - - # Find the target directory if one must be created - subdir=${f%/*} - subdir=${subdir#$proj} - if [ "$subdir" ]; then - destination="$target$subdir" - mkdir -p "$destination" - else - # There is no directory to create in target, - # i.e. file is in the root of the project - destination=$target - fi - - ext=${f##*.} - if [ $ext == "md" ] || [ $ext == "html" ]; then - - meta=${f%.$ext}.meta - [ -f $meta ] && page_meta_opts=$meta - - page=${f##*/} - page=${page%.$ext}.html - - awk -f $zod_lib/render.awk \ - -v markdown_filter_cmd="$markdown_filter_cmd" \ - $helper_opts \ - "$global_meta_opts" \ - "$page_meta_opts" \ - "$f" \ - "$layout_opts" > "$destination/$page" - - else - cp "$f" "$destination" # Copying a non-template file - fi -done +find "$ZOD_PROJECT" -type f \ + ! -name "*.layout" \ + ! -name "*.meta" \ + ! -name "helpers.awk" \ + -exec /home/nuex/_dev/zodiac/bin/zod_render {} \; diff --git a/bin/zod_render b/bin/zod_render new file mode 100755 index 0000000..5a27682 --- /dev/null +++ b/bin/zod_render @@ -0,0 +1,46 @@ +#!/bin/sh + +# render a zodiac page +# used internally by zod (uses file as single argument) + +f="$*" +markdown_filter_cmd="awk -f $ZOD_LIB/markdown.awk" + +[ -f "$ZOD_PROJECT/helpers.awk" ] && helper_opts="$ZOD_PROJECT/helpers.awk" +[ -f "$ZOD_PROJECT/global.meta" ] && global_meta_opts="$ZOD_PROJECT/global.meta" +[ -f "$ZOD_PROJECT/main.layout" ] && layout_opts="$ZOD_PROJECT/main.layout" + +# Find the target directory if one must be created +subdir=${f%/*} +subdir=${subdir#$ZOD_PROJECT} +if [ "$subdir" ]; then + destination="$ZOD_TARGET$subdir" + mkdir -p "$destination" +else + # There is no directory to create in target, + # i.e. file is in the root of the project + destination="$ZOD_TARGET" +fi + +ext=${f##*.} +if [ $ext == "md" ] || [ $ext == "html" ]; then + + meta=${f%.$ext}.meta + [ -f "$meta" ] && page_meta_opts="$meta" + + page=${f##*/} + page=${page%.$ext}.html + + set -- -f "$ZOD_LIB/render.awk" + [ "$helper_opts" ] && set -- "$@" -f "$helper_opts" + set -- "$@" -v markdown_filter_cmd="$markdown_filter_cmd" \ + "$global_meta_opts" \ + "$page_meta_opts" \ + "$f" \ + "$layout_opts" + + awk "$@" > "$destination/$page" + +else + cp "$f" "$destination" # Copying a non-template file +fi