Require session to exist before closing; simplify worktree path resolution

This commit is contained in:
Chris Wanstrath 2026-02-21 08:31:08 -08:00
parent 4db29e4beb
commit 1e71b3b4a4

View File

@ -1,6 +1,4 @@
import { join } from "path"
import { homedir } from "os"
import { basename } from "path"
import { unlink } from "fs/promises"
import * as git from "../git.ts"
import * as vm from "../vm.ts"
@ -10,9 +8,14 @@ import { die } from "../fmt.ts"
export async function action(branch: string, opts: { force?: boolean } = {}) {
const root = await git.repoRoot()
const session = await state.getSession(root, branch)
const worktreeAbs = session?.worktree ?? join(homedir(), '.sandlot', basename(root), branch)
if (!opts.force && session && await git.isDirty(worktreeAbs)) {
if (!session) {
die(`No session found for branch "${branch}"`)
}
const worktreeAbs = session.worktree
if (!opts.force && await git.isDirty(worktreeAbs)) {
die(`Branch "${branch}" has unsaved changes. Run "sandlot save ${branch}" first, or use -f to force.`)
}
@ -27,9 +30,7 @@ export async function action(branch: string, opts: { force?: boolean } = {}) {
await git.deleteLocalBranch(branch, root)
.catch((e) => console.warn(`⚠ Failed to delete branch ${branch}: ${e.message}`))
if (session) {
await state.removeSession(root, branch)
}
await state.removeSession(root, branch)
console.log(`✔ Closed session ${branch}`)
}