Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/src/util.ts')
-rw-r--r--editors/code/src/util.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/editors/code/src/util.ts b/editors/code/src/util.ts
index 4b3a6970db..723d2388eb 100644
--- a/editors/code/src/util.ts
+++ b/editors/code/src/util.ts
@@ -299,3 +299,26 @@ export async function spawnAsync(
};
}
}
+
+export const isWindows = process.platform === "win32";
+
+export function isWindowsDriveLetter(code: number): boolean {
+ // Copied from https://github.com/microsoft/vscode/blob/02c2dba5f2669b924fd290dff7d2ff3460791996/src/vs/base/common/extpath.ts#L265-L267
+ return code >= /* CharCode.A */ 65 && code <= /* CharCode.Z */ 90 || code >= /* CharCode.a */ 97 && code <= /* CharCode.z */ 122;
+}
+export function hasDriveLetter(path: string, isWindowsOS: boolean = isWindows): boolean {
+ // Copied from https://github.com/microsoft/vscode/blob/02c2dba5f2669b924fd290dff7d2ff3460791996/src/vs/base/common/extpath.ts#L324-L330
+ if (isWindowsOS) {
+ return isWindowsDriveLetter(path.charCodeAt(0)) && path.charCodeAt(1) === /* CharCode.Colon */ 58;
+ }
+
+ return false;
+}
+export function normalizeDriveLetter(path: string, isWindowsOS: boolean = isWindows): string {
+ // Copied from https://github.com/microsoft/vscode/blob/02c2dba5f2669b924fd290dff7d2ff3460791996/src/vs/base/common/labels.ts#L140-L146
+ if (hasDriveLetter(path, isWindowsOS)) {
+ return path.charAt(0).toUpperCase() + path.slice(1);
+ }
+
+ return path;
+}