mirror of
https://github.com/bybrooklyn/openbitdo.git
synced 2026-03-19 04:12:56 -04:00
99 lines
2.3 KiB
Bash
Executable File
99 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
TMP="$(mktemp -d)"
|
|
trap 'rm -rf "$TMP"' EXIT
|
|
|
|
MOCK_BIN="$TMP/bin"
|
|
mkdir -p "$MOCK_BIN"
|
|
|
|
cat >"$MOCK_BIN/gh" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
STATE_DIR="${MOCK_GH_STATE_DIR:?}"
|
|
|
|
if [[ "${1:-}" != "api" ]]; then
|
|
echo "mock gh only supports api" >&2
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
method="GET"
|
|
if [[ "${1:-}" == "--method" ]]; then
|
|
method="$2"
|
|
shift 2
|
|
fi
|
|
|
|
endpoint="$1"
|
|
shift
|
|
|
|
case "${method}:${endpoint}" in
|
|
GET:repos/*/contents/Formula/openbitdo.rb\?ref=main)
|
|
if [[ -f "$STATE_DIR/remote_formula.rb" ]]; then
|
|
content="$(base64 < "$STATE_DIR/remote_formula.rb" | tr -d '\n')"
|
|
printf '{"sha":"remote-sha","content":"%s"}\n' "$content"
|
|
exit 0
|
|
fi
|
|
exit 1
|
|
;;
|
|
PUT:repos/*/contents/Formula/openbitdo.rb)
|
|
content=""
|
|
while [[ $# -gt 0 ]]; do
|
|
if [[ "$1" == "-f" ]]; then
|
|
case "$2" in
|
|
content=*)
|
|
content="${2#content=}"
|
|
;;
|
|
esac
|
|
shift 2
|
|
else
|
|
shift
|
|
fi
|
|
done
|
|
printf '%s' "$content" | base64 --decode >"$STATE_DIR/updated_formula.rb"
|
|
echo "put" >>"$STATE_DIR/requests.log"
|
|
printf '{"content":{"sha":"new-sha"}}\n'
|
|
;;
|
|
*)
|
|
echo "unexpected mock gh call: ${method} ${endpoint}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
EOF
|
|
chmod +x "$MOCK_BIN/gh"
|
|
|
|
FORMULA_SOURCE="$TMP/openbitdo.rb"
|
|
cat >"$FORMULA_SOURCE" <<'EOF'
|
|
class Openbitdo < Formula
|
|
desc "OpenBitdo"
|
|
end
|
|
EOF
|
|
|
|
run_sync() {
|
|
PATH="$MOCK_BIN:$PATH" \
|
|
MOCK_GH_STATE_DIR="$TMP/mock-state" \
|
|
GH_TOKEN="job-token" \
|
|
HOMEBREW_TAP_TOKEN="tap-token" \
|
|
HOMEBREW_TAP_REPO="bybrooklyn/homebrew-openbitdo" \
|
|
HOMEBREW_PUBLISH_ENABLED="1" \
|
|
FORMULA_SOURCE="$FORMULA_SOURCE" \
|
|
bash "$ROOT/packaging/homebrew/sync_tap.sh"
|
|
}
|
|
|
|
mkdir -p "$TMP/mock-state"
|
|
cp "$FORMULA_SOURCE" "$TMP/mock-state/remote_formula.rb"
|
|
run_sync >"$TMP/noop.out"
|
|
grep -Fq "no formula changes to push" "$TMP/noop.out"
|
|
test ! -f "$TMP/mock-state/updated_formula.rb"
|
|
|
|
cat >"$TMP/mock-state/remote_formula.rb" <<'EOF'
|
|
class Openbitdo < Formula
|
|
desc "Old formula"
|
|
end
|
|
EOF
|
|
run_sync >"$TMP/update.out"
|
|
grep -Fq "updated bybrooklyn/homebrew-openbitdo:Formula/openbitdo.rb" "$TMP/update.out"
|
|
cmp -s "$FORMULA_SOURCE" "$TMP/mock-state/updated_formula.rb"
|