diff --git a/processor b/processor
index 2f1b6b7..ef507a0 100755
--- a/processor
+++ b/processor
@@ -20,102 +20,100 @@
# along with this program. If not, see .
# #
-repotype="${1?Missing repository type}"
-path_out="${2?Missing output path}"
+declare -xr repotype="${1?Missing repository type}"
+declare -xr path_out="${2?Missing output path}"
# provide default message formatter if necessary
msgfmt="${msgfmt:-./msgfmt}"
# default template path (the former is exported so that templates themselves may
# make use of default templates)
-export path_default_tpl=./tpl
-path_tpl="${path_tpl:-$path_default_tpl}"
+declare -xr path_default_tpl=./tpl
+declare -xr path_tpl="${path_tpl:-$path_default_tpl}"
-# output XHTML5 header
-cat <
-
-
-
- $title
-
-
- $title
- $desc
-EOH
+resolv-template()
+{
+ name="$1"
+ [ -x "$path_tpl/$name" ] \
+ && echo "$path_tpl/$name" \
+ || echo "$path_default_tpl/$name"
+}
+apply-template()
+{
+ $( resolv-template "$1" )
+}
+exec-template()
+{
+ exec $( resolv-template "$1" )
+}
+# performs index generation; by separating this into a procedure, we allow the
+# template to invoke it at any point and further process the output
+do-index()
+{
+ prevdate=
+ lastts=
+ firstyear=0
+ lastyear=0
+ lasthash=
-prevdate=
-lastts=
-firstyear=0
-lastyear=0
-lasthash=
+ # generate index
+ while read hash commit ts id subject; do
+ # ignore commits that begin with ':'
+ [[ "$subject" == :* ]] && {
+ echo "Ignoring $commit: $subject" >&2
+ continue
+ }
-# generate index
-while read hash commit ts id subject; do
- # ignore commits that begin with ':'
- [[ "$subject" == :* ]] && {
- echo "Ignoring $commit: $subject" >&2
- continue
- }
+ echo "Found $commit: $subject" >&2
- echo "Found $commit: $subject" >&2
+ dateout="$( ./tsdate "$ts" %Y-%m-%d )"
+ dategroup="${dateout%-*}"
+ day="${dateout##*-}"
+ month="$( ./tsdate "$ts" %m )"
+ year="${dateout%%-*}"
- dateout="$( ./tsdate "$ts" %Y-%m-%d )"
- dategroup="${dateout%-*}"
- day="${dateout##*-}"
- month="$( ./tsdate "$ts" %m )"
- year="${dateout%%-*}"
+ # commits are ordered by date desc
+ lasthash="${lasthash:-$hash}"
+ lastts="${lastts:-$ts}"
+ lastyear="${lastyear:-$year}"
+ firstyear="$year"
- # commits are ordered by date desc
- lasthash="${lasthash:-$hash}"
- lastts="${lastts:-$ts}"
- lastyear="${lastyear:-$year}"
- firstyear="$year"
+ pagefile="$( ./outfgen "$ts" "$id" )"
+ fmtsubject="$( "$msgfmt" < <( echo "$subject"; echo ) )"
- pagefile="$( ./outfgen "$ts" "$id" )"
- fmtsubject="$( "$msgfmt" < <( echo "$subject"; echo ) )"
+ [ "$prevdate" == "$dategroup" ] || {
+ echo "$dategroup
"
+ }
- [ "$prevdate" == "$dategroup" ] || {
- echo "$dategroup
"
- }
+ printf '' \
+ "$day" "$pagefile" "$fmtsubject"
- printf '' \
- "$day" "$pagefile" "$fmtsubject"
+ prevdate="$dategroup"
- prevdate="$dategroup"
+ # create the containing directory (if it does not yet exist and then
+ # generate the commit page
+ mkdir -p "$( dirname "$path_out/$pagefile" )" \
+ && (
+ # make the majority of the data available as environment variables
+ # (for convenience), lowercase so as not to be conflict with
+ # conventional environment variables
+ export hash commit id subject="$fmtsubject" timestamp="$ts"
+ export dategroup month day year
+ export path_root='../../'
- # create the containing directory (if it does not yet exist and then generate
- # the commit page
- mkdir -p "$( dirname "$path_out/$pagefile" )" \
- && (
- # make the majority of the data available as environment variables (for
- # convenience), lowercase so as not to be conflict with conventional
- # environment variables
- export hash commit id subject="$fmtsubject" timestamp="$ts"
- export dategroup month day year
- export path_root='../../'
+ # invoke template
+ "$repotype"/commit2html "$commit" | "$path_tpl/commit"
+ ) > "$path_out/$pagefile" \
+ && ./hashcache "$hash" "$pagefile"
+ done
- # invoke template
- "$repotype"/commit2html "$commit" | "$path_tpl/commit"
- ) > "$path_out/$pagefile" \
- && ./hashcache "$hash" "$pagefile"
-done
+ yearrange="$firstyear"
+ if [ "$lastyear" -gt "$firstyear" ]; then
+ yearrange="$firstyear–$lastyear"
+ fi
+}
-yearrange="$firstyear"
-if [ "$lastyear" -gt "$firstyear" ]; then
- yearrange="$firstyear–$lastyear"
-fi
-
-cat <