diff options
author | EuAndreh <eu@euandre.org> | 2021-06-26 21:48:18 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-06-26 21:49:20 -0300 |
commit | 59f34fe49527fc697bd86145aa974076c83eb404 (patch) | |
tree | ee4748e63d034b86e50b78724d5812cd7e001681 /aux/workflow | |
parent | aux/utils.sh: Remove unused file (diff) | |
download | remembering-59f34fe49527fc697bd86145aa974076c83eb404.tar.gz remembering-59f34fe49527fc697bd86145aa974076c83eb404.tar.xz |
aux/: Update, adapt Makefile accordingly
Diffstat (limited to '')
-rwxr-xr-x | aux/workflow/TODOs.sh | 40 | ||||
-rwxr-xr-x | aux/workflow/assert-changelog.sh | 32 | ||||
-rwxr-xr-x | aux/workflow/assert-manpages.sh | 25 | ||||
-rwxr-xr-x | aux/workflow/assert-readme.sh | 28 | ||||
-rwxr-xr-x[-rw-r--r--] | aux/workflow/assert-spelling.sh | 73 | ||||
-rwxr-xr-x | aux/workflow/commonmark.sh | 60 | ||||
-rwxr-xr-x | aux/workflow/dist.sh | 51 | ||||
-rwxr-xr-x | aux/workflow/manpages.sh | 12 | ||||
-rwxr-xr-x | aux/workflow/public.sh | 48 | ||||
-rwxr-xr-x | aux/workflow/sign-tarballs.sh | 22 |
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 |