23 lines
963 B
JavaScript
23 lines
963 B
JavaScript
import path from "node:path";
|
|
|
|
export const TEMP_REPORT_ROOT = process.env.HWLAB_TEMP_REPORT_ROOT || "/tmp/hwlab-dev-gate";
|
|
const forbiddenRepoReportDir = "reports";
|
|
|
|
export function tempReportPath(...segments) {
|
|
return path.join(TEMP_REPORT_ROOT, ...segments);
|
|
}
|
|
|
|
export function resolveOutputPath(root, outputPath) {
|
|
return path.isAbsolute(outputPath) ? outputPath : path.resolve(root, outputPath);
|
|
}
|
|
|
|
export function ensureNotRepoReportsPath(root, outputPath, label = "report path") {
|
|
const absoluteRoot = path.resolve(root);
|
|
const absoluteOutput = resolveOutputPath(absoluteRoot, outputPath);
|
|
const relative = path.relative(absoluteRoot, absoluteOutput).split(path.sep).join("/");
|
|
if (relative === forbiddenRepoReportDir || relative.startsWith(`${forbiddenRepoReportDir}/`)) {
|
|
throw new Error(`${label} must not write under the forbidden repository report directory; use ${TEMP_REPORT_ROOT} or .state instead`);
|
|
}
|
|
return absoluteOutput;
|
|
}
|