From: Christian Heller Date: Sat, 19 Nov 2016 20:44:54 +0000 (+0100) Subject: Move all scripts etc. to their own directory. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/todo?a=commitdiff_plain;h=dfdd193cf3f2f215fd26bae06ada013a14422581;p=redo-blog Move all scripts etc. to their own directory. --- diff --git a/add_dir.sh b/add_dir.sh index 116e891..33bc913 100755 --- a/add_dir.sh +++ b/add_dir.sh @@ -2,10 +2,10 @@ set -e -curdir=`pwd` +srcdir=`pwd`/processor mkdir -p "$1" cd "$1" -for file in "$curdir"/*.do "$curdir"/helpers.sh "$curdir"/intermediate.tmpl; do +for file in "$srcdir"/*; do set +e ln -s "$file" set -e diff --git a/all.do b/all.do deleted file mode 100644 index edd2b47..0000000 --- a/all.do +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh - -# Remove target files for which no sources files can be found. -for file in *.intermediate; do - if test -f "$file" && - ! test -f "${file%.intermediate}.md" && - ! test -f "${file%.intermediate}.rst"; then - rm "$file" - fi -done -for file in *.uuid; do - if test -f "$file" && - ! test -f "${file%.uuid}.md" && - ! test -f "${file%.uuid}.rst"; then - rm "$file" - fi -done -for file in *.html; do - if test -f "$file" && - ! test "$file" = "index.html" && - ! test -f "${file%.html}.intermediate"; then - rm "$file" - fi -done - -# Determine target files from the sources files present, declare dependencies -# of the all.do script on them / build them if necessary. -for file in *.rst *.md; do - if test -f "$file"; then - redo-ifchange "${file%.*}.intermediate" - fi -done -for file in *.intermediate; do - if test -f "$file"; then - redo-ifchange "${file%.*}.html" - fi -done - -# Regenerate feed and index pages. Always. -redo "feed.xml" -redo "index.html" diff --git a/author.do b/author.do deleted file mode 100644 index ed14e3f..0000000 --- a/author.do +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -if [ ! -f "$1" ]; then - printf "Joe Sixpack" -fi diff --git a/default.html.do b/default.html.do deleted file mode 100644 index 3ff4132..0000000 --- a/default.html.do +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -# Pull in global dependencies. -. ./helpers.sh -intermediate_file="${1%.html}.intermediate" -redo-ifchange title -redo-ifchange "$intermediate_file" - -# Build entry data. -blog_title=`read_and_escape_file title | head -1` -title_html=`cat "$intermediate_file" | head -1` -title_plaintext=`echo "$title_html" | html2text` -title_plaintext_escaped=`escape_html "$title_plaintext"` -body=`cat "$intermediate_file" | sed 1d` - -# Write first part of entry head. -cat << EOF - - - -EOF - -# Write remaining entry head and body. -printf "%s – %s\n\n\n" "$blog_title" "$title_plaintext_escaped" -#printf "%s – %s\n\n\n" "$blog_title" "$entry_title" -printf "

%s

\n" "$title_html" -printf "
\n%s\n
\n\n" "$body" diff --git a/default.intermediate.do b/default.intermediate.do deleted file mode 100644 index 7470c3c..0000000 --- a/default.intermediate.do +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -template=intermediate.tmpl -uuidfile="${1%.intermediate}.uuid" -redo-ifchange "$uuidfile" -redo-ifchange "$template" -mdfile="${1%.intermediate}.md" -rstfile="${1%.intermediate}.rst" -if [ -f "$rstfile" ]; then - redo-ifchange "$rstfile" - pandoc -f rst --template="$template" --mathml -t html5 "$rstfile" > "$3" -elif [ -f "$mdfile" ]; then - redo-ifchange "$mdfile" - pandoc -f markdown --template="$template" --mathml -t html5 "$mdfile" > "$3" -fi diff --git a/default.uuid.do b/default.uuid.do deleted file mode 100644 index 5efffc8..0000000 --- a/default.uuid.do +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -if [ ! -f "$1" ]; then - uuidgen > "$1" -fi diff --git a/feed.xml.do b/feed.xml.do deleted file mode 100644 index 2cdb7b2..0000000 --- a/feed.xml.do +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh - -# Pull in global dependencies. -. ./helpers.sh -redo-ifchange url -redo-ifchange author -redo-ifchange uuid -redo-ifchange title - -# Build some variables. XML-escape even file contents that should not contain -# dangerous characters, just to avoid any XML trouble. -base_url=`cat url | head -1` -url_protocol=`echo $base_url | cut -d ':' -f 1` -url_basepath=`echo $base_url | cut -d '/' -f 3-` -url_basepath_escaped=`escape_url "$url_basepath"` -basepath="$url_protocol""://""$url_basepath_escaped" -title=`read_and_escape_file title | head -1` -author=`read_and_escape_file author | head -1` -uuid=`read_and_escape_file uuid | head -1` - -# Write majority of feed head. -cat << EOF - - -EOF -printf "\n" "$basepath" -printf "\n" "$basepath" -printf "%s\n" "$title" -printf "%s\n" "$author" -printf "urn:uuid:%s\n" "$uuid" - -# Iterate through most recent entries (go by lastmod date of source files) to -# build feed head "updated" element, and individual entries. -first_run=0 -files=`ls -1t *.rst *.md | head -10 | tr '\n' $'\0'` -oldIFS="$IFS" -IFS=$'\0' -for file in $files; do - lastmod=`stat -c%y "$file"` - lastmod_rfc3339=`date -u "+%Y-%m-%dT%TZ" -d "$lastmod"` - if [ "$first_run" -lt "1" ]; then - IFS="$oldIFS" - printf "%s\n\n" "$lastmod_rfc3339" - first_run=1 - fi - - # Build some variables and dependencies. - intermediate_file="${file%.*}.intermediate" - htmlfile=`escape_url "${file%.*}.html"` - redo-ifchange "$intermediate_file" - redo-ifchange "$uuidfile" - title=`read_and_escape_file "$intermediate_file" | head -1` - uuidfile="${file%.*}.uuid" - uuid=`read_and_escape_file "$uuidfile" | head -1` - body=`read_and_escape_file "$intermediate_file" | sed 1d` - published=`stat -c%y "$uuidfile"` - published_rfc3339=`date -u "+%Y-%m-%dT%TZ" -d "$published"` - - # Write entry. - printf "\n" - printf "%s\n" "$title" - printf "urn:uuid:%s\n" "$uuid" - printf "%s\n" "$lastmod_rfc3339" - printf "%s\n" "$published_rfc3339" - printf "\n" "$basepath" "$htmlfile" - printf "\n%s\n\n" "$body" - printf "\n\n" -done - -printf "" diff --git a/helpers.sh b/helpers.sh deleted file mode 100644 index c90e077..0000000 --- a/helpers.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -escape_html() -{ -out=`python3 -c 'import sys, html; print(html.escape(sys.argv[1]))' "$1"` -printf "%s" "$out" -} - -read_and_escape_file() -{ -in=`cat "$1"` -escape_html "$in" -} - -escape_url() -{ -out=`python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1]))' "$1"` -printf "%s" "$out" -} diff --git a/index.html.do b/index.html.do deleted file mode 100644 index 8bf6751..0000000 --- a/index.html.do +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# Pull in global dependencies. -. ./helpers.sh -redo-ifchange title - -# Write index head. -cat << EOF - - - -EOF -blog_title=`read_and_escape_file title | head -1` -printf "%s\n\n\n" "$blog_title" -printf "

%s

\n\n\n" diff --git a/intermediate.tmpl b/intermediate.tmpl deleted file mode 100644 index 2357009..0000000 --- a/intermediate.tmpl +++ /dev/null @@ -1,2 +0,0 @@ -$title$ -$body$ diff --git a/processor/all.do b/processor/all.do new file mode 100644 index 0000000..edd2b47 --- /dev/null +++ b/processor/all.do @@ -0,0 +1,41 @@ +#!/bin/sh + +# Remove target files for which no sources files can be found. +for file in *.intermediate; do + if test -f "$file" && + ! test -f "${file%.intermediate}.md" && + ! test -f "${file%.intermediate}.rst"; then + rm "$file" + fi +done +for file in *.uuid; do + if test -f "$file" && + ! test -f "${file%.uuid}.md" && + ! test -f "${file%.uuid}.rst"; then + rm "$file" + fi +done +for file in *.html; do + if test -f "$file" && + ! test "$file" = "index.html" && + ! test -f "${file%.html}.intermediate"; then + rm "$file" + fi +done + +# Determine target files from the sources files present, declare dependencies +# of the all.do script on them / build them if necessary. +for file in *.rst *.md; do + if test -f "$file"; then + redo-ifchange "${file%.*}.intermediate" + fi +done +for file in *.intermediate; do + if test -f "$file"; then + redo-ifchange "${file%.*}.html" + fi +done + +# Regenerate feed and index pages. Always. +redo "feed.xml" +redo "index.html" diff --git a/processor/author.do b/processor/author.do new file mode 100644 index 0000000..ed14e3f --- /dev/null +++ b/processor/author.do @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ ! -f "$1" ]; then + printf "Joe Sixpack" +fi diff --git a/processor/default.html.do b/processor/default.html.do new file mode 100644 index 0000000..3ff4132 --- /dev/null +++ b/processor/default.html.do @@ -0,0 +1,27 @@ +#!/bin/sh + +# Pull in global dependencies. +. ./helpers.sh +intermediate_file="${1%.html}.intermediate" +redo-ifchange title +redo-ifchange "$intermediate_file" + +# Build entry data. +blog_title=`read_and_escape_file title | head -1` +title_html=`cat "$intermediate_file" | head -1` +title_plaintext=`echo "$title_html" | html2text` +title_plaintext_escaped=`escape_html "$title_plaintext"` +body=`cat "$intermediate_file" | sed 1d` + +# Write first part of entry head. +cat << EOF + + + +EOF + +# Write remaining entry head and body. +printf "%s – %s\n\n\n" "$blog_title" "$title_plaintext_escaped" +#printf "%s – %s\n\n\n" "$blog_title" "$entry_title" +printf "

%s

\n" "$title_html" +printf "
\n%s\n
\n\n" "$body" diff --git a/processor/default.intermediate.do b/processor/default.intermediate.do new file mode 100644 index 0000000..7470c3c --- /dev/null +++ b/processor/default.intermediate.do @@ -0,0 +1,15 @@ +#!/bin/sh + +template=intermediate.tmpl +uuidfile="${1%.intermediate}.uuid" +redo-ifchange "$uuidfile" +redo-ifchange "$template" +mdfile="${1%.intermediate}.md" +rstfile="${1%.intermediate}.rst" +if [ -f "$rstfile" ]; then + redo-ifchange "$rstfile" + pandoc -f rst --template="$template" --mathml -t html5 "$rstfile" > "$3" +elif [ -f "$mdfile" ]; then + redo-ifchange "$mdfile" + pandoc -f markdown --template="$template" --mathml -t html5 "$mdfile" > "$3" +fi diff --git a/processor/default.uuid.do b/processor/default.uuid.do new file mode 100644 index 0000000..5efffc8 --- /dev/null +++ b/processor/default.uuid.do @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ ! -f "$1" ]; then + uuidgen > "$1" +fi diff --git a/processor/feed.xml.do b/processor/feed.xml.do new file mode 100644 index 0000000..2cdb7b2 --- /dev/null +++ b/processor/feed.xml.do @@ -0,0 +1,70 @@ +#!/bin/sh + +# Pull in global dependencies. +. ./helpers.sh +redo-ifchange url +redo-ifchange author +redo-ifchange uuid +redo-ifchange title + +# Build some variables. XML-escape even file contents that should not contain +# dangerous characters, just to avoid any XML trouble. +base_url=`cat url | head -1` +url_protocol=`echo $base_url | cut -d ':' -f 1` +url_basepath=`echo $base_url | cut -d '/' -f 3-` +url_basepath_escaped=`escape_url "$url_basepath"` +basepath="$url_protocol""://""$url_basepath_escaped" +title=`read_and_escape_file title | head -1` +author=`read_and_escape_file author | head -1` +uuid=`read_and_escape_file uuid | head -1` + +# Write majority of feed head. +cat << EOF + + +EOF +printf "\n" "$basepath" +printf "\n" "$basepath" +printf "%s\n" "$title" +printf "%s\n" "$author" +printf "urn:uuid:%s\n" "$uuid" + +# Iterate through most recent entries (go by lastmod date of source files) to +# build feed head "updated" element, and individual entries. +first_run=0 +files=`ls -1t *.rst *.md | head -10 | tr '\n' $'\0'` +oldIFS="$IFS" +IFS=$'\0' +for file in $files; do + lastmod=`stat -c%y "$file"` + lastmod_rfc3339=`date -u "+%Y-%m-%dT%TZ" -d "$lastmod"` + if [ "$first_run" -lt "1" ]; then + IFS="$oldIFS" + printf "%s\n\n" "$lastmod_rfc3339" + first_run=1 + fi + + # Build some variables and dependencies. + intermediate_file="${file%.*}.intermediate" + htmlfile=`escape_url "${file%.*}.html"` + redo-ifchange "$intermediate_file" + redo-ifchange "$uuidfile" + title=`read_and_escape_file "$intermediate_file" | head -1` + uuidfile="${file%.*}.uuid" + uuid=`read_and_escape_file "$uuidfile" | head -1` + body=`read_and_escape_file "$intermediate_file" | sed 1d` + published=`stat -c%y "$uuidfile"` + published_rfc3339=`date -u "+%Y-%m-%dT%TZ" -d "$published"` + + # Write entry. + printf "\n" + printf "%s\n" "$title" + printf "urn:uuid:%s\n" "$uuid" + printf "%s\n" "$lastmod_rfc3339" + printf "%s\n" "$published_rfc3339" + printf "\n" "$basepath" "$htmlfile" + printf "\n%s\n\n" "$body" + printf "\n\n" +done + +printf "" diff --git a/processor/helpers.sh b/processor/helpers.sh new file mode 100644 index 0000000..c90e077 --- /dev/null +++ b/processor/helpers.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +escape_html() +{ +out=`python3 -c 'import sys, html; print(html.escape(sys.argv[1]))' "$1"` +printf "%s" "$out" +} + +read_and_escape_file() +{ +in=`cat "$1"` +escape_html "$in" +} + +escape_url() +{ +out=`python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1]))' "$1"` +printf "%s" "$out" +} diff --git a/processor/index.html.do b/processor/index.html.do new file mode 100644 index 0000000..8bf6751 --- /dev/null +++ b/processor/index.html.do @@ -0,0 +1,37 @@ +#!/bin/sh + +# Pull in global dependencies. +. ./helpers.sh +redo-ifchange title + +# Write index head. +cat << EOF + + + +EOF +blog_title=`read_and_escape_file title | head -1` +printf "%s\n\n\n" "$blog_title" +printf "

%s

\n\n\n" diff --git a/processor/intermediate.tmpl b/processor/intermediate.tmpl new file mode 100644 index 0000000..2357009 --- /dev/null +++ b/processor/intermediate.tmpl @@ -0,0 +1,2 @@ +$title$ +$body$ diff --git a/processor/title.do b/processor/title.do new file mode 100644 index 0000000..082accf --- /dev/null +++ b/processor/title.do @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ ! -f "$1" ]; then + printf "Yet another blog" +fi diff --git a/processor/url.do b/processor/url.do new file mode 100644 index 0000000..4e4079f --- /dev/null +++ b/processor/url.do @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ ! -f "$1" ]; then + printf "http://example.org/" +fi diff --git a/processor/uuid.do b/processor/uuid.do new file mode 100644 index 0000000..ba9e919 --- /dev/null +++ b/processor/uuid.do @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ ! -f "$1" ]; then + uuidgen +fi diff --git a/title.do b/title.do deleted file mode 100644 index 082accf..0000000 --- a/title.do +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -if [ ! -f "$1" ]; then - printf "Yet another blog" -fi diff --git a/url.do b/url.do deleted file mode 100644 index 4e4079f..0000000 --- a/url.do +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -if [ ! -f "$1" ]; then - printf "http://example.org/" -fi diff --git a/uuid.do b/uuid.do deleted file mode 100644 index ba9e919..0000000 --- a/uuid.do +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -if [ ! -f "$1" ]; then - uuidgen -fi