(args: DefaultedArgs, socketPath: string)
| 76 | } |
| 77 | |
| 78 | export const openInExistingInstance = async (args: DefaultedArgs, socketPath: string): Promise<void> => { |
| 79 | const pipeArgs: OpenCommandPipeArgs & { fileURIs: string[] } = { |
| 80 | type: "open", |
| 81 | folderURIs: [], |
| 82 | fileURIs: [], |
| 83 | forceReuseWindow: args["reuse-window"], |
| 84 | forceNewWindow: args["new-window"], |
| 85 | gotoLineMode: true, |
| 86 | } |
| 87 | for (let i = 0; i < args._.length; i++) { |
| 88 | const fp = args._[i] |
| 89 | if (await isDirectory(fp)) { |
| 90 | pipeArgs.folderURIs.push(fp) |
| 91 | } else { |
| 92 | pipeArgs.fileURIs.push(fp) |
| 93 | } |
| 94 | } |
| 95 | if (pipeArgs.forceNewWindow && pipeArgs.fileURIs.length > 0) { |
| 96 | logger.error("--new-window can only be used with folder paths") |
| 97 | process.exit(1) |
| 98 | } |
| 99 | if (pipeArgs.folderURIs.length === 0 && pipeArgs.fileURIs.length === 0) { |
| 100 | logger.error("Please specify at least one file or folder") |
| 101 | process.exit(1) |
| 102 | } |
| 103 | const vscode = http.request( |
| 104 | { |
| 105 | path: "/", |
| 106 | method: "POST", |
| 107 | socketPath, |
| 108 | }, |
| 109 | (response) => { |
| 110 | response.on("data", (message) => { |
| 111 | logger.debug("got message from Code", field("message", message.toString())) |
| 112 | }) |
| 113 | }, |
| 114 | ) |
| 115 | vscode.on("error", (error: unknown) => { |
| 116 | logger.error("got error from Code", field("error", error)) |
| 117 | }) |
| 118 | vscode.write(JSON.stringify(pipeArgs)) |
| 119 | vscode.end() |
| 120 | } |
| 121 | |
| 122 | export const runCodeServer = async ( |
| 123 | args: DefaultedArgs, |
no test coverage detected