skillhub/cli/test/helpers/target-lock-worker.ts
XiaoSeS 2c80b720b5 test(cli): synchronize stale lock contenders
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-02 09:10:21 +08:00

39 lines
1.2 KiB
TypeScript

import { access, writeFile } from 'node:fs/promises'
import { acquireSkillTargetLock } from '../../src/services/skill-target-lock'
import { CliError } from '../../src/shared/errors'
const [rootDir, slug, readyPath, startPath, acquiredPath, releasePath] = process.argv.slice(2)
if (!rootDir || !slug || !readyPath || !startPath || !acquiredPath || !releasePath) process.exit(5)
try {
await writeFile(readyPath, 'ready')
let startRequested = false
while (!startRequested) {
try {
await access(startPath)
startRequested = true
} catch {
await new Promise(resolve => setTimeout(resolve, 10))
}
}
const release = await acquireSkillTargetLock(rootDir, slug)
await writeFile(acquiredPath, 'acquired')
process.stdout.write('acquired\n')
let releaseRequested = false
while (!releaseRequested) {
try {
await access(releasePath)
releaseRequested = true
} catch {
await new Promise(resolve => setTimeout(resolve, 10))
}
}
await release()
process.exit(0)
} catch (error) {
if (error instanceof CliError) {
process.stderr.write(`${error.message}\n`)
process.exit(error.exitCode)
}
throw error
}