Skip to content

Commit 0f83d1d

Browse files
committed
Address code-review
* Change loop to indexed `for` loop * Moved isDirectory check to IsDir local func, to prevent continue in loop and messy try/catch * Cleaned up white space issue with patch
1 parent 630a680 commit 0f83d1d

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

ci/dev/vscode.patch

+3-2
Original file line numberDiff line numberDiff line change
@@ -1298,7 +1298,8 @@ index 0000000000..7e1cd270c8
12981298
+ type: 'cli';
12991299
+ args: Args;
13001300
+}
1301-
+ export interface OpenCommandPipeArgs {
1301+
+
1302+
+export interface OpenCommandPipeArgs {
13021303
+ type: 'open';
13031304
+ fileURIs?: string[];
13041305
+ folderURIs: string[];
@@ -1308,7 +1309,7 @@ index 0000000000..7e1cd270c8
13081309
+ gotoLineMode?: boolean;
13091310
+ forceReuseWindow?: boolean;
13101311
+ waitMarkerFilePath?: string;
1311-
+ }
1312+
+}
13121313
+
13131314
+export type CodeServerMessage = InitMessage | SocketMessage | CliMessage;
13141315
+

src/node/entry.ts

+22-13
Original file line numberDiff line numberDiff line change
@@ -172,26 +172,35 @@ async function entry(): Promise<void> {
172172
const pipeArgs: OpenCommandPipeArgs = { type: "open", folderURIs: [] }
173173
pipeArgs.forceReuseWindow = args["reuse-window"]
174174
pipeArgs.forceNewWindow = args["new-window"]
175-
for (const a in args._) {
176-
if (Object.prototype.hasOwnProperty.call(args._, a)) {
177-
try {
178-
const fp = await fs.realpath(args._[a])
179-
const st = await fs.stat(fp)
180-
if (st.isDirectory()) {
181-
pipeArgs.folderURIs = [...pipeArgs.folderURIs, fp]
182-
} else {
183-
pipeArgs.fileURIs = [...(pipeArgs.fileURIs || []), fp]
184-
}
185-
} catch (error) {
186-
pipeArgs.fileURIs = [...(pipeArgs.fileURIs || []), args._[a]]
175+
const isDir = async (path: string): Promise<boolean> => {
176+
try {
177+
const st = await fs.stat(path)
178+
return st.isDirectory()
179+
} catch (error) {
180+
return false
181+
}
182+
}
183+
for (let i = 0; i < args._.length; i++) {
184+
const fp = path.resolve(args._[i])
185+
if (await isDir(fp)) {
186+
pipeArgs.folderURIs.push(fp)
187+
} else {
188+
if (!pipeArgs.fileURIs) {
189+
pipeArgs.fileURIs = []
187190
}
191+
pipeArgs.fileURIs.push(fp)
188192
}
189193
}
190194
if (pipeArgs.forceNewWindow && pipeArgs.fileURIs && pipeArgs.fileURIs.length > 0) {
191195
logger.error("new-window can only be used with folder paths")
192196
process.exit(1)
193197
}
194-
const vscode = http.request({
198+
if (pipeArgs.folderURIs.length === 0 && (!pipeArgs.fileURIs || pipeArgs.fileURIs.length === 0)) {
199+
logger.error("open-in expects at least one file or folder argument")
200+
process.exit(1)
201+
}
202+
const vscode = http.request(
203+
{
195204
path: "/",
196205
method: "POST",
197206
socketPath: process.env["VSCODE_IPC_HOOK_CLI"],

0 commit comments

Comments
 (0)