diff --git a/Makefile b/Makefile index 2452c04..ad2f6fa 100644 --- a/Makefile +++ b/Makefile @@ -7,20 +7,20 @@ all: @echo Compiled install: all - @echo Installing zod executables to ${PREFIX}/bin + @echo Installing zod executable 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} @cp lib/markdown.awk ${AWKLIB} + @cp lib/config.awk ${AWKLIB} + @cp lib/opt_builder.awk ${AWKLIB} @echo Installation Complete 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 old mode 100644 new mode 100755 index 3b94e31..99ee0d1 --- a/bin/zod.template +++ b/bin/zod.template @@ -13,12 +13,94 @@ _zod_error() { exit 1 } +_zod_config() { + cat - "$cfg" < "$destination/$page" +} + +_zod_copy() { + file="$1" + destination="$(_zod_destination "$file")" + cp "$file" "$destination" +} + +_zod_exec() { + phase="$@" + set -- "$proj" -type f + for instruction in $(_zod_find_opt_builder "$phase" "$cfg"); do + inst=$(echo $instruction | sed 's/"//g') + case $inst in + or ) set -- "$@" -o;; + not ) set -- "$@" !;; + * ) set -- "$@" -name "$inst";; + esac + done + find "$@" | while read -r file; do + case "$phase" in + render ) _zod_render "$file";; + copy ) _zod_copy "$file";; + esac + done +} + [ "$#" -ne 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" -find "$proj" -type f \ - ! -name "*.layout" \ - ! -name "*.meta" \ - ! -name "helpers.awk" \ - -exec zod_render "$zod_lib" "$proj" "$target" {} \; +[ -f "$proj/.zod/config" ] && cfg="$proj/.zod/config" + +_zod_exec "render" +_zod_exec "copy" diff --git a/bin/zod_render b/bin/zod_render deleted file mode 100755 index 1b2d4e2..0000000 --- a/bin/zod_render +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# render a zodiac page -# zod_render zodlibdir projdir targetdir md_builtin [files] - -zod_lib="$1" -proj="$2" -target="$3" -md_builtin="$4" -f="$5" - -# source zod sh functions -. $zod_lib/zod_functions - -ext=${f##*.} -meta=${f%.$ext}.meta - -set -- -f "$zod_lib/render.awk" -[ -f "$proj/helpers.awk" ] && set -- "$@" -f "$proj/helpers.awk" -set -- "$@" -v markdown_filter_cmd="$md_builtin" -[ -f "$proj/global.meta" ] && set -- "$@" $proj/global.meta -[ -f "$meta" ] && set -- "$@" $meta -set -- "$@" "$f" - -find "$proj" -type f -name "*.partial" -o -name "*.layout" -while read -r part; do - set -- "$@" "$part" -done - -page=${f##*/} -page=${page%.$ext}.html -__zod_destination "$proj" "$target" "$f" -awk "$@" > "$destination/$page" diff --git a/bin/zod_supported_extensions b/bin/zod_supported_extensions deleted file mode 100755 index 14f910e..0000000 --- a/bin/zod_supported_extensions +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# return a list of all supported file extensions - -zod_lib="$1" -filter_opts="$2" - -awk -f "$zod_lib/supported_extensions.awk" "$filter_opts" diff --git a/example/site/helpers.awk b/example/site/helpers.awk index 271935c..90d6f1a 100644 --- a/example/site/helpers.awk +++ b/example/site/helpers.awk @@ -5,9 +5,10 @@ function load_helpers() { } function page_title( title) { - if ("title" in data) { - return data["title"] " - " data["site_title"] + if (data["title"]) { + title = data["title"] " - " data["site_title"] } else { - return data["site_title"] + title = data["site_title"] } + return title } diff --git a/example/site/main.layout b/example/site/main.layout index e6164b0..fe5b972 100644 --- a/example/site/main.layout +++ b/example/site/main.layout @@ -6,10 +6,14 @@