#!/bin/sh
# script/update-policy: bring this repo up to standards. It fetches the
# current script/commit-current-upstream-policy-docs from the prompts
# repo over HTTP, runs it on this repo and commits the files it wrote.
# It does not push. Identical in all repos. Our own extension to
# scripts-to-rule-them-all.
set -eu

ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
COMMIT_CURRENT_UPSTREAM_POLICY_DOCS_URL="https://git.eeqj.de/sneak/prompts/raw/branch/main/script/commit-current-upstream-policy-docs"

die() {
    echo "update-policy: $*" >&2
    exit 1
}

main() {
    [ "$#" -eq 0 ] || die "usage: script/update-policy"

    cd "$ROOT"

    tmp="$(mktemp -d)"
    trap 'rm -rf "$tmp"' EXIT

    curl --fail --silent --show-error --max-time 60 \
        --output "$tmp/commit-current-upstream-policy-docs" \
        "$COMMIT_CURRENT_UPSTREAM_POLICY_DOCS_URL" ||
        die "cannot fetch $COMMIT_CURRENT_UPSTREAM_POLICY_DOCS_URL"

    sh "$tmp/commit-current-upstream-policy-docs" "$ROOT" > "$tmp/written"
    commit="$(head -n 1 "$tmp/written")"
    paths="$(tail -n +2 "$tmp/written")"

    for path in $paths; do
        git add -- "$path"
    done

    if git diff --cached --quiet -- $paths; then
        echo "update-policy: already at prompts $commit, nothing to commit"
    else
        git commit -m "Update policy files from prompts $commit" -- $paths
    fi
}

main "$@"
