aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-06-26 21:48:18 -0300
committerEuAndreh <eu@euandre.org>2021-06-26 21:49:20 -0300
commit59f34fe49527fc697bd86145aa974076c83eb404 (patch)
treeee4748e63d034b86e50b78724d5812cd7e001681 /aux/workflow
parentaux/utils.sh: Remove unused file (diff)
downloadremembering-59f34fe49527fc697bd86145aa974076c83eb404.tar.gz
remembering-59f34fe49527fc697bd86145aa974076c83eb404.tar.xz
aux/: Update, adapt Makefile accordingly
Diffstat (limited to 'aux/workflow')
-rwxr-xr-xaux/workflow/TODOs.sh40
-rwxr-xr-xaux/workflow/assert-changelog.sh32
-rwxr-xr-xaux/workflow/assert-manpages.sh25
-rwxr-xr-xaux/workflow/assert-readme.sh28
-rwxr-xr-x[-rw-r--r--]aux/workflow/assert-spelling.sh73
-rwxr-xr-xaux/workflow/commonmark.sh60
-rwxr-xr-xaux/workflow/dist.sh51
-rwxr-xr-xaux/workflow/manpages.sh12
-rwxr-xr-xaux/workflow/public.sh48
-rwxr-xr-xaux/workflow/sign-tarballs.sh22
10 files changed, 336 insertions, 55 deletions
diff --git a/aux/workflow/TODOs.sh b/aux/workflow/TODOs.sh
index f93ece8..6c24c3e 100755
--- a/aux/workflow/TODOs.sh
+++ b/aux/workflow/TODOs.sh
@@ -1,11 +1,43 @@
#!/bin/sh
set -eu
-PROJECT_UC="$1"
-PROJECT="$2"
-MAILING_LIST="$3"
-OUTDIR="$4"
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_ADD_REGEX='s/^## (TODO|DOING|WAITING|MEETING|INACTIVE|NEXT|CANCELLED|DONE) (.*) \{#(.*?)\}$/## <a href="#\3"><span class="\1">\1<\/span> \2<\/a>\n<pre class="header-anchor" id="\3">#\3<\/pre>\n/'
TODOS_CLEANUP_REGEX1='s/(<a><a)/<a/'
diff --git a/aux/workflow/assert-changelog.sh b/aux/workflow/assert-changelog.sh
index e2cd926..11088a8 100755
--- a/aux/workflow/assert-changelog.sh
+++ b/aux/workflow/assert-changelog.sh
@@ -2,10 +2,34 @@
set -eu
TLD="$(cat aux/tld.txt)"
-PROJECT_UC="$1"
-PROJECT="$2"
-shift
-shift
+PROJECT_UC=
+while getopts 'n:N:' flag; do
+ case "$flag" in
+ n)
+ PROJECT="$OPTARG"
+ ;;
+ N)
+ PROJECT_UC="$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'
+
+if [ -z "${PROJECT_UC:-}" ]; then
+ PROJECT_UC="$PROJECT"
+fi
HOMEPAGE_LINK="Changelog for [$PROJECT_UC](https://$TLD/$PROJECT/)."
diff --git a/aux/workflow/assert-manpages.sh b/aux/workflow/assert-manpages.sh
index a2bd3f9..d609685 100755
--- a/aux/workflow/assert-manpages.sh
+++ b/aux/workflow/assert-manpages.sh
@@ -1,22 +1,35 @@
#!/bin/sh
set -eu
-PROJECT="$1"
-MAILING_LIST="$2"
-shift
-shift
TLD="$(cat aux/tld.txt)"
-
IN_PLACE=false
-while getopts 'i' flag; do
+while getopts 'n:m:i' flag; do
case "$flag" in
+ n)
+ PROJECT="$OPTARG"
+ ;;
+ m)
+ MAILING_LIST="$OPTARG"
+ ;;
i)
IN_PLACE=true
;;
*)
+ 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'
EXPECTED_EN="$(mktemp)"
diff --git a/aux/workflow/assert-readme.sh b/aux/workflow/assert-readme.sh
index 2a6c3fd..f8a05a4 100755
--- a/aux/workflow/assert-readme.sh
+++ b/aux/workflow/assert-readme.sh
@@ -1,11 +1,31 @@
#!/bin/sh
set -eu
-PROJECT="$1"
-MAILING_LIST="$2"
-shift
-shift
TLD="$(cat aux/tld.txt)"
+while getopts 'n:m:' flag; do
+ case "$flag" in
+ n)
+ PROJECT="$OPTARG"
+ ;;
+ m)
+ MAILING_LIST="$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'
EXPECTED="$(mktemp)"
cat <<EOF >> "$EXPECTED"
diff --git a/aux/workflow/assert-spelling.sh b/aux/workflow/assert-spelling.sh
index e69de29..3781454 100644..100755
--- a/aux/workflow/assert-spelling.sh
+++ b/aux/workflow/assert-spelling.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+set -eu
+
+sort_dicts() {
+ for f in doc/spelling/*.txt; do
+ if ! LANG=POSIX sort "$f" | diff - "$f"; then
+ if [ "$IN_PLACE" = true ]; then
+ OUT="$(mktemp)"
+ LANG=POSIX sort "$f" | uniq > "$OUT"
+ mv "$OUT" "$f"
+ else
+ echo "The $f dictionary is unsorted. To fix it, run:" >&2
+ echo " sh aux/workflow/assert-spelling.sh -i" >&2
+ exit 1
+ fi
+ fi
+ done
+}
+
+IN_PLACE=false
+while getopts 'l:i' flag; do
+ case "$flag" in
+ l)
+ LANGS="$OPTARG"
+ ;;
+ i)
+ IN_PLACE=true
+ sort_dicts
+ exit
+ ;;
+ *)
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND -1))
+
+assert_arg() {
+ if [ -z "$1" ]; then
+ echo "Missing $2" >&2
+ exit 2
+ fi
+}
+
+assert_arg "${LANGS:-}" '-l LANGS'
+
+mkdir -p doc/spelling
+eval "touch doc/spelling/{international,$(echo "$LANGS" | tr ' ' ,)}.txt"
+
+get_lang() {
+ grep lang=.. "$1" | \
+ head -n1 | \
+ awk '
+ match($0, /lang="(..)"/) {
+ print substr($0, RSTART+length("lang=\""), 2)
+ }
+ '
+}
+
+ACC="$(mktemp)"
+for f in "$@"; do
+ l="$(get_lang "$f")"
+ CURR_DICT="$(mktemp)"
+ cat doc/spelling/international.txt "doc/spelling/$l.txt" | sort | uniq > "$CURR_DICT"
+ hunspell -u3 -H -d "$l" -p "$CURR_DICT" "$f" | tee -a "$ACC" >&2
+done
+
+if [ -s "$ACC" ]; then
+ printf '\n\tMispelled words detected by hunspell above.\n\n' >&2
+ exit 1
+fi
+
+sort_dicts
diff --git a/aux/workflow/commonmark.sh b/aux/workflow/commonmark.sh
index 7267145..2333f5d 100755
--- a/aux/workflow/commonmark.sh
+++ b/aux/workflow/commonmark.sh
@@ -1,19 +1,51 @@
#!/bin/sh
set -eu
-PROJECT_UC="$1"
-F="$2"
-OUTDIR="$3"
-OUT="${4:-${F%.*}.html}"
+while getopts 'N:o:r:w:' flag; do
+ case "$flag" in
+ N)
+ PROJECT_UC="$OPTARG"
+ ;;
+ o)
+ OUTDIR="$OPTARG"
+ ;;
+ r)
+ IN_FILE="$OPTARG"
+ ;;
+ w)
+ OUT_FILE="$OPTARG"
+ ;;
+ *)
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+assert_arg() {
+ if [ -z "$1" ]; then
+ echo "Missing $2" >&2
+ exit 2
+ fi
+}
+
+assert_arg "${PROJECT_UC:-}" '-N PROJECT_UC'
+assert_arg "${OUTDIR:-}" '-o OUTDIR'
+assert_arg "${IN_FILE:-}" '-i IN_FILE'
+
+if [ -z "${OUT_FILE:-}" ]; then
+ OUT_FILE="${IN_FILE%.md}.html"
+fi
+
pandoc \
- --toc \
- --highlight-style pygments \
- --toc-depth=2 \
- -s \
- --metadata title="$PROJECT_UC - ${F%.*}" \
- --metadata lang=en \
- -r commonmark \
- -w html \
- -H aux/workflow/favicon.html \
- < "$F" > "$OUTDIR/$OUT"
+ --toc \
+ --highlight-style pygments \
+ --toc-depth=2 \
+ -s \
+ --metadata title="$PROJECT_UC - ${IN_FILE%.md}" \
+ --metadata lang=en \
+ -r commonmark \
+ -w html \
+ -H aux/workflow/favicon.html \
+ < "$IN_FILE" > "$OUTDIR/$OUT_FILE"
diff --git a/aux/workflow/dist.sh b/aux/workflow/dist.sh
index ed61ee5..69c0173 100755
--- a/aux/workflow/dist.sh
+++ b/aux/workflow/dist.sh
@@ -1,19 +1,54 @@
#!/bin/sh
set -eu
-DATE="$1"
-VVERSION="v$2"
-PROJECT_UC="$3"
-PROJECT="$4"
-MAILING_LIST="$5"
+PROJECT_UC=
+while getopts 'd:V:n:N:m:' flag; do
+ case "$flag" in
+ d)
+ DATE="$OPTARG"
+ ;;
+ V)
+ VVERSION="v$OPTARG"
+ ;;
+ n)
+ PROJECT="$OPTARG"
+ ;;
+ N)
+ PROJECT_UC="$OPTARG"
+ ;;
+ m)
+ MAILING_LIST="$OPTARG"
+ ;;
+ *)
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+assert_arg() {
+ if [ -z "$1" ]; then
+ echo "Missing $2" >&2
+ exit 2
+ fi
+}
+
+assert_arg "${DATE:-}" '-d DATE'
+assert_arg "${VVERSION:-}" '-V VERSION'
+assert_arg "${PROJECT:-}" '-n PROJECT'
+assert_arg "${MAILING_LIST:-}" '-m MAILING_LIST'
+
+if [ -z "${PROJECT_UC:-}" ]; then
+ PROJECT_UC="$PROJECT"
+fi
if git show "$VVERSION" 1>/dev/null 2>/dev/null; then
echo "Version '$VVERSION' already exists." >&2
exit 1
fi
-sh aux/workflow/assert-changelog.sh "$PROJECT_UC" "$PROJECT" "$VVERSION"
-sh aux/workflow/assert-readme.sh "$PROJECT" "$MAILING_LIST" "$VVERSION"
+sh aux/workflow/assert-changelog.sh -N "$PROJECT_UC" -n "$PROJECT" "$VVERSION"
+sh aux/workflow/assert-readme.sh -n "$PROJECT" -m "$MAILING_LIST" "$VVERSION"
if [ "$DATE" != "$(git log -1 --format=%cd --date=short HEAD)" ]; then
echo "Date '$DATE' is not up-to-date." >&2
@@ -32,7 +67,7 @@ fi
git tag "$VVERSION"
-sh aux/workflow/sign-tarballs.sh "$PROJECT"
+sh aux/workflow/sign-tarballs.sh -n "$PROJECT"
cat <<EOF >&2
diff --git a/aux/workflow/manpages.sh b/aux/workflow/manpages.sh
index fe215f7..d0d19ae 100755
--- a/aux/workflow/manpages.sh
+++ b/aux/workflow/manpages.sh
@@ -25,34 +25,34 @@ while getopts 'iuHo:p:' flag; do
done
shift $((OPTIND - 1))
-assert() {
+assert_arg() {
if [ -z "$1" ]; then
- echo "Missing $2 argument" >&2
+ echo "Missing $2" >&2
exit 2
fi
}
-assert "${ACTION:-}" ACTION
+assert_arg "${ACTION:-}" '-[iuH] for choosing action'
for f in "$@"; do
l="$(echo "$f" | awk -F. '{print $(NF-1)}')"
n="$(echo "$f" | awk -F. '{print $NF}')"
case "$ACTION" in
html)
- assert "${OUTDIR:-}" OUTDIR
+ assert_arg "${OUTDIR:-}" '-o OUTDIR'
to_name="$(basename "${f%.$l.$n}.$n.html")"
mkdir -p "$OUTDIR/$l"
pandoc -s -r man -w html --metadata "lang=$l" < "$f" > "$OUTDIR/$l/$to_name"
;;
install)
- assert "${MANPREFIX:-}" MANPREFIX
+ assert_arg "${MANPREFIX:-}" '-p MANPREFIX'
to_name="$(basename "${f%.$l.$n}.$n")"
mkdir -p "$MANPREFIX/$l/man$n" "$MANPREFIX/man$n"
cp "$f" "$MANPREFIX/$l/man$n/$to_name"
ln -fs "../en/man$n/$to_name" "$MANPREFIX/man$n/$to_name"
;;
uninstall)
- assert "${MANPREFIX:-}" MANPREFIX
+ assert_arg "${MANPREFIX:-}" '-p MANPREFIX'
to_name="$(basename "${f%.$l.$n}.$n")"
rm -f \
"$MANPREFIX/$l/man$n/$to_name" \
diff --git a/aux/workflow/public.sh b/aux/workflow/public.sh
index 7433595..ef89d07 100755
--- a/aux/workflow/public.sh
+++ b/aux/workflow/public.sh
@@ -1,20 +1,52 @@
#!/bin/sh
set -eu
-PROJECT_UC="$1"
-PROJECT="$2"
-MAILING_LIST="$3"
-OUTDIR="$4"
+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
mkdir -p "$OUTDIR"
-sh aux/workflow/TODOs.sh "$PROJECT_UC" "$PROJECT" "$MAILING_LIST" "$OUTDIR"
-sh aux/workflow/commonmark.sh "$PROJECT" README.md "$OUTDIR" index.html ||:
+sh aux/workflow/TODOs.sh -N "$PROJECT_UC" -n "$PROJECT" -m "$MAILING_LIST" -o "$OUTDIR"
+sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r README.md -w index.html
if [ -f CHANGELOG.md ]; then
- sh aux/workflow/commonmark.sh "$PROJECT" CHANGELOG.md "$OUTDIR"
+ sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r CHANGELOG.md
fi
-sh aux/ci/report.sh "$PROJECT" "$OUTDIR"
+sh aux/ci/report.sh -n "$PROJECT" -o "$OUTDIR"
cp aux/workflow/favicon.svg aux/workflow/favicon.png "$OUTDIR"
diff --git a/aux/workflow/sign-tarballs.sh b/aux/workflow/sign-tarballs.sh
index 8de6ac4..168d38d 100755
--- a/aux/workflow/sign-tarballs.sh
+++ b/aux/workflow/sign-tarballs.sh
@@ -1,7 +1,27 @@
#!/bin/sh
set -eu
-PROJECT="$1"
+while getopts 'n:' flag; do
+ case "$flag" in
+ n)
+ PROJECT="$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'
+
SIGNATURES="$(git notes --ref=refs/notes/signatures/tar.gz list | cut -d\ -f2)"
for tag in $(git tag); do