aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/public.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xaux/workflow/public.sh83
1 files changed, 83 insertions, 0 deletions
diff --git a/aux/workflow/public.sh b/aux/workflow/public.sh
new file mode 100755
index 0000000..2c8c36a
--- /dev/null
+++ b/aux/workflow/public.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -eu
+
+TLD="$(cat aux/tld.txt)"
+. aux/lib.sh
+
+PROJECT_UC=
+while getopts 'n:N:m:o:l:' flag; do
+ case "$flag" in
+ n)
+ PROJECT="$OPTARG"
+ ;;
+ N)
+ PROJECT_UC="$OPTARG"
+ ;;
+ m)
+ MAILING_LIST="$OPTARG"
+ ;;
+ o)
+ OUTDIR="$OPTARG"
+ ;;
+ l)
+ LANGS="$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'
+assert_arg "${LANGS:-}" '-l LANGS'
+PROJECT_UC="${PROJECT_UC:-$PROJECT}"
+
+
+alternates_for() {
+ ALTERNATES="$(mkstemp)"
+ lang="$1"
+ OUTNAME="$2"
+ for l in $LANGS; do
+ if [ "$l" = "$lang" ]; then
+ continue
+ fi
+ cat <<EOF >> "$ALTERNATES"
+<link rel="alternate" href="https://$TLD/$PROJECT/$l/$OUTNAME" hreflang="$l" />
+EOF
+ done
+ echo "$ALTERNATES"
+}
+
+
+mkdir -p "$OUTDIR"
+
+sh aux/workflow/TODOs.sh \
+ -N "$PROJECT_UC" -n "$PROJECT" -m "$MAILING_LIST" -o "$OUTDIR"
+
+for lang in $LANGS; do
+ mkdir -p "$OUTDIR/$lang/"
+ sh aux/workflow/commonmark.sh \
+ -N "$PROJECT" -l "$lang" -t README \
+ -H "$(alternates_for "$lang" '')" \
+ < "README.$lang.md" > "$OUTDIR/$lang/index.html"
+ sh aux/workflow/commonmark.sh \
+ -N "$PROJECT" -l "$lang" -t CHANGELOG \
+ -H "$(alternates_for "$lang" 'CHANGELOG.html')" \
+ < "CHANGELOG.$lang.md" > "$OUTDIR/$lang/CHANGELOG.html"
+ ln -fs ../favicon.svg "$OUTDIR/$lang"
+done
+
+ln -fs en/index.html "$OUTDIR/index.html"
+cp aux/workflow/favicon.svg "$OUTDIR"
+
+sh aux/ci/report.sh -n "$PROJECT" -o "$OUTDIR"