Skip to content

Commit 35715b1

Browse files
authored
fix: path overlap suggestions (#351)
Signed-off-by: Chapman Pendery <[email protected]>
1 parent 443945c commit 35715b1

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/runtime/utils.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,20 +118,22 @@ export const resolveCwd = async (
118118
): Promise<{ cwd: string; pathy: boolean; complete: boolean }> => {
119119
if (cmdToken == null) return { cwd, pathy: false, complete: false };
120120
const { token: rawToken, isQuoted } = cmdToken;
121-
const escapedToken = !isQuoted ? rawToken.replaceAll(" ", "\\ ") : rawToken;
122-
const token = escapedToken;
123121
const sep = getPathSeparator(shell);
124-
if (!token.includes(sep)) return { cwd, pathy: false, complete: false };
122+
const escapedToken = !isQuoted ? rawToken.replaceAll(" ", "\\ ") : rawToken;
123+
if (!escapedToken.includes(sep)) return { cwd, pathy: false, complete: false };
124+
const tokenComplete = escapedToken.endsWith(sep);
125+
const trimmedToken = escapedToken.endsWith(sep) ? escapedToken : path.dirname(escapedToken);
126+
const token = trimmedToken;
125127
const resolvedCwd = path.isAbsolute(token) ? token : path.join(cwd, token);
126128
try {
127129
await fsAsync.access(resolvedCwd, fsAsync.constants.R_OK);
128-
return { cwd: resolvedCwd, pathy: true, complete: token.endsWith(sep) };
130+
return { cwd: resolvedCwd, pathy: true, complete: tokenComplete };
129131
} catch {
130132
// fallback to the parent folder if possible
131133
const baselessCwd = resolvedCwd.substring(0, resolvedCwd.length - path.basename(resolvedCwd).length);
132134
try {
133135
await fsAsync.access(baselessCwd, fsAsync.constants.R_OK);
134-
return { cwd: baselessCwd, pathy: true, complete: token.endsWith(sep) };
136+
return { cwd: baselessCwd, pathy: true, complete: tokenComplete };
135137
} catch {
136138
/*empty*/
137139
}

0 commit comments

Comments
 (0)