MCPcopy Index your code
hub / github.com/coder/mux / looksLikeGitForWindowsBash

Function looksLikeGitForWindowsBash

src/node/utils/main/bashPath.ts:51–84  ·  view source on GitHub ↗

* Ensure the bash we found appears to come from a Git for Windows install. * * (We avoid launching WSL shells via `C:\\Windows\\System32\\bash.exe`.)

(bashPath: string, existsSyncFn: ExistsSyncFn)

Source from the content-addressed store, hash-verified

49 * (We avoid launching WSL shells via `C:\\Windows\\System32\\bash.exe`.)
50 */
51function looksLikeGitForWindowsBash(bashPath: string, existsSyncFn: ExistsSyncFn): boolean {
52 if (isWslLauncherPath(bashPath)) {
53 return false;
54 }
55
56 const normalized = WIN_PATH.normalize(bashPath);
57 const lower = normalized.toLowerCase();
58
59 if (lower.endsWith("\\usr\\bin\\bash.exe")) {
60 const root = WIN_PATH.dirname(WIN_PATH.dirname(WIN_PATH.dirname(normalized)));
61 return existsSyncFn(WIN_PATH.join(root, "cmd", "git.exe"));
62 }
63
64 if (lower.endsWith("\\bin\\bash.exe")) {
65 const root = WIN_PATH.dirname(WIN_PATH.dirname(normalized));
66 return existsSyncFn(WIN_PATH.join(root, "cmd", "git.exe"));
67 }
68
69 // Best-effort: walk up a few levels looking for `cmd/git.exe`.
70 let dir = WIN_PATH.dirname(normalized);
71 for (let i = 0; i < 4; i++) {
72 if (existsSyncFn(WIN_PATH.join(dir, "cmd", "git.exe"))) {
73 return true;
74 }
75
76 const parent = WIN_PATH.dirname(dir);
77 if (parent === dir) {
78 break;
79 }
80 dir = parent;
81 }
82
83 return false;
84}
85
86function findGitRootFromGitExePath(gitExePath: string, existsSyncFn: ExistsSyncFn): string | null {
87 let dir = WIN_PATH.dirname(WIN_PATH.dirname(WIN_PATH.normalize(gitExePath)));

Callers 1

findWindowsBashFunction · 0.85

Calls 2

isWslLauncherPathFunction · 0.85
existsSyncFnFunction · 0.85

Tested by

no test coverage detected