mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-08-30 02:43:34 +00:00
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import { readFile } from 'fs/promises'
|
|
import { homedir } from 'os'
|
|
import { join } from 'path'
|
|
|
|
/**
|
|
* Resolve CodeBurn's shared cache directory at call time.
|
|
*
|
|
* Reading the environment on every call matters for embedded consumers and
|
|
* tests that change CODEBURN_CACHE_DIR after importing the CLI modules.
|
|
*/
|
|
export function getCodeburnCacheDir(): string {
|
|
const override = process.env['CODEBURN_CACHE_DIR']
|
|
return override?.trim() ? override : join(homedir(), '.cache', 'codeburn')
|
|
}
|
|
|
|
/** A versioned cache file is the only source when it exists. Legacy adoption is ENOENT-only. */
|
|
export type ExistingTextFile =
|
|
| { status: 'absent' }
|
|
| { status: 'unreadable' }
|
|
| { status: 'ok'; text: string }
|
|
|
|
export async function readExistingTextFile(path: string): Promise<ExistingTextFile> {
|
|
try {
|
|
return { status: 'ok', text: await readFile(path, 'utf-8') }
|
|
} catch (err) {
|
|
const code = err && typeof err === 'object' && 'code' in err ? (err as { code?: string }).code : undefined
|
|
return { status: code === 'ENOENT' ? 'absent' : 'unreadable' }
|
|
}
|
|
}
|