set -eu
: "${RK_REPO:?rk sets this; run this script through rk setup}"
: "${RK_TRUNK_BRANCH:?rk sets this; run this script through rk setup}"
: "${RK_TRUNK_RULESET:?rk sets this; run this script through rk setup}"
: "${RK_TITLE_CHECK:?rk sets this; run this script through rk setup}"
: "${RK_TRUNK_RULES:?rk sets this; run this script through rk setup}"
: "${RK_SQUASH_TITLE_SOURCE:?rk sets this; run this script through rk setup}"
: "${RK_SQUASH_BODY_SOURCE:?rk sets this; run this script through rk setup}"
name="$RK_TRUNK_RULESET"
id="$(gh api "repos/$RK_REPO/rulesets" -q ".[] | select(.name == \"$name\") | .id" | head -n 1)"
if [ -n "$id" ]; then
gh api -X PUT "repos/$RK_REPO/rulesets/$id" --input - >/dev/null
else
gh api -X POST "repos/$RK_REPO/rulesets" --input - >/dev/null
fi <<JSON
{
"name": "$name",
"target": "branch",
"enforcement": "active",
"bypass_actors": [],
"conditions": {
"ref_name": { "include": ["refs/heads/$RK_TRUNK_BRANCH"], "exclude": [] }
},
"rules": $RK_TRUNK_RULES
}
JSON
gh api -X PATCH "repos/$RK_REPO" \
-f "squash_merge_commit_title=$RK_SQUASH_TITLE_SOURCE" -f "squash_merge_commit_message=$RK_SQUASH_BODY_SOURCE" >/dev/null
echo "check: prints $name and the squash message sources"
gh api "repos/$RK_REPO/rulesets" -q ".[] | select(.name == \"$name\") | .name"
gh api "repos/$RK_REPO" -q .squash_merge_commit_title
gh api "repos/$RK_REPO" -q .squash_merge_commit_message