first commit
RustBox CI / rustbox (push) Waiting to run

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-29 15:24:59 +01:00
commit bc5fbd6ba9
180 files changed
+63750

No files matched your search

+81
View File
@@ -0,0 +1,81 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
UI_REVIEWED=0
ROOT_REVIEWED=0
SKIP_BUILD=0
for arg in "$@"; do
case "$arg" in
--ui-reviewed) UI_REVIEWED=1 ;;
--root-reviewed) ROOT_REVIEWED=1 ;;
--skip-build) SKIP_BUILD=1 ;;
*) echo "usage: $0 [--ui-reviewed] [--root-reviewed] [--skip-build]" >&2; exit 2 ;;
esac
done
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "error: not a Git checkout" >&2
exit 1
fi
PENDING_FILE="$(git rev-parse --git-path rustbox-upstream-pending)"
if [ ! -f "$PENDING_FILE" ]; then
echo "error: no pending Oxi sync; run ./scripts/sync-upstream.sh first" >&2
exit 1
fi
BASE="$(sed -n 's/^base=//p' "$PENDING_FILE")"
TARGET_SHA="$(sed -n 's/^target=//p' "$PENDING_FILE")"
BRANCH="$(sed -n 's/^branch=//p' "$PENDING_FILE")"
CURRENT_BRANCH="$(git branch --show-current)"
if [ -z "$BASE" ] || [ -z "$TARGET_SHA" ] || [ -z "$BRANCH" ]; then
echo "error: invalid pending sync metadata" >&2
exit 1
fi
if [ "$CURRENT_BRANCH" != "$BRANCH" ]; then
echo "error: pending Oxi sync belongs to branch '$BRANCH'; current branch is '$CURRENT_BRANCH'" >&2
exit 1
fi
if git diff --name-only --diff-filter=U | grep -q .; then
echo "error: unresolved merge conflicts remain" >&2
git diff --name-only --diff-filter=U >&2
exit 1
fi
if find . -path ./.git -prune -o -type f \( -name '*.ts' -o -name '*.tsx' \) -print -quit | grep -q .; then
echo "error: TypeScript source exists in RustBox" >&2
exit 1
fi
if ! git diff --quiet "$BASE..$TARGET_SHA" -- frontend/; then
if [ "$UI_REVIEWED" -ne 1 ]; then
echo "error: Oxi frontend changed between $BASE and $TARGET_SHA." >&2
echo "Review/port the relevant behavior, then rerun with --ui-reviewed." >&2
git diff --name-status "$BASE..$TARGET_SHA" -- frontend/ >&2 || true
exit 1
fi
fi
if ! git diff --quiet "$BASE..$TARGET_SHA" -- . ':(exclude)backend/**' ':(exclude)frontend/**'; then
if [ "$ROOT_REVIEWED" -ne 1 ]; then
echo "error: Oxi root-level files changed between $BASE and $TARGET_SHA." >&2
echo "Review relevant build/config/docs changes, then rerun with --root-reviewed." >&2
git diff --name-status "$BASE..$TARGET_SHA" -- . ':(exclude)backend/**' ':(exclude)frontend/**' >&2 || true
exit 1
fi
fi
if [ "$SKIP_BUILD" -ne 1 ]; then
./scripts/build-release.sh
else
echo "warning: build gate skipped by explicit --skip-build" >&2
fi
printf '%s\n' "$TARGET_SHA" > UPSTREAM_BASE
git add UPSTREAM_BASE
rm -f "$PENDING_FILE"
printf 'Oxi sync review completed: %s -> %s\n' "$BASE" "$TARGET_SHA"
printf 'UPSTREAM_BASE is staged. Review git status and commit the sync.\n'