Skip to content
Browse files

support spaces in files and use find correctly

  • Loading branch information...
1 parent 1df2294 commit d4f03b031411589fd6630833edfb8ad398ff62bf @nuex committed Oct 6, 2011
Showing with 61 additions and 57 deletions.
  1. +3 −1 Makefile
  2. +12 −56 bin/zod.template
  3. +46 −0 bin/zod_render
View
4 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
View
68 bin/zod.template
@@ -3,67 +3,23 @@
# ZODIAC - a simple static site generator
# Copyright (c) 2011 Chase Allen James <nx-zodiac@nu-ex.com>
-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"
-
-helpers=$proj/helpers.awk
-[ -f $helpers ] && helper_opts="-f $(pwd)/$helpers"
-
-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
+[ "$#" -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"
- 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"
+export ZOD_LIB ZOD_PROJECT ZOD_TARGET
- 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 {} \;
View
46 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

0 comments on commit d4f03b0

Please sign in to comment.
Something went wrong with that request. Please try again.