aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-06-11 22:39:20 -0300
committerEuAndreh <eu@euandre.org>2021-06-11 22:39:20 -0300
commit3f9bd994223f78b7ec4ab80820d593066f27aa56 (patch)
treed656f616bf96354bc786ad6f8b9f74cb92d8561e
parentaux/workflow/public.sh: Mark as executable (diff)
downloadpackage-repository-3f9bd994223f78b7ec4ab80820d593066f27aa56.tar.gz
package-repository-3f9bd994223f78b7ec4ab80820d593066f27aa56.tar.xz
Update files under aux/
-rwxr-xr-xaux/assert-nixfmt.sh11
-rwxr-xr-xaux/assert-shellcheck.sh4
-rwxr-xr-xaux/ci/ci-build.sh74
-rwxr-xr-xaux/ci/git-post-receive.sh10
-rwxr-xr-xaux/ci/git-pre-push.sh14
-rwxr-xr-xaux/ci/report.sh69
-rw-r--r--aux/guix/pinned-channels.scm9
-rwxr-xr-xaux/guix/with-container.sh12
-rw-r--r--aux/tld.txt1
-rwxr-xr-xaux/workflow/README.sh43
-rwxr-xr-xaux/workflow/TODOs.sh39
-rwxr-xr-xaux/workflow/assert-changelog.sh14
-rwxr-xr-xaux/workflow/assert-readme.sh59
-rwxr-xr-xaux/workflow/assert-todos.sh74
-rwxr-xr-xaux/workflow/commonmark.sh21
-rwxr-xr-xaux/workflow/dist.sh15
-rw-r--r--aux/workflow/favicon.html1
-rw-r--r--aux/workflow/favicon.pngbin0 -> 2372 bytes
-rw-r--r--aux/workflow/favicon.svg62
-rw-r--r--aux/workflow/preamble.md2
-rwxr-xr-xaux/workflow/public.sh6
-rwxr-xr-xaux/workflow/sign-tarballs.sh18
22 files changed, 325 insertions, 233 deletions
diff --git a/aux/assert-nixfmt.sh b/aux/assert-nixfmt.sh
deleted file mode 100755
index 19bd0a2..0000000
--- a/aux/assert-nixfmt.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-set -eux
-
-# shellcheck disable=2016
-find . -type f -name '*.nix' -print0 | xargs -0 -I{} sh -c '
- nixfmt < "$1" | diff - "$1" || {
- echo "The file \"$1\" is unformatted. To fix it, run:"
- echo " nixfmt $1"
- exit 1
- }
-' _ {} \;
diff --git a/aux/assert-shellcheck.sh b/aux/assert-shellcheck.sh
index fcbb1c7..cc01f3a 100755
--- a/aux/assert-shellcheck.sh
+++ b/aux/assert-shellcheck.sh
@@ -2,5 +2,5 @@
set -eux
git ls-files | \
- xargs awk 'FNR==1 && /^#!\/bin\/sh$/ { print FILENAME }' | \
- xargs shellcheck
+ xargs awk 'FNR==1 && /^#!\/bin\/sh$/ { print FILENAME }' | \
+ xargs shellcheck
diff --git a/aux/ci/ci-build.sh b/aux/ci/ci-build.sh
index 21788f4..b6769a9 100755
--- a/aux/ci/ci-build.sh
+++ b/aux/ci/ci-build.sh
@@ -8,43 +8,45 @@ FILENAME="$(date -Is)-$SHA.log"
LOGFILE="$LOGS_DIR/$FILENAME"
{
- echo "Starting CI job at: $(date -Is)"
-
- finish() {
- STATUS="$?"
- printf "\n\n>>> exit status was %s\n" "$STATUS"
- echo "Finishing CI job at: $(date -Is)"
- cd -
- NOTE=$(cat <<EOF
+ echo "Starting CI job at: $(date -Is)"
+
+ finish() {
+ STATUS="$?"
+ printf "\n\n>>> exit status was %s\n" "$STATUS"
+ echo "Finishing CI job at: $(date -Is)"
+ cd -
+ NOTE=$(cat <<EOF
See CI logs with:
- git notes --ref=refs/notes/ci-logs show $SHA
- git notes --ref=refs/notes/ci-data show $SHA
+ git notes --ref=refs/notes/ci-logs show $SHA
+ git notes --ref=refs/notes/ci-data show $SHA
EOF
)
- git notes --ref=refs/notes/ci-data add -f -m "$STATUS $FILENAME"
- git notes --ref=refs/notes/ci-logs add -f -F "$LOGFILE"
- git notes append -m "$NOTE"
-
- printf "\n>>>\n>>> CI logs added as Git note.\n>>>\n>>> Run status was %s" "$STATUS"
- }
- trap finish EXIT
-
- unset GIT_DIR
- REMOTE="$PWD"
- cd "$(mktemp -d)"
- git clone "$REMOTE" .
- git config --global user.email git@euandre.org
- git config --global user.name 'EuAndreh CI'
- git fetch origin refs/notes/*:refs/notes/*
- git annex get ||:
-
- if [ -f aux/guix/with-container.sh ]; then
- RUNNER='./aux/guix/with-container.sh'
- else
- RUNNER='sh -c'
- fi
-
- $RUNNER 'make clean public dev-check'
-
- rsync -a public/ "/srv/http/$PACKAGE/" --delete
+ git notes --ref=refs/notes/ci-data add -f -m "$STATUS $FILENAME"
+ git notes --ref=refs/notes/ci-logs add -f -F "$LOGFILE"
+ git notes append -m "$NOTE"
+
+ cd -
+ sh aux/ci/report.sh "$PACKAGE"
+ rsync -a public/ "/srv/http/$PACKAGE/" --delete
+
+ printf "\n>>>\n>>> CI logs added as Git note.\n>>>\n>>> Run status was %s" "$STATUS"
+ }
+ trap finish EXIT
+
+ unset GIT_DIR
+ REMOTE="$PWD"
+ cd "$(mktemp -d)"
+ git clone "$REMOTE" .
+ git config --global user.email git@euandre.org
+ git config --global user.name 'EuAndreh CI'
+ git fetch origin refs/notes/*:refs/notes/*
+ git annex get ||:
+
+ if [ -f aux/guix/with-container.sh ]; then
+ RUNNER='./aux/guix/with-container.sh'
+ else
+ RUNNER='sh -c'
+ fi
+
+ $RUNNER 'make clean public dev-check'
} 2>&1 | tee "$LOGFILE"
diff --git a/aux/ci/git-post-receive.sh b/aux/ci/git-post-receive.sh
index f8986ed..ee8075f 100755
--- a/aux/ci/git-post-receive.sh
+++ b/aux/ci/git-post-receive.sh
@@ -2,11 +2,11 @@
set -eu
for n in $(seq 0 $((GIT_PUSH_OPTION_COUNT - 1))); do
- opt="$(eval "echo \$GIT_PUSH_OPTION_$n")"
- if [ "$opt" = skip-ci ] || [ "$opt" = ci-skip ]; then
- printf "\n'%s' option detected, not running ci-build.sh\n\n" "$opt"
- exit 0
- fi
+ opt="$(eval "echo \$GIT_PUSH_OPTION_$n")"
+ if [ "$opt" = skip-ci ] || [ "$opt" = ci-skip ]; then
+ printf "\n'%s' option detected, not running ci-build.sh\n\n" "$opt"
+ exit 0
+ fi
done
PACKAGE="$(basename "$PWD" | cut -d. -f1)" # remove .git suffix
diff --git a/aux/ci/git-pre-push.sh b/aux/ci/git-pre-push.sh
index 5546cb2..e73b9b8 100755
--- a/aux/ci/git-pre-push.sh
+++ b/aux/ci/git-pre-push.sh
@@ -1,6 +1,8 @@
#!/bin/sh
set -eux
+TLD="$(cat aux/tld.txt)"
+
PACKAGE="$(basename "$PWD")"
LOGS_DIR="/opt/ci/$PACKAGE/logs"
REMOTE_GIT_DIR="/srv/git/$PACKAGE.git"
@@ -8,12 +10,12 @@ REMOTE_GIT_DIR="/srv/git/$PACKAGE.git"
DESCRIPTION="$(mktemp)"
if [ -f description ]
then
- cp description "$DESCRIPTION"
+ cp description "$DESCRIPTION"
else
- git config euandreh.description > "$DESCRIPTION"
+ git config euandreh.description > "$DESCRIPTION"
fi
-scp "$DESCRIPTION" "git.euandreh.xyz:$REMOTE_GIT_DIR/description"
-ssh git.euandreh.xyz mkdir -p "$LOGS_DIR"
-scp aux/ci/ci-build.sh "git.euandreh.xyz:$(dirname "$LOGS_DIR")/ci-build.sh"
-scp aux/ci/git-post-receive.sh "git.euandreh.xyz:$REMOTE_GIT_DIR/hooks/post-receive"
+scp "$DESCRIPTION" "$TLD:$REMOTE_GIT_DIR/description"
+ssh "$TLD" mkdir -p "$LOGS_DIR"
+scp aux/ci/ci-build.sh "$TLD:$(dirname "$LOGS_DIR")/ci-build.sh"
+scp aux/ci/git-post-receive.sh "$TLD:$REMOTE_GIT_DIR/hooks/post-receive"
diff --git a/aux/ci/report.sh b/aux/ci/report.sh
index b82c061..65d3335 100755
--- a/aux/ci/report.sh
+++ b/aux/ci/report.sh
@@ -14,55 +14,56 @@ chmod 644 "$OUT"
git fetch origin refs/notes/*:refs/notes/* ||:
for c in $(git notes list | cut -d\ -f2); do
- DATA="$(git notes --ref=refs/notes/ci-data show "$c")"
- FILENAME="$(echo "$DATA" | cut -d\ -f2)"
- echo "$DATA" > "public/ci-data/$FILENAME"
- git notes --ref=refs/notes/ci-logs show "$c" > "public/ci-logs/$FILENAME"
+ DATA="$(git notes --ref=refs/notes/ci-data show "$c")"
+ FILENAME="$(echo "$DATA" | cut -d\ -f2)"
+ echo "$DATA" > "public/ci-data/$FILENAME"
+ git notes --ref=refs/notes/ci-logs show "$c" > "public/ci-logs/$FILENAME"
done
cat <<EOF >> "$OUT"
<!DOCTYPE html>
<html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <link rel="icon" type="image/svg+xml" href="favicon.svg" />
- <style>
- pre {
- display: inline;
- }
- </style>
- </head>
- <body>
- <h1>
- CI logs for $PROJECT_UC
- </h1>
- <ul>
+ <style>
+ pre {
+ display: inline;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>
+ CI logs for $PROJECT_UC
+ </h1>
+ <ul>
EOF
for f in $(find public/ci-data/ -type f | LANG=C.UTF-8 sort -r); do
- DATA="$(cat "$f")"
- STATUS="$(echo "$DATA" | cut -d\ -f1)"
- FILENAME="$(echo "$DATA" | cut -d\ -f2)"
+ DATA="$(cat "$f")"
+ STATUS="$(echo "$DATA" | cut -d\ -f1)"
+ FILENAME="$(echo "$DATA" | cut -d\ -f2)"
- if [ "$STATUS" = 0 ]; then
- STATUS_MARKER="$PASS"
- else
- STATUS_MARKER="$FAIL"
- fi
+ if [ "$STATUS" = 0 ]; then
+ STATUS_MARKER="$PASS"
+ else
+ STATUS_MARKER="$FAIL"
+ fi
- cat <<EOF >> "$OUT"
- <li>
- <a href="ci-logs/$FILENAME">
- $STATUS_MARKER <pre>$FILENAME</pre>
- </a>
- </li>
+ cat <<EOF >> "$OUT"
+ <li>
+ <a href="ci-logs/$FILENAME">
+ $STATUS_MARKER <pre>$FILENAME</pre>
+ </a>
+ </li>
EOF
done
cat <<EOF >> "$OUT"
- </ul>
- </body>
+ </ul>
+ </body>
</html>
EOF
diff --git a/aux/guix/pinned-channels.scm b/aux/guix/pinned-channels.scm
index 76114fb..504406f 100644
--- a/aux/guix/pinned-channels.scm
+++ b/aux/guix/pinned-channels.scm
@@ -1,2 +1,11 @@
(cons*
+ (channel
+ (name 'xyz-euandreh)
+ (url "git://euandreh.xyz/package-repository")
+ (branch "main")
+ (introduction
+ (make-channel-introduction
+ "d749e053e6db365069cb9b2ef47a78b06f9e7361"
+ (openpgp-fingerprint
+ "5BDA E9B8 B2F6 C6BC BB0D 6CE5 81F9 0EC3 CD35 6060"))))
%default-channels)
diff --git a/aux/guix/with-container.sh b/aux/guix/with-container.sh
index 13b6cd3..b521c82 100755
--- a/aux/guix/with-container.sh
+++ b/aux/guix/with-container.sh
@@ -2,12 +2,12 @@
set -eux
if [ -z "${1:-}" ]; then
- guix time-machine --fallback -C aux/guix/pinned-channels.scm -- \
- environment --fallback -m aux/guix/manifest.scm
+ guix time-machine --fallback -C aux/guix/pinned-channels.scm -- \
+ environment --fallback -m aux/guix/manifest.scm
elif [ "$1" = '-p' ]; then
- guix time-machine --fallback -C aux/guix/pinned-channels.scm -- \
- environment --fallback -m aux/guix/manifest.scm --pure -C
+ guix time-machine --fallback -C aux/guix/pinned-channels.scm -- \
+ environment --fallback -m aux/guix/manifest.scm --pure -C
else
- guix time-machine --fallback -C aux/guix/pinned-channels.scm -- \
- environment --fallback -m aux/guix/manifest.scm --pure -C -- sh -c "$@"
+ guix time-machine --fallback -C aux/guix/pinned-channels.scm -- \
+ environment --fallback -m aux/guix/manifest.scm --pure -C -- sh -c "$@"
fi
diff --git a/aux/tld.txt b/aux/tld.txt
new file mode 100644
index 0000000..0cb8b8b
--- /dev/null
+++ b/aux/tld.txt
@@ -0,0 +1 @@
+euandreh.xyz
diff --git a/aux/workflow/README.sh b/aux/workflow/README.sh
deleted file mode 100755
index aa5cbe6..0000000
--- a/aux/workflow/README.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-set -eu
-
-mkdir -p public
-
-PROJECT_UC="$1"
-PROJECT="$2"
-MAILING_LIST="$3"
-
-RELEASES_LIST="$(mktemp)"
-for version in $(git tag | perl -e 'print reverse <>'); do
- echo "- version [$version](https://git.euandreh.xyz/$PROJECT/snapshot/$PROJECT-$version.tar.gz) ([sig](https://git.euandreh.xyz/$PROJECT/snapshot/$PROJECT-$version.tar.gz.asc)), released in $(git log -1 --format=%cd --date=short "$version")" >> "$RELEASES_LIST"
-done
-
-RELEASES="$(mktemp)"
-if [ -s "$RELEASES_LIST" ]; then
- printf '\n# Releases\n\n' >> "$RELEASES"
- cat "$RELEASES_LIST" >> "$RELEASES"
-fi
-
-LINKS="$(mktemp)"
-cat <<EOF > "$LINKS"
-
-# Links
-
-- [home page](https://$PROJECT.euandreh.xyz)
-- [source code](https://git.euandreh.xyz/$PROJECT/)
-- [bug tracking](https://$PROJECT.euandreh.xyz/TODOs.html)
-- [mailing list](https://lists.sr.ht/~euandreh/$MAILING_LIST?search=%5B$PROJECT%5D)
-- [CI logs](https://$PROJECT.euandreh.xyz/ci.html)
-- [CHANGELOG](https://$PROJECT.euandreh.xyz/CHANGELOG.html)
-EOF
-
-cat "README.md" "$LINKS" "$RELEASES" | \
- pandoc --toc \
- --highlight-style pygments \
- --toc-depth=2 \
- -s \
- --metadata title="$PROJECT_UC - README" \
- --metadata lang=en \
- -r commonmark \
- -w html \
- > public/index.html
diff --git a/aux/workflow/TODOs.sh b/aux/workflow/TODOs.sh
index 468b3a8..80059ee 100755
--- a/aux/workflow/TODOs.sh
+++ b/aux/workflow/TODOs.sh
@@ -6,25 +6,30 @@ mkdir -p public
PROJECT_UC="$1"
PROJECT="$2"
MAILING_LIST="$3"
+TLD="$(cat aux/tld.txt)"
TODOS_REGEX='s/^## (TODO|DOING|WAITING|MEETING|INACTIVE|NEXT|CANCELLED|DONE) (.*) \{#(.*?)\}$/## <a href="#\3"><span class="\1">\1<\/span> \2<\/a>\n<span class="header-anchor" id="\3">#\3<\/span>\n/'
TAGS_REGEX='s/tag:([\w-]+)/<span class="tag">\1<\/span>/g'
-sed -e "s:@PROJECT_UC@:$PROJECT_UC:g" \
- -e "s:@PROJECT@:$PROJECT:g" \
- -e "s:@MAILING_LIST@:$MAILING_LIST:g" < aux/workflow/preamble.md | \
- printf '%s\n\n%s' \
- "$(cat -)" \
- "$(perl -pe "$TODOS_REGEX" TODOs.md | \
- perl -pe "$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/style.css \
- > public/TODOs.html
+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" \
+ < aux/workflow/preamble.md | \
+ printf \
+ '%s\n\n%s' \
+ "$(cat -)" \
+ "$(perl -pe "$TODOS_REGEX" TODOs.md | perl -pe "$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 \
+ > public/TODOs.html
diff --git a/aux/workflow/assert-changelog.sh b/aux/workflow/assert-changelog.sh
index d39f527..8e81f1f 100755
--- a/aux/workflow/assert-changelog.sh
+++ b/aux/workflow/assert-changelog.sh
@@ -4,11 +4,11 @@ set -eu
PROJECT="$1"
for VVERSION in $(git tag); do
- VERSION="${VVERSION#v}"
- DATE="$(git log -1 --format=%cd --date=short "$VVERSION")"
- CHANGELOG_ENTRY="# [$VERSION](https://git.euandreh.xyz/$PROJECT/commit/?id=$VVERSION) - $DATE"
- if ! grep -qF "$CHANGELOG_ENTRY" CHANGELOG.md; then
- echo "Missing '$CHANGELOG_ENTRY' entry from CHANGELOG.md" >&2
- exit 1
- fi
+ VERSION="${VVERSION#v}"
+ DATE="$(git log -1 --format=%cd --date=short "$VVERSION")"
+ CHANGELOG_ENTRY="# [$VERSION](https://git.euandreh.xyz/$PROJECT/commit/?id=$VVERSION) - $DATE"
+ if ! grep -qF "$CHANGELOG_ENTRY" CHANGELOG.md; then
+ echo "Missing '$CHANGELOG_ENTRY' entry from CHANGELOG.md" >&2
+ exit 1
+ fi
done
diff --git a/aux/workflow/assert-readme.sh b/aux/workflow/assert-readme.sh
new file mode 100755
index 0000000..cef75dd
--- /dev/null
+++ b/aux/workflow/assert-readme.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+set -eu
+
+mkdir -p public
+
+PROJECT="$1"
+MAILING_LIST="$2"
+TLD="$(cat aux/tld.txt)"
+
+EXPECTED="$(mktemp)"
+cat <<EOF >> "$EXPECTED"
+
+For running the extra development-only checks, run:
+
+\`\`\`shell
+$ make dev-check
+\`\`\`
+
+and for generating the documentation HTML and website, run:
+
+\`\`\`shell
+$ make public
+\`\`\`
+
+
+## Links
+
+- [home page](https://$TLD/$PROJECT/)
+- [source code](https://git.euandreh.xyz/$PROJECT/)
+- [bug tracking](https://$TLD/$PROJECT/TODOs.html)
+- [mailing list](https://lists.sr.ht/~euandreh/$MAILING_LIST?search=%5B$PROJECT%5D)
+- [CI logs](https://$TLD/$PROJECT/ci.html)
+- [CHANGELOG](https://$TLD/$PROJECT/CHANGELOG.html)
+EOF
+
+RELEASES_LIST="$(mktemp)"
+for version in $(git tag | perl -e 'print reverse <>'); do
+ echo "- version [$version](https://git.euandreh.xyz/$PROJECT/snapshot/$PROJECT-$version.tar.gz) ([sig](https://git.euandreh.xyz/$PROJECT/snapshot/$PROJECT-$version.tar.gz.asc)), released in $(git log -1 --format=%cd --date=short "$version")" >> "$RELEASES_LIST"
+done
+
+if [ -s "$RELEASES_LIST" ]; then
+ printf '\n\n## Releases\n\n' >> "$EXPECTED"
+ cat "$RELEASES_LIST" >> "$EXPECTED"
+fi
+
+cat <<EOF >> "$EXPECTED"
+
+
+## License
+
+The code is licensed under [GNU Affero General Public License v3.0 or later][AGPL-3.0-or-later] (AGPL-3.0-or-later).
+
+[AGPL-3.0-or-later]: https://www.gnu.org/licenses/agpl-3.0.en.html
+EOF
+
+if ! tail -n "$(wc -l < "$EXPECTED")" README.md | diff - "$EXPECTED"; then
+ echo 'Missing metadata at the end of README.md file'
+ exit 1
+fi
diff --git a/aux/workflow/assert-todos.sh b/aux/workflow/assert-todos.sh
index cd7b611..ca73b7f 100755
--- a/aux/workflow/assert-todos.sh
+++ b/aux/workflow/assert-todos.sh
@@ -2,56 +2,56 @@
set -eu
if git grep FIXME | grep -v '^TODOs.md' | grep -v '^aux/workflow/assert-todos.sh'; then
- echo "Found dangling FIXME markers on the project."
- echo "You should write them down properly on TODOs.md."
- exit 1
+ echo "Found dangling FIXME markers on the project."
+ echo "You should write them down properly on TODOs.md."
+ exit 1
fi
awk -F'{#' '
BEGIN {
- exitstatus = 0
- h2flag = 0
- h2status = ""
- prevline = ""
- idx = 0
- delete ids[0]
+ exitstatus = 0
+ h2flag = 0
+ h2status = ""
+ prevline = ""
+ idx = 0
+ delete ids[0]
}
h2flag == 1 {
- split($0, l, " ")
- timelinestatus = l[2]
- if (h2status != timelinestatus) {
- print "h2/timeline status mismatch for line " NR-1
- print prevline
- print $0
- exitstatus = 1
- }
- h2status = ""
- h2flag = 0
+ split($0, l, " ")
+ timelinestatus = l[2]
+ if (h2status != timelinestatus) {
+ print "h2/timeline status mismatch for line " NR-1
+ print prevline
+ print $0
+ exitstatus = 1
+ }
+ h2status = ""
+ h2flag = 0
}
/^## (TODO|DOING|WAITING|MEETING|INACTIVE|NEXT|CANCELLED|DONE)/ {
- if (match($0, / \{#.*?\}$/) == 0) {
- print "Missing ID for line " NR ":\n" $0
- exitstatus = 1
- }
- id_with_prefix = substr($2, 0, length($2) - 1)
- match(id_with_prefix, /^\w+-/)
- id = substr(id_with_prefix, RLENGTH + 1)
- if (id in arr) {
- print "Duplicate ID: " id
- exitstatus = 1
- } else {
- arr[id] = 1
- }
+ if (match($0, / \{#.*?\}$/) == 0) {
+ print "Missing ID for line " NR ":\n" $0
+ exitstatus = 1
+ }
+ id_with_prefix = substr($2, 0, length($2) - 1)
+ match(id_with_prefix, /^\w+-/)
+ id = substr(id_with_prefix, RLENGTH + 1)
+ if (id in arr) {
+ print "Duplicate ID: " id
+ exitstatus = 1
+ } else {
+ arr[id] = 1
+ }
- split($0, l, " ")
- h2status = l[2]
- h2flag = 1
- prevline = $0
+ split($0, l, " ")
+ h2status = l[2]
+ h2flag = 1
+ prevline = $0
}
/^# Scratch$/ {
- exit exitstatus
+ exit exitstatus
}
' TODOs.md
diff --git a/aux/workflow/commonmark.sh b/aux/workflow/commonmark.sh
index e9609c2..6016f51 100755
--- a/aux/workflow/commonmark.sh
+++ b/aux/workflow/commonmark.sh
@@ -5,13 +5,16 @@ mkdir -p public
PROJECT_UC="$1"
F="$2"
+OUT="${3:-${F%.*}.html}"
-pandoc --toc \
- --highlight-style pygments \
- --toc-depth=2 \
- -s \
- --metadata title="$PROJECT_UC - ${F%.*}" \
- --metadata lang=en \
- -r commonmark \
- -w html \
- < "$F" > "public/${F%.*}.html"
+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" > "public/$OUT"
diff --git a/aux/workflow/dist.sh b/aux/workflow/dist.sh
index 0ae0ec4..c061a04 100755
--- a/aux/workflow/dist.sh
+++ b/aux/workflow/dist.sh
@@ -2,26 +2,25 @@
set -eu
DATE="$1"
-VERSION="$2"
VVERSION="v$2"
PROJECT="$3"
if git show "$VVERSION" 1>/dev/null 2>/dev/null; then
- echo "Version '$VVERSION' already exists." >&2
- exit 1
+ echo "Version '$VVERSION' already exists." >&2
+ exit 1
fi
if [ "$DATE" != "$(git log -1 --format=%cd --date=short HEAD)" ]; then
- echo "Date '$DATE' is not up-to-date." >&2
- exit 1
+ echo "Date '$DATE' is not up-to-date." >&2
+ exit 1
fi
if [ "Release $VVERSION" != "$(git log --format=%B -1 HEAD | head -n1)" ]; then
- echo "Commit message isn't 'Release $VVERSION'." >&2
- exit 1
+ echo "Commit message isn't 'Release $VVERSION'." >&2
+ exit 1
fi
-sh aux/workflow/assert-changelog.sh "$DATE" "$VERSION" "$PROJECT"
+sh aux/workflow/assert-changelog.sh "$PROJECT"
git tag "$VVERSION"
diff --git a/aux/workflow/favicon.html b/aux/workflow/favicon.html
new file mode 100644
index 0000000..8f9327c
--- /dev/null
+++ b/aux/workflow/favicon.html
@@ -0,0 +1 @@
+<link rel="icon" type="image/svg+xml" href="favicon.svg" />
diff --git a/aux/workflow/favicon.png b/aux/workflow/favicon.png
new file mode 100644
index 0000000..051fdf1
--- /dev/null
+++ b/aux/workflow/favicon.png
Binary files differ
diff --git a/aux/workflow/favicon.svg b/aux/workflow/favicon.svg
new file mode 100644
index 0000000..ce566b2
--- /dev/null
+++ b/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/aux/workflow/preamble.md b/aux/workflow/preamble.md
index 9fbbd2c..30efe0b 100644
--- a/aux/workflow/preamble.md
+++ b/aux/workflow/preamble.md
@@ -2,7 +2,7 @@
TODOs for @PROJECT_UC@.
-See also [@PROJECT@.euandreh.xyz](https://@PROJECT@.euandreh.xyz/) and [CI logs](https://@PROJECT@.euandreh.xyz/ci.html).
+See also [@TLD@/@PROJECT@/](https://@TLD@/@PROJECT@/) and [CI logs](https://@TLD@/@PROJECT@/ci.html).
Register a new one at
[~euandreh/@MAILING_LIST@@lists.sr.ht](mailto:~euandreh/@MAILING_LIST@@lists.sr.ht?subject=%5B@PROJECT@%5D%20BUG%20or%20TASK%3A%20%3Cdescription%3E)
diff --git a/aux/workflow/public.sh b/aux/workflow/public.sh
index 4c90225..8ecb855 100755
--- a/aux/workflow/public.sh
+++ b/aux/workflow/public.sh
@@ -5,11 +5,13 @@ PROJECT_UC="$1"
PROJECT="$2"
MAILING_LIST="$3"
-sh aux/workflow/TODOs.sh "$PROJECT_UC" "$PROJECT" "$MAILING_LIST"
-sh aux/workflow/README.sh "$PROJECT_UC" "$PROJECT" "$MAILING_LIST"
+sh aux/workflow/TODOs.sh "$PROJECT_UC" "$PROJECT" "$MAILING_LIST"
+sh aux/workflow/commonmark.sh "$PROJECT" README.md index.html ||:
if [ -f CHANGELOG.md ]; then
sh aux/workflow/commonmark.sh "$PROJECT" CHANGELOG.md
fi
sh aux/ci/report.sh "$PROJECT"
+
+cp aux/workflow/favicon.* public/
diff --git a/aux/workflow/sign-tarballs.sh b/aux/workflow/sign-tarballs.sh
index b88ff33..8de6ac4 100755
--- a/aux/workflow/sign-tarballs.sh
+++ b/aux/workflow/sign-tarballs.sh
@@ -5,13 +5,13 @@ PROJECT="$1"
SIGNATURES="$(git notes --ref=refs/notes/signatures/tar.gz list | cut -d\ -f2)"
for tag in $(git tag); do
- COMMIT="$(git rev-list -n1 "$tag")"
- if ! echo "$SIGNATURES" | grep -qF "$COMMIT"; then
- echo "Adding missing signature to $tag" >&2
- git notes --ref=refs/notes/signatures/tar.gz add -f -C "$(
- git archive --format tar.gz --prefix "$PROJECT-${tag#v}/" "$tag" |
- gpg --output - --armor --detach-sign |
- git hash-object -w --stdin
- )" "$tag"
- fi
+ COMMIT="$(git rev-list -n1 "$tag")"
+ if ! echo "$SIGNATURES" | grep -qF "$COMMIT"; then
+ echo "Adding missing signature to $tag" >&2
+ git notes --ref=refs/notes/signatures/tar.gz add -f -C "$(
+ git archive --format tar.gz --prefix "$PROJECT-${tag#v}/" "$tag" |
+ gpg --output - --armor --detach-sign |
+ git hash-object -w --stdin
+ )" "$tag"
+ fi
done