agent-ecosystem/src/renderer/components/team/review/reviewFilePathResolution.ts

28 lines
1.1 KiB
TypeScript

import { isWindowsishPath, normalizePathForComparison } from '@shared/utils/platformPath';
import type { FileChangeSummary } from '@shared/types';
export function resolveReviewFilePath(
files: readonly Pick<FileChangeSummary, 'filePath'>[],
requestedPath: string | null | undefined
): string | null {
if (!requestedPath) return null;
return files.find((file) => reviewFilePathsEqual(file.filePath, requestedPath))?.filePath ?? null;
}
function reviewFilePathsEqual(left: string, right: string): boolean {
const caseInsensitive = isWindowsReviewPath(left) || isWindowsReviewPath(right);
return (
normalizeReviewPathForComparison(left, caseInsensitive) ===
normalizeReviewPathForComparison(right, caseInsensitive)
);
}
function normalizeReviewPathForComparison(filePath: string, caseInsensitive: boolean): string {
const normalized = normalizePathForComparison(filePath);
return caseInsensitive ? normalized.toLowerCase() : normalized;
}
function isWindowsReviewPath(filePath: string): boolean {
return isWindowsishPath(filePath) || filePath.includes('\\');
}