asdf
Squash the current repository state back into one baseline commit while preserving the README reframing and repository contents. Constraint: User explicitly requested a single squashed commit with subject "asdf" Confidence: high Scope-risk: broad Reversibility: clean Directive: This commit intentionally rewrites published history; coordinate before future force-pushes Tested: git status clean; local history rewritten to one commit; force-pushed main to origin and instructkr Not-tested: Fresh clone verification after push
This commit is contained in:
commit
d2542c9a62
27
src/utils/getWorktreePathsPortable.ts
Normal file
27
src/utils/getWorktreePathsPortable.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { execFile as execFileCb } from 'child_process'
|
||||
import { promisify } from 'util'
|
||||
|
||||
const execFileAsync = promisify(execFileCb)
|
||||
|
||||
/**
|
||||
* Portable worktree detection using only child_process — no analytics,
|
||||
* no bootstrap deps, no execa. Used by listSessionsImpl.ts (SDK) and
|
||||
* anywhere that needs worktree paths without pulling in the CLI
|
||||
* dependency chain (execa → cross-spawn → which).
|
||||
*/
|
||||
export async function getWorktreePathsPortable(cwd: string): Promise<string[]> {
|
||||
try {
|
||||
const { stdout } = await execFileAsync(
|
||||
'git',
|
||||
['worktree', 'list', '--porcelain'],
|
||||
{ cwd, timeout: 5000 },
|
||||
)
|
||||
if (!stdout) return []
|
||||
return stdout
|
||||
.split('\n')
|
||||
.filter(line => line.startsWith('worktree '))
|
||||
.map(line => line.slice('worktree '.length).normalize('NFC'))
|
||||
} catch {
|
||||
return []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user