home · contact · privacy
Re-write date handling, remove dependency on filesystem lastmod dates.
[redo-blog] / processor / index.html.do
index af8ba85e225e05599ba7cca418f68ad453b9376f..031029404ade82260ccb369b63f345d9961cb82f 100644 (file)
@@ -2,44 +2,46 @@
 
 # Pull in global dependencies.
 . ./helpers.sh
+metadata_dir=metadata
 srcdir=`pwd`
-title_file=title.meta
+title_file="$metadata_dir"/title
 redo-ifchange "$title_file"
+template_file="${metadata_dir}"/index.tmpl
+redo-ifchange "$template_file"
 
-# Write index head.
-cat << EOF
-<!DOCTYPE html>
-<html>
-<head>
-EOF
-blog_title=`read_and_escape_file "$title_file" | head -1`
-printf "<title>%s</title>\n</head>\n<body>\n" "$blog_title"
-printf "<h1>%s</h1>\n<ul>\n" "$blog_title"
+# Build blog title.
+title=$(read_and_escape_file "$title_file" | head -1 | prep_sed)
 
 # Generate link list entries.
-mkdir -p index_snippets
+tmp_snippets_dir=.tmp_index_snippets
+mkdir -p "$tmp_snippets_dir"
 for file in ./*.rst ./*.md; do
   if [ -e "$file" ]; then
-    uuid_file="${file%.*}.uuid"
-    redo-ifchange "$uuid_file"
-    published=`stat -c%y "${uuid_file}"`
-    published_unix=$(date -u "+%s%N" -d "${published}")
-    snippet_file="${file%.*}.index_snippet"
+    meta_file="${metadata_dir}/${file%.*}.automatic_metadata"
+    redo-ifchange "$meta_file"
+    published=$(get_creation_date_from_meta_file_nanoseconds "$meta_file")
+    snippet_file="${metadata_dir}/${file%.*}.index_snippet"
     redo-ifchange "$snippet_file"
-    ln -s "$srcdir/$snippet_file" "./index_snippets/${published_unix}"
+    ln -s "$srcdir/$snippet_file" "./${tmp_snippets_dir}/${published}"
   fi
 done
 
 # Write link list.
-for file in ./index_snippets/*; do
-  touch ./index_snippets/list
-  cat "$file" ./index_snippets/list > ./index_snippets/tmp
-  mv ./index_snippets/tmp ./index_snippets/list
+for file in ./${tmp_snippets_dir}/*; do
+  if [ -e "$file" ]; then
+    touch ./${tmp_snippets_dir}/list
+    cat "$file" ./${tmp_snippets_dir}/list > ./${tmp_snippets_dir}/tmp
+    mv ./${tmp_snippets_dir}/tmp ./${tmp_snippets_dir}/list
+  fi
 done
-if [ -e "./index_snippets/list" ]; then
-  cat ./index_snippets/list
+if [ -e "./${tmp_snippets_dir}/list" ]; then
+  list=$(cat ./${tmp_snippets_dir}/list | prep_sed)
 fi
-rm -rf index_snippets
+rm -rf "${tmp_snippets_dir}"
 
-# Write index footer.
-printf "</ul>\n</body>\n</html>"
+# Put data into template.
+template=$(cat "$template_file")
+printf "%s" "$template" | \
+sed 's/%TITLE%/'"$title"'/g' | \
+sed 's/%LIST%/'"$list"'/g' | \
+tr '\a' '%'