Add cleanup script for test pollution (bd-vxdr)
This commit is contained in:
File diff suppressed because one or more lines are too long
62
scripts/cleanup-test-pollution.sh
Executable file
62
scripts/cleanup-test-pollution.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
# Cleanup test pollution from bd database
|
||||
# Removes issues created during development/testing
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BD="${SCRIPT_DIR}/../bd"
|
||||
|
||||
# Pattern to match test issues (case-insensitive)
|
||||
# Matches: "Test issue", "Test Epic", "Test child", etc.
|
||||
TEST_PATTERN="^Test (issue|Epic|child|parent|dependency|label|update|numeric|P1|FK|simple|lowercase)"
|
||||
|
||||
echo "=== BD Test Pollution Cleanup ==="
|
||||
echo ""
|
||||
|
||||
# Find test issues
|
||||
echo "Finding test pollution issues..."
|
||||
TEST_ISSUES=$("$BD" list --json | jq -r --arg pattern "$TEST_PATTERN" \
|
||||
'.[] | select(.title | test($pattern; "i")) | .id')
|
||||
|
||||
if [ -z "$TEST_ISSUES" ]; then
|
||||
echo "✓ No test pollution found"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
COUNT=$(echo "$TEST_ISSUES" | wc -l | tr -d ' ')
|
||||
echo "Found $COUNT test pollution issues:"
|
||||
"$BD" list --json | jq -r --arg pattern "$TEST_PATTERN" \
|
||||
'.[] | select(.title | test($pattern; "i")) | " - \(.id): \(.title)"'
|
||||
|
||||
echo ""
|
||||
read -p "Delete these $COUNT issues? [y/N] " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Aborted"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Delete via SQLite directly (bd doesn't have delete command yet)
|
||||
DB="${SCRIPT_DIR}/../.beads/beads.db"
|
||||
echo ""
|
||||
echo "Deleting from database..."
|
||||
|
||||
echo "$TEST_ISSUES" | while read -r id; do
|
||||
echo " Deleting $id..."
|
||||
sqlite3 "$DB" "DELETE FROM labels WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM dependencies WHERE issue_id = '$id' OR depends_on_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM comments WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM events WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM dirty_issues WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM export_hashes WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM issue_snapshots WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM compaction_snapshots WHERE issue_id = '$id';"
|
||||
sqlite3 "$DB" "DELETE FROM issues WHERE id = '$id';"
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "✓ Cleanup complete"
|
||||
echo ""
|
||||
echo "Run 'bd stats' to verify new counts"
|
||||
echo "Run 'bd sync' to export cleaned database to JSONL"
|
||||
Reference in New Issue
Block a user