Show [migrated] marker and summary in migrate-pr
Interactive picker now marks already-migrated PRs. All modes (--all, explicit numbers, interactive) track and display success/fail/skip counts at the end. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -735,6 +735,26 @@ cmd_migrate_pr() {
|
||||
|
||||
log "INFO" "Archived repo: ${archived_api}"
|
||||
|
||||
# Load already-migrated PR numbers for skip detection and display
|
||||
local migrated_numbers
|
||||
migrated_numbers=$(echo "$onboard_state" | jq -r '[.migrated_prs // [] | .[].old_number] | map(tostring) | .[]')
|
||||
|
||||
# Counters for summary
|
||||
local migrated=0 failed=0 skipped=0
|
||||
|
||||
# Helper: attempt migration of one PR with counting
|
||||
_try_migrate() {
|
||||
local num="$1"
|
||||
if echo "$migrated_numbers" | grep -qx "$num"; then
|
||||
log "INFO" "PR #${num} already migrated — skipping"
|
||||
skipped=$((skipped + 1))
|
||||
elif migrate_one_pr "$num"; then
|
||||
migrated=$((migrated + 1))
|
||||
else
|
||||
failed=$((failed + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$all" = true ]; then
|
||||
# Migrate all open PRs from archived repo
|
||||
local prs
|
||||
@@ -744,14 +764,14 @@ cmd_migrate_pr() {
|
||||
count=$(echo "$prs" | jq 'length')
|
||||
log "INFO" "Found ${count} open PR(s) on archived repo"
|
||||
|
||||
echo "$prs" | jq -r '.[] | .number' | while read -r num; do
|
||||
migrate_one_pr "$num" || true
|
||||
done
|
||||
while read -r num; do
|
||||
_try_migrate "$num"
|
||||
done < <(echo "$prs" | jq -r '.[] | .number')
|
||||
|
||||
elif [ ${#pr_numbers[@]} -gt 0 ]; then
|
||||
# Migrate specific PR numbers
|
||||
for num in "${pr_numbers[@]}"; do
|
||||
migrate_one_pr "$num" || true
|
||||
_try_migrate "$num"
|
||||
done
|
||||
|
||||
else
|
||||
@@ -767,26 +787,33 @@ cmd_migrate_pr() {
|
||||
return
|
||||
fi
|
||||
|
||||
# Display PRs with [migrated] marker for already-processed ones
|
||||
echo "" >&2
|
||||
echo "Open PRs on archived repo:" >&2
|
||||
echo "$prs" | jq -r '.[] | " #\(.number): \(.title) (\(.base.ref) <- \(.head.ref))"' >&2
|
||||
while IFS=$'\t' read -r num title base_ref head_ref; do
|
||||
if echo "$migrated_numbers" | grep -qx "$num"; then
|
||||
echo " #${num}: ${title} (${base_ref} <- ${head_ref}) [migrated]" >&2
|
||||
else
|
||||
echo " #${num}: ${title} (${base_ref} <- ${head_ref})" >&2
|
||||
fi
|
||||
done < <(echo "$prs" | jq -r '.[] | "\(.number)\t\(.title)\t\(.base.ref)\t\(.head.ref)"')
|
||||
echo "" >&2
|
||||
echo "Enter PR numbers to migrate (space-separated), or 'all':" >&2
|
||||
local selection
|
||||
read -r selection
|
||||
|
||||
if [ "$selection" = "all" ]; then
|
||||
echo "$prs" | jq -r '.[] | .number' | while read -r num; do
|
||||
migrate_one_pr "$num" || true
|
||||
done
|
||||
while read -r num; do
|
||||
_try_migrate "$num"
|
||||
done < <(echo "$prs" | jq -r '.[] | .number')
|
||||
else
|
||||
for num in $selection; do
|
||||
migrate_one_pr "$num" || true
|
||||
_try_migrate "$num"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
log "INFO" "PR migration complete"
|
||||
log "INFO" "Migration complete: ${migrated} migrated, ${failed} failed, ${skipped} skipped"
|
||||
}
|
||||
|
||||
# ─── Main ───────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user