mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Signed-off-by: npub1re830n24qhgstulznk5dxdluccspxkxxdq643lm4q3zwwwjgsuqqmcmdrm <1e4f17cd5505d105f3e29da8d337fcc6201358c6683558ff750444e73a488700@buzz.block.builderlab.xyz> Co-authored-by: npub1re830n24qhgstulznk5dxdluccspxkxxdq643lm4q3zwwwjgsuqqmcmdrm <1e4f17cd5505d105f3e29da8d337fcc6201358c6683558ff750444e73a488700@buzz.block.builderlab.xyz>
158 lines
5.5 KiB
Bash
Executable File
158 lines
5.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
publisher="$repo_root/scripts/publish-mobile-release-candidate.sh"
|
|
tmp="$(mktemp -d)"
|
|
trap 'rm -rf "$tmp"' EXIT
|
|
|
|
bin="$tmp/bin"
|
|
mkdir -p "$bin"
|
|
cat > "$bin/gh" <<'GH'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
record() {
|
|
printf '%s\n' "$*" >> "$GH_CALLS"
|
|
}
|
|
|
|
case "${1:-}:${2:-}" in
|
|
api:repos/block/buzz/rulesets/14378754)
|
|
case "$*" in
|
|
*'.enforcement'*) printf '%s\n' "${GH_TAG_RULESET_STATE:-active}" ;;
|
|
*'.current_user_can_bypass'*) printf '%s\n' "${GH_CURRENT_USER_CAN_BYPASS-always}" ;;
|
|
*'[.rules[].type]'*) printf '%s\n' "${GH_TAG_RULE_TYPES:-creation,deletion,non_fast_forward,update}" ;;
|
|
*'.conditions.ref_name.include[]'*) printf '%s\n' "${GH_TAG_INCLUDES:-refs/tags/mobile-v*}" ;;
|
|
*'.conditions.ref_name.exclude[]'*) printf '%s\n' "${GH_TAG_EXCLUDES:-}" ;;
|
|
*) exit 2 ;;
|
|
esac
|
|
;;
|
|
api:repos/block/buzz/git/ref/heads/main) printf '%s\n' "$GH_TARGET_SHA" ;;
|
|
api:repos/block/buzz/commits/*) printf '%s\n' "$GH_TARGET_SHA" ;;
|
|
api:--paginate)
|
|
[[ "$3" == "repos/block/buzz/git/matching-refs/tags/mobile-v1.2.3-rc." ]]
|
|
printf '%s' "${GH_EXISTING_REFS:-}"
|
|
;;
|
|
api:--method)
|
|
endpoint="$4"
|
|
case "$endpoint" in
|
|
repos/block/buzz/git/tags)
|
|
record "$*"
|
|
printf '%s\n' "$GH_TAG_OBJECT_SHA"
|
|
;;
|
|
repos/block/buzz/git/refs)
|
|
record "$*"
|
|
;;
|
|
*) exit 2 ;;
|
|
esac
|
|
;;
|
|
api:repos/block/buzz/git/ref/tags/mobile-v1.2.3-rc.*)
|
|
if [[ "$*" == *'.object.type'* ]]; then
|
|
printf '%s\n' "${GH_PUBLISHED_REF_TYPE:-tag}"
|
|
else
|
|
printf '%s\n' "${GH_PUBLISHED_REF_SHA:-$GH_TAG_OBJECT_SHA}"
|
|
fi
|
|
;;
|
|
api:repos/block/buzz/git/tags/*)
|
|
if [[ "$*" == *'.object.type'* ]]; then
|
|
printf '%s\n' "${GH_ANNOTATED_TARGET_TYPE:-commit}"
|
|
else
|
|
printf '%s\n' "${GH_ANNOTATED_TARGET_SHA:-$GH_TARGET_SHA}"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "unexpected gh call: $*" >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
GH
|
|
chmod +x "$bin/gh"
|
|
|
|
export PATH="$bin:$PATH"
|
|
export GH_CALLS="$tmp/calls"
|
|
export GITHUB_REPOSITORY=block/buzz
|
|
export GH_TARGET_SHA=1111111111111111111111111111111111111111
|
|
export GH_TAG_OBJECT_SHA=2222222222222222222222222222222222222222
|
|
|
|
"$publisher" 1.2.3 1 "$GH_TARGET_SHA"
|
|
grep -Fq -- '-f tag=mobile-v1.2.3-rc.1' "$GH_CALLS"
|
|
grep -Fq -- '-f message=Buzz Mobile 1.2.3 release candidate 1' "$GH_CALLS"
|
|
grep -Fq -- "-f object=$GH_TARGET_SHA" "$GH_CALLS"
|
|
grep -Fq -- '-f type=commit' "$GH_CALLS"
|
|
grep -Fq -- '-f ref=refs/tags/mobile-v1.2.3-rc.1' "$GH_CALLS"
|
|
grep -Fq -- "-f sha=$GH_TAG_OBJECT_SHA" "$GH_CALLS"
|
|
|
|
if GH_CURRENT_USER_CAN_BYPASS=never "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted an App token without an always bypass" >&2
|
|
exit 1
|
|
fi
|
|
if GH_CURRENT_USER_CAN_BYPASS='' "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a ruleset response without an effective bypass" >&2
|
|
exit 1
|
|
fi
|
|
if GH_TAG_RULESET_STATE=disabled "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted disabled tag protection" >&2
|
|
exit 1
|
|
fi
|
|
if GH_TAG_RULE_TYPES=creation "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted incomplete tag protection" >&2
|
|
exit 1
|
|
fi
|
|
if GH_TAG_INCLUDES=refs/tags/v\* "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a tag ruleset that excludes mobile candidates" >&2
|
|
exit 1
|
|
fi
|
|
if GH_TAG_EXCLUDES=refs/tags/mobile-v0.0.0 "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted tag ruleset exclusions" >&2
|
|
exit 1
|
|
fi
|
|
if GH_TARGET_SHA=3333333333333333333333333333333333333333 \
|
|
"$publisher" 1.2.3 1 1111111111111111111111111111111111111111 >/dev/null 2>&1; then
|
|
echo "publisher accepted a moved main branch" >&2
|
|
exit 1
|
|
fi
|
|
if GH_EXISTING_REFS=$'refs/tags/mobile-v1.2.3-rc.1\n' \
|
|
"$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a stale candidate number" >&2
|
|
exit 1
|
|
fi
|
|
if GH_PUBLISHED_REF_TYPE=commit "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a lightweight published tag" >&2
|
|
exit 1
|
|
fi
|
|
if GH_PUBLISHED_REF_SHA=3333333333333333333333333333333333333333 \
|
|
"$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted the wrong annotated tag object" >&2
|
|
exit 1
|
|
fi
|
|
if GH_ANNOTATED_TARGET_TYPE=tag "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a nested annotated tag" >&2
|
|
exit 1
|
|
fi
|
|
if GH_ANNOTATED_TARGET_SHA=3333333333333333333333333333333333333333 \
|
|
"$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted an annotated tag on the wrong commit" >&2
|
|
exit 1
|
|
fi
|
|
if "$publisher" 01.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a marketing version with a leading zero" >&2
|
|
exit 1
|
|
fi
|
|
if "$publisher" 1.2.3 01 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted a candidate number with a leading zero" >&2
|
|
exit 1
|
|
fi
|
|
if GH_EXISTING_REFS=$'refs/tags/mobile-v1.2.3-rc.1\nrefs/tags/mobile-v1.2.3-rc.7\nrefs/tags/mobile-v1.2.3-rc.08\nrefs/tags/mobile-v1.2.4-rc.99\n' \
|
|
"$publisher" 1.2.3 8 "$GH_TARGET_SHA" >/dev/null; then
|
|
:
|
|
else
|
|
echo "publisher did not sequence from the highest exact candidate" >&2
|
|
exit 1
|
|
fi
|
|
if GITHUB_REPOSITORY=attacker/buzz "$publisher" 1.2.3 1 "$GH_TARGET_SHA" >/dev/null 2>&1; then
|
|
echo "publisher accepted the wrong repository" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "mobile release candidate publisher contract passed"
|