aboutsummaryrefslogtreecommitdiff
path: root/share/aux-repo/aux/ci/report.sh
diff options
context:
space:
mode:
Diffstat (limited to 'share/aux-repo/aux/ci/report.sh')
-rwxr-xr-xshare/aux-repo/aux/ci/report.sh158
1 files changed, 0 insertions, 158 deletions
diff --git a/share/aux-repo/aux/ci/report.sh b/share/aux-repo/aux/ci/report.sh
deleted file mode 100755
index 21cc54e..0000000
--- a/share/aux-repo/aux/ci/report.sh
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/bin/sh
-set -eu
-
-TLD="$(cat aux/tld.txt)"
-. aux/lib.sh
-
-
-usage() {
- cat <<-'EOF'
- Usage:
- aux/ci/report.sh -n NAME -o OUTDIR
- aux/ci/report.sh -h
- EOF
-}
-
-help() {
- cat <<-'EOF'
-
-
- Options:
- -n NAME the lowercase name of the project
- -o OUTDIR directory where to write the files
- -h, --help show this message
-
-
- Generate static HTML files CI report from data stored in git
- notes. The metadata about the CI runs are stored in the ref
- "refs/notes/ci-data", in the format described by
- "aux/ci/run.sh", and the raw logs are stored under the ref
- "refs/notes/ci-logs".
-
-
- Examples:
-
- Generate report for project "myapp" in "public/ci/":
-
- $ sh aux/ci/report.sh -n myapp -o public/ci
- EOF
-}
-
-
-for flag in "$@"; do
- case "$flag" in
- --)
- break
- ;;
- --help)
- usage
- help
- exit
- ;;
- *)
- ;;
- esac
-done
-
-while getopts 'n:o:h' flag; do
- case "$flag" in
- n)
- NAME="$OPTARG"
- ;;
- o)
- OUTDIR="$OPTARG"
- ;;
- h)
- usage
- help
- exit
- ;;
- *)
- usage >&2
- exit 2
- ;;
- esac
-done
-shift $((OPTIND - 1))
-
-
-eval "$(assert_arg "${NAME:-}" '-n NAME')"
-eval "$(assert_arg "${OUTDIR:-}" '-o OUTDIR')"
-
-PASS='✅'
-FAIL='❌'
-
-mkdir -p "$OUTDIR"/logs "$OUTDIR"/data
-
-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" > "$OUTDIR/data/$FILENAME"
- git notes --ref=refs/notes/ci-logs show "$c" \
- > "$OUTDIR/logs/$FILENAME"
-done
-
-{
- cat <<-EOF
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <meta name="description" content="CI logs for $NAME" />
- <link rel="icon" type="image/svg+xml" href="favicon.svg" />
- <title>$NAME - CI logs</title>
-
- <style>
- EOF
-
- cat aux/workflow/style.css | sed 's|^| |'
-
- cat <<-EOF
- </style>
-
- <style>
- pre {
- display: inline;
- }
- ol {
- list-style-type: disc;
- }
- </style>
- </head>
- <body>
- <main>
- <h1>
- CI logs for
- <a href="https://$TLD/$NAME/en/">$NAME</a>
- </h1>
- <ol>
- EOF
-
- for f in $(find "$OUTDIR/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)"
-
- if [ "$STATUS" = 0 ]; then
- STATUS_MARKER="$PASS"
- else
- STATUS_MARKER="$FAIL"
- fi
-
- cat <<-EOF
- <li>
- <a href="logs/$FILENAME">$STATUS_MARKER <pre>$FILENAME</pre></a>
- </li>
- EOF
- done
-
- cat <<-EOF
- </ol>
- </main>
- </body>
- </html>
- EOF
-} > "$OUTDIR"/index.html.tmp
-
-mv "$OUTDIR"/index.html.tmp "$OUTDIR"/index.html