Merge branch 'cleanup'

This commit is contained in:
Chris Wanstrath 2026-02-20 07:41:41 -08:00
commit f00cea588f

View File

@ -4,6 +4,7 @@ import { Command } from "commander"
import { $} from "bun"
import { basename, join } from "path"
import { homedir } from "os"
import { existsSync } from "fs"
import { mkdir, symlink, unlink } from "fs/promises"
import * as git from "./git.ts"
import * as vm from "./vm.ts"
@ -598,6 +599,35 @@ program
process.stdout.write(session.worktree + "\n")
})
// ── sandlot cleanup ─────────────────────────────────────────────────
program
.command("cleanup")
.description("Remove stale sessions whose worktrees no longer exist")
.action(async () => {
const root = await git.repoRoot()
const st = await state.load(root)
const sessions = Object.values(st.sessions)
if (sessions.length === 0) {
console.log("No sessions to clean up.")
return
}
const stale = sessions.filter(s => !existsSync(s.worktree))
if (stale.length === 0) {
console.log("No stale sessions found.")
return
}
for (const s of stale) {
await state.removeSession(root, s.branch)
await unlink(join(root, '.sandlot', s.branch)).catch(() => {})
console.log(`✔ Removed stale session: ${s.branch}`)
}
})
// ── sandlot vm ───────────────────────────────────────────────────────
const vmCmd = program.command("vm").description("Manage the sandlot VM")