#!/usr/bin/env bash # # A simple ci that saves its results in a git note, formatted according to # RFC-2822, more or less. # # To run this manually, exec the script. It will expect to read a line of # inputs, you can just enter 'HEAD' and it will # ## set -uo pipefail [[ -n $(git status -s) ]] && { echo fail: dirty worktree; exit 1; } ## at=$(date -R) user=$(git config --get user.name) mail=$(git config --get user.email) ## commit=$(git notes --ref=ci show HEAD || true) if [[ -n "$commit" ]] then if grep -q "Lint-is: good" <<< "$commit" then exit 0 fi if grep -q "Test-is: good" <<< "$commit" then exit 0 fi fi ## if lint "${CODEROOT:?}"/**/* then lint_result="good" else lint_result="fail" exit 1 fi ## if bild "${BILD_ARGS:-""}" --test "${CODEROOT:?}"/**/* then test_result="good" else test_result="fail" exit 1 fi ## read -r -d '' note < Test-at: $at EOF ## git notes --ref=ci append -m "$note" ##