aboutsummaryrefslogtreecommitdiff
path: root/share/aux-repo/aux/workflow
diff options
context:
space:
mode:
Diffstat (limited to 'share/aux-repo/aux/workflow')
-rwxr-xr-xshare/aux-repo/aux/workflow/TODOs.sh65
-rw-r--r--share/aux-repo/aux/workflow/favicon.svg62
-rw-r--r--share/aux-repo/aux/workflow/head.html2
-rwxr-xr-xshare/aux-repo/aux/workflow/md2html.sh87
-rw-r--r--share/aux-repo/aux/workflow/preamble.md.in16
-rw-r--r--share/aux-repo/aux/workflow/style.css80
6 files changed, 312 insertions, 0 deletions
diff --git a/share/aux-repo/aux/workflow/TODOs.sh b/share/aux-repo/aux/workflow/TODOs.sh
new file mode 100755
index 0000000..8b06d15
--- /dev/null
+++ b/share/aux-repo/aux/workflow/TODOs.sh
@@ -0,0 +1,65 @@
+#!/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
+
+
+td -H |
+ cat aux/workflow/preamble.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" |
+ 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'
+
+# FIXME: check TODOs.sh from euandre.org
diff --git a/share/aux-repo/aux/workflow/favicon.svg b/share/aux-repo/aux/workflow/favicon.svg
new file mode 100644
index 0000000..ce566b2
--- /dev/null
+++ b/share/aux-repo/aux/workflow/favicon.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
+ <path d="M 0 8 L 1 8 L 1 9 L 0 9 L 0 8 Z" />
+ <path d="M 0 13 L 1 13 L 1 14 L 0 14 L 0 13 Z" />
+ <path d="M 1 8 L 2 8 L 2 9 L 1 9 L 1 8 Z" />
+ <path d="M 1 13 L 2 13 L 2 14 L 1 14 L 1 13 Z" />
+ <path d="M 2 8 L 3 8 L 3 9 L 2 9 L 2 8 Z" />
+ <path d="M 2 13 L 3 13 L 3 14 L 2 14 L 2 13 Z" />
+ <path d="M 3 8 L 4 8 L 4 9 L 3 9 L 3 8 Z" />
+ <path d="M 3 13 L 4 13 L 4 14 L 3 14 L 3 13 Z" />
+ <path d="M 4 7 L 5 7 L 5 8 L 4 8 L 4 7 Z" />
+ <path d="M 4 8 L 5 8 L 5 9 L 4 9 L 4 8 Z" />
+ <path d="M 4 13 L 5 13 L 5 14 L 4 14 L 4 13 Z" />
+ <path d="M 5 6 L 6 6 L 6 7 L 5 7 L 5 6 Z" />
+ <path d="M 5 7 L 6 7 L 6 8 L 5 8 L 5 7 Z" />
+ <path d="M 5 13 L 6 13 L 6 14 L 5 14 L 5 13 Z" />
+ <path d="M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 Z" />
+ <path d="M 6 6 L 7 6 L 7 7 L 6 7 L 6 6 Z" />
+ <path d="M 6 14 L 7 14 L 7 15 L 6 15 L 6 14 Z" />
+ <path d="M 7 1 L 8 1 L 8 2 L 7 2 L 7 1 Z" />
+ <path d="M 7 14 L 8 14 L 8 15 L 7 15 L 7 14 Z" />
+ <path d="M 7 15 L 8 15 L 8 16 L 7 16 L 7 15 Z" />
+ <path d="M 7 2 L 8 2 L 8 3 L 7 3 L 7 2 Z" />
+ <path d="M 7 3 L 8 3 L 8 4 L 7 4 L 7 3 Z" />
+ <path d="M 7 4 L 8 4 L 8 5 L 7 5 L 7 4 Z" />
+ <path d="M 7 5 L 8 5 L 8 6 L 7 6 L 7 5 Z" />
+ <path d="M 8 1 L 9 1 L 9 2 L 8 2 L 8 1 Z" />
+ <path d="M 8 15 L 9 15 L 9 16 L 8 16 L 8 15 Z" />
+ <path d="M 9 1 L 10 1 L 10 2 L 9 2 L 9 1 Z" />
+ <path d="M 9 2 L 10 2 L 10 3 L 9 3 L 9 2 Z" />
+ <path d="M 9 6 L 10 6 L 10 7 L 9 7 L 9 6 Z" />
+ <path d="M 9 15 L 10 15 L 10 16 L 9 16 L 9 15 Z" />
+ <path d="M 10 2 L 11 2 L 11 3 L 10 3 L 10 2 Z" />
+ <path d="M 10 3 L 11 3 L 11 4 L 10 4 L 10 3 Z" />
+ <path d="M 10 4 L 11 4 L 11 5 L 10 5 L 10 4 Z" />
+ <path d="M 10 5 L 11 5 L 11 6 L 10 6 L 10 5 Z" />
+ <path d="M 10 6 L 11 6 L 11 7 L 10 7 L 10 6 Z" />
+ <path d="M 11 6 L 12 6 L 12 7 L 11 7 L 11 6 Z" />
+ <path d="M 11 8 L 12 8 L 12 9 L 11 9 L 11 8 Z" />
+ <path d="M 10 15 L 11 15 L 11 16 L 10 16 L 10 15 Z" />
+ <path d="M 11 10 L 12 10 L 12 11 L 11 11 L 11 10 Z" />
+ <path d="M 11 12 L 12 12 L 12 13 L 11 13 L 11 12 Z" />
+ <path d="M 11 14 L 12 14 L 12 15 L 11 15 L 11 14 Z" />
+ <path d="M 11 15 L 12 15 L 12 16 L 11 16 L 11 15 Z" />
+ <path d="M 12 6 L 13 6 L 13 7 L 12 7 L 12 6 Z" />
+ <path d="M 12 8 L 13 8 L 13 9 L 12 9 L 12 8 Z" />
+ <path d="M 12 10 L 13 10 L 13 11 L 12 11 L 12 10 Z" />
+ <path d="M 12 12 L 13 12 L 13 13 L 12 13 L 12 12 Z" />
+ <path d="M 12 14 L 13 14 L 13 15 L 12 15 L 12 14 Z" />
+ <path d="M 13 6 L 14 6 L 14 7 L 13 7 L 13 6 Z" />
+ <path d="M 13 8 L 14 8 L 14 9 L 13 9 L 13 8 Z" />
+ <path d="M 13 10 L 14 10 L 14 11 L 13 11 L 13 10 Z" />
+ <path d="M 13 12 L 14 12 L 14 13 L 13 13 L 13 12 Z" />
+ <path d="M 13 13 L 14 13 L 14 14 L 13 14 L 13 13 Z" />
+ <path d="M 13 14 L 14 14 L 14 15 L 13 15 L 13 14 Z" />
+ <path d="M 14 7 L 15 7 L 15 8 L 14 8 L 14 7 Z" />
+ <path d="M 14 8 L 15 8 L 15 9 L 14 9 L 14 8 Z" />
+ <path d="M 14 9 L 15 9 L 15 10 L 14 10 L 14 9 Z" />
+ <path d="M 14 10 L 15 10 L 15 11 L 14 11 L 14 10 Z" />
+ <path d="M 14 11 L 15 11 L 15 12 L 14 12 L 14 11 Z" />
+ <path d="M 14 12 L 15 12 L 15 13 L 14 13 L 14 12 Z" />
+</svg>
diff --git a/share/aux-repo/aux/workflow/head.html b/share/aux-repo/aux/workflow/head.html
new file mode 100644
index 0000000..3902690
--- /dev/null
+++ b/share/aux-repo/aux/workflow/head.html
@@ -0,0 +1,2 @@
+<link rel="icon" href="favicon.svg" type="image/svg+xml" />
+<link rel="stylesheet" href="style.css" type="text/css" />
diff --git a/share/aux-repo/aux/workflow/md2html.sh b/share/aux-repo/aux/workflow/md2html.sh
new file mode 100755
index 0000000..957bfc2
--- /dev/null
+++ b/share/aux-repo/aux/workflow/md2html.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+set -eu
+
+. aux/lib.sh
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ aux/workflow/md2html.sh -N NAME_UC -T TITLE [-D TOC_DEPTH] < FILE.md
+ aux/workflow/md2html.sh -h
+ EOF
+}
+
+help() {
+ cat <<-'EOF'
+
+ Options:
+ -N NAME_UC the uppercased name of the project
+ -T TITLE the required title of the generated HTML
+ document
+ -D TOC_DEPTH the depth of the generated table of
+ contents (default: 2)
+ -h, --help show this message
+
+
+ Read markdown text from STDIN and emit HTML to STDOUT.
+ EOF
+}
+
+for flag in "$@"; do
+ case "$flag" in
+ --)
+ break
+ ;;
+ --help)
+ usage
+ help
+ exit
+ ;;
+ *)
+ ;;
+ esac
+done
+
+TOC_DEPTH=2
+while getopts 'N:T:D:h' flag; do
+ case "$flag" in
+ N)
+ NAME_UC="$OPTARG"
+ ;;
+ T)
+ TITLE="$OPTARG"
+ ;;
+ D)
+ TOC_DEPTH="$OPTARG"
+ ;;
+ h)
+ usage
+ help
+ exit
+ ;;
+ *)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+eval "$(assert_arg "${NAME_UC:-}" '-T TITLE')"
+eval "$(assert_arg "${TITLE:-}" '-T TITLE')"
+
+THE_LANG='en'
+
+ALTERNATES=/dev/null
+
+pandoc \
+ -s \
+ --toc \
+ --toc-depth="$TOC_DEPTH" \
+ --highlight-style=pygments \
+ --metadata lang="$THE_LANG" \
+ --metadata title="$TITLE - $NAME_UC" \
+ -r commonmark \
+ -w html \
+ -H aux/workflow/head.html \
+ -H "$ALTERNATES"
diff --git a/share/aux-repo/aux/workflow/preamble.md.in b/share/aux-repo/aux/workflow/preamble.md.in
new file mode 100644
index 0000000..1d17997
--- /dev/null
+++ b/share/aux-repo/aux/workflow/preamble.md.in
@@ -0,0 +1,16 @@
+# About
+
+TODOs for [@PROJECT_UC@](https://@TLD@/@PROJECT@/en/).
+
+Register a new one at
+<span id="new">[@MAILING_LIST@](mailto:@MAILING_LIST@?subject=%5B@PROJECT@%5D%20BUG%20or%20TASK%3A%20%3Cdescription%3E)</span>
+and see [existing discussions](@LIST_SEARCH@).
+
+*Você também pode escrever em português*.
+
+*Vous pouvez aussi écrire en français*.
+
+*Vi povas ankaŭ skribi esperante*.
+
+*Tu también puedes escribir en español*.
+
diff --git a/share/aux-repo/aux/workflow/style.css b/share/aux-repo/aux/workflow/style.css
new file mode 100644
index 0000000..4f3c83e
--- /dev/null
+++ b/share/aux-repo/aux/workflow/style.css
@@ -0,0 +1,80 @@
+html {
+ line-height: 1.5;
+}
+
+body {
+ max-width: 800px;
+ margin: 0 auto 0 auto;
+}
+
+hr {
+ background-color: #ccc;
+}
+
+.header-anchor {
+ opacity: 0.5;
+ display: inline-block;
+}
+
+.tag {
+ font-family: monospace;
+ font-size: 70%;
+ background-color: lightgray;
+ color: black;
+ padding: 3px;
+ border-radius: 5px;
+}
+
+.TODO {
+ color: brown;
+}
+
+.DOING {
+ color: yellowgreen;
+}
+
+.WAITING, .MEETING {
+ color: orange;
+}
+
+.INACTIVE {
+ color: gray;
+}
+
+.NEXT {
+ color: red;
+}
+
+.CANCELLED, .DONE, .WONTFIX {
+ color: green;
+}
+
+pre, code {
+ background-color: #ddd;
+ border-radius: 5px;
+ padding: 3px;
+}
+
+pre > code {
+ overflow: auto;
+ white-space: pre;
+}
+
+@media(prefers-color-scheme: dark) {
+ :root {
+ color: white;
+ background-color: black;
+ }
+
+ a {
+ color: hsl(211, 100%, 60%);
+ }
+
+ a:visited {
+ color: hsl(242, 100%, 80%);
+ }
+
+ pre, code {
+ background-color: #222;
+ }
+}