#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" REMOTE="upstream-oxi" TARGET="${1:-upstream-oxi/main}" if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then echo "error: not a Git checkout" >&2 exit 1 fi if ! git remote get-url "$REMOTE" >/dev/null 2>&1; then echo "error: Oxi remote is not configured; run ./scripts/setup-upstream.sh" >&2 exit 1 fi git fetch "$REMOTE" --tags >/dev/null BASE="$(tr -d '[:space:]' < UPSTREAM_BASE)" TARGET_SHA="$(git rev-parse "$TARGET^{commit}")" if ! git merge-base --is-ancestor "$BASE" "$TARGET_SHA"; then echo "error: recorded Oxi base is not an ancestor of $TARGET ($TARGET_SHA)" >&2 exit 1 fi printf 'RustBox Oxi status\n' printf ' consumed: %s\n' "$BASE" printf ' target: %s\n' "$TARGET_SHA" printf ' commits: %s\n' "$(git rev-list --count "$BASE..$TARGET_SHA")" printf '\nOxi backend changes that can be mapped into RustBox root:\n' git diff --name-status "$BASE..$TARGET_SHA" -- backend/ || true printf '\nOxi frontend changes requiring manual RustBox UI port:\n' git diff --name-status "$BASE..$TARGET_SHA" -- frontend/ || true printf '\nOther Oxi repository changes to review manually:\n' git diff --name-status "$BASE..$TARGET_SHA" -- . ':(exclude)backend/**' ':(exclude)frontend/**' || true printf '\nUpstream commits:\n' git log --oneline --decorate --no-merges "$BASE..$TARGET_SHA" || true