diff options
Diffstat (limited to 'share/aux-repo/aux/ci/report.sh')
-rwxr-xr-x | share/aux-repo/aux/ci/report.sh | 158 |
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 |