aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/TODOs.sh
blob: efc0b04981a978635ff9a5e81dce7b16c48c05a8 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh
set -eu

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


# 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'

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             \
		--toc-depth=2                          \
		-s                                     \
		--metadata title="$PROJECT_UC - TODOs" \
		--metadata lang=en                     \
		-r commonmark                          \
		-w html                                \
		-H aux/workflow/favicon.html           \
		-H aux/workflow/style.css              |
	sed \
		-e 's:<a><a:<a:g'      \
		-e 's:</a></a>:</a>:g' \
	> "$OUTDIR/TODOs.html"