Agent-Reach/scripts/sync-upstream.sh
Panniantong 7e4cd961ee feat: add upstream sync script for x-reader updates
scripts/sync-upstream.sh checks for changes in x-reader's fetchers/
and shows which reader files have upstream updates. Handles import
path differences (x_reader.fetchers → agent_eyes.readers) automatically.
2026-02-24 05:22:48 +01:00

72 lines
2.2 KiB
Bash
Executable file

#!/bin/bash
# sync-upstream.sh — Sync readers from x-reader upstream
#
# Usage: ./scripts/sync-upstream.sh
#
# This script checks for updates in x-reader's fetchers/ directory
# and shows which files have changed. You can then manually review
# and merge the changes.
set -e
UPSTREAM_REPO="runesleo/x-reader"
UPSTREAM_BRANCH="main"
UPSTREAM_DIR="x_reader/fetchers"
LOCAL_DIR="agent_eyes/readers"
echo "👁️ Agent Eyes — Upstream Sync"
echo "Checking for updates from $UPSTREAM_REPO..."
echo ""
# Create temp dir for upstream code
TMPDIR=$(mktemp -d)
trap "rm -rf $TMPDIR" EXIT
# Clone upstream (shallow)
git clone --depth 1 --branch "$UPSTREAM_BRANCH" \
"https://github.com/$UPSTREAM_REPO.git" "$TMPDIR/upstream" 2>/dev/null
if [ ! -d "$TMPDIR/upstream/$UPSTREAM_DIR" ]; then
echo "❌ Upstream directory not found: $UPSTREAM_DIR"
echo " x-reader may have changed their structure."
exit 1
fi
# Compare each file
echo "Comparing files..."
echo ""
CHANGES=0
for upstream_file in "$TMPDIR/upstream/$UPSTREAM_DIR"/*.py; do
filename=$(basename "$upstream_file")
local_file="$LOCAL_DIR/$filename"
if [ ! -f "$local_file" ]; then
echo "🆕 NEW: $filename (exists in upstream but not locally)"
CHANGES=$((CHANGES + 1))
continue
fi
# Compare (ignoring import path differences)
if ! diff -q <(sed 's/x_reader\.fetchers/agent_eyes.readers/g' "$upstream_file") "$local_file" > /dev/null 2>&1; then
echo "📝 CHANGED: $filename"
diff --color -u <(sed 's/x_reader\.fetchers/agent_eyes.readers/g' "$upstream_file") "$local_file" | head -20
echo " ..."
echo ""
CHANGES=$((CHANGES + 1))
fi
done
if [ $CHANGES -eq 0 ]; then
echo "✅ All readers are up to date with upstream!"
else
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "$CHANGES file(s) have upstream changes."
echo ""
echo "To merge a specific file:"
echo " cp $TMPDIR/upstream/$UPSTREAM_DIR/FILENAME.py $LOCAL_DIR/FILENAME.py"
echo " sed -i 's/x_reader\\.fetchers/agent_eyes.readers/g' $LOCAL_DIR/FILENAME.py"
echo ""
echo "Then review changes, run tests, and commit."
fi