diff options
-rwxr-xr-x | aux/assert-nixfmt.sh | 11 | ||||
-rwxr-xr-x | aux/assert-shellcheck.sh | 4 | ||||
-rwxr-xr-x | aux/ci/ci-build.sh | 74 | ||||
-rwxr-xr-x | aux/ci/git-post-receive.sh | 10 | ||||
-rwxr-xr-x | aux/ci/git-pre-push.sh | 14 | ||||
-rwxr-xr-x | aux/ci/report.sh | 69 | ||||
-rw-r--r-- | aux/guix/pinned-channels.scm | 9 | ||||
-rwxr-xr-x | aux/guix/with-container.sh | 12 | ||||
-rw-r--r-- | aux/tld.txt | 1 | ||||
-rwxr-xr-x | aux/workflow/README.sh | 43 | ||||
-rwxr-xr-x | aux/workflow/TODOs.sh | 39 | ||||
-rwxr-xr-x | aux/workflow/assert-changelog.sh | 14 | ||||
-rwxr-xr-x | aux/workflow/assert-readme.sh | 59 | ||||
-rwxr-xr-x | aux/workflow/assert-todos.sh | 74 | ||||
-rwxr-xr-x | aux/workflow/commonmark.sh | 21 | ||||
-rwxr-xr-x | aux/workflow/dist.sh | 15 | ||||
-rw-r--r-- | aux/workflow/favicon.html | 1 | ||||
-rw-r--r-- | aux/workflow/favicon.png | bin | 0 -> 2372 bytes | |||
-rw-r--r-- | aux/workflow/favicon.svg | 62 | ||||
-rw-r--r-- | aux/workflow/preamble.md | 2 | ||||
-rwxr-xr-x | aux/workflow/public.sh | 6 | ||||
-rwxr-xr-x | aux/workflow/sign-tarballs.sh | 18 |
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 Binary files differnew file mode 100644 index 0000000..051fdf1 --- /dev/null +++ b/aux/workflow/favicon.png 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 |