aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/TODOs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'aux/workflow/TODOs.sh')
-rwxr-xr-xaux/workflow/TODOs.sh72
1 files changed, 54 insertions, 18 deletions
diff --git a/aux/workflow/TODOs.sh b/aux/workflow/TODOs.sh
index 80059ee..d875e0e 100755
--- a/aux/workflow/TODOs.sh
+++ b/aux/workflow/TODOs.sh
@@ -1,26 +1,59 @@
#!/bin/sh
set -eu
-mkdir -p public
-
-PROJECT_UC="$1"
-PROJECT="$2"
-MAILING_LIST="$3"
TLD="$(cat aux/tld.txt)"
+PROJECT_UC=
+while getopts 'n:N:m:o:' flag; do
+ case "$flag" in
+ n)
+ PROJECT="$OPTARG"
+ ;;
+ N)
+ PROJECT_UC="$OPTARG"
+ ;;
+ m)
+ MAILING_LIST="$OPTARG"
+ ;;
+ o)
+ OUTDIR="$OPTARG"
+ ;;
+ *)
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+assert_arg() {
+ if [ -z "$1" ]; then
+ echo "Missing $2" >&2
+ exit 2
+ fi
+}
+
+assert_arg "${PROJECT:-}" '-n PROJECT'
+assert_arg "${MAILING_LIST:-}" '-m MAILING_LIST'
+assert_arg "${OUTDIR:-}" '-o OUTDIR'
+
+if [ -z "${PROJECT_UC:-}" ]; then
+ PROJECT_UC="$PROJECT"
+fi
-TODOS_REGEX='s/^## (TODO|DOING|WAITING|MEETING|INACTIVE|NEXT|CANCELLED|DONE) (.*) \{#(.*?)\}$/## <a href="#\3"><span class="\1">\1<\/span> \2<\/a>\n<span class="header-anchor" id="\3">#\3<\/span>\n/'
-TAGS_REGEX='s/tag:([\w-]+)/<span class="tag">\1<\/span>/g'
+# shellcheck disable=1004
+IDS_REGEX='s:^## \(TODO\|DOING\|WAITING\|MEETING\|INACTIVE\|NEXT\|CANCELLED\|DONE\|WONTFIX\) \(.*\) {#\(.*\)}\(.*\)$:## <a href="#\3"><span class="\1">\1</span> \2</a>\4\
+<pre class="header-anchor" id="\3">#\3</pre>\
+:g'
+TAGS_REGEX='s|tag:\([a-z0-9-]*\)|<span class="tag">\1</span>|g'
-sed -e "s:@PROJECT_UC@:$PROJECT_UC:g" \
- -e "s:@PROJECT@:$PROJECT:g" \
- -e "s:@MAILING_LIST@:$MAILING_LIST:g" \
- -e "s:@TLD@:$TLD:g" \
- < aux/workflow/preamble.md | \
- printf \
- '%s\n\n%s' \
- "$(cat -)" \
- "$(perl -pe "$TODOS_REGEX" TODOs.md | perl -pe "$TAGS_REGEX")" | \
+cat aux/workflow/preamble.md TODOs.md | \
+ sed \
+ -e "s:@PROJECT_UC@:$PROJECT_UC:g" \
+ -e "s:@PROJECT@:$PROJECT:g" \
+ -e "s:@MAILING_LIST@:$MAILING_LIST:g" \
+ -e "s:@TLD@:$TLD:g" \
+ -e "$IDS_REGEX" \
+ -e "$TAGS_REGEX" | \
pandoc \
--toc \
--highlight-style pygments \
@@ -31,5 +64,8 @@ sed -e "s:@PROJECT_UC@:$PROJECT_UC:g" \
-r commonmark \
-w html \
-H aux/workflow/favicon.html \
- -H aux/workflow/style.css \
- > public/TODOs.html
+ -H aux/workflow/style.css | \
+ sed \
+ -e 's:<a><a:<a:g' \
+ -e 's:</a></a>:</a>:g' \
+ > "$OUTDIR/TODOs.html"