@@ -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