From ee5af888510df9c0acd575c22dae073b37a59db7 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Wed, 12 Feb 2025 12:27:24 +0100 Subject: [PATCH] Fix: ensure Windows drive letters are lowercased and improve path parsing --- src/commands/Folders.ts | 12 ++++++++++-- src/helpers/parseWinPath.ts | 14 +++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/commands/Folders.ts b/src/commands/Folders.ts index 5817b30f..0aaf250b 100644 --- a/src/commands/Folders.ts +++ b/src/commands/Folders.ts @@ -636,15 +636,23 @@ export class Folders { } } + // For Windows, we need to make sure the drive letter is lowercased for consistency + if (isWindows()) { + folders = folders.map((folder) => parseWinPath(folder)); + } + // Filter out the workspace folder if (wsFolder) { - folders = folders.filter((folder) => folder !== wsFolder.fsPath); + folders = folders.filter((folder) => folder !== parseWinPath(wsFolder.fsPath)); } const uniqueFolders = [...new Set(folders)]; + const relativeFolderPaths = uniqueFolders.map((folder) => + relative(parseWinPath(wsFolder.fsPath), folder) + ); Logger.verbose('Folders:getContentFolders:end'); - return uniqueFolders.map((folder) => relative(wsFolder?.path || '', folder)); + return relativeFolderPaths; } /** diff --git a/src/helpers/parseWinPath.ts b/src/helpers/parseWinPath.ts index c756d944..e73a9e18 100644 --- a/src/helpers/parseWinPath.ts +++ b/src/helpers/parseWinPath.ts @@ -1,3 +1,15 @@ +import { isWindows } from '../utils'; + export const parseWinPath = (path: string | undefined): string => { - return path?.split(`\\`).join(`/`) || ''; + path = path?.split(`\\`).join(`/`) || ''; + + if (isWindows()) { + // Check if path starts with a drive letter (e.g., "C:\") + if (/^[a-zA-Z]:\\/.test(path)) { + // Convert to lowercase drive letter + path = path.charAt(0).toLowerCase() + path.slice(1); + } + } + + return path; };