takt/src/shared/utils/taskPaths.ts
2026-02-19 17:20:22 +09:00

21 lines
670 B
TypeScript

const TASK_SLUG_PATTERN =
'[a-z0-9](?:[a-z0-9-]*[a-z0-9])?';
const TASK_DIR_PREFIX = '.takt/tasks/';
const TASK_DIR_PATTERN = new RegExp(`^\\.takt/tasks/${TASK_SLUG_PATTERN}$`);
const REPORT_DIR_NAME_PATTERN = new RegExp(`^${TASK_SLUG_PATTERN}$`);
export function isValidTaskDir(taskDir: string): boolean {
return TASK_DIR_PATTERN.test(taskDir);
}
export function getTaskSlugFromTaskDir(taskDir: string): string | undefined {
if (!isValidTaskDir(taskDir)) {
return undefined;
}
return taskDir.slice(TASK_DIR_PREFIX.length);
}
export function isValidReportDirName(reportDirName: string): boolean {
return REPORT_DIR_NAME_PATTERN.test(reportDirName);
}