MCPcopy Create free account
hub / github.com/arctic-cli/interface / schedule

Function schedule

packages/arctic/src/lsp/index.ts:163–203  ·  view source on GitHub ↗
(server: LSPServer.Info, root: string, key: string)

Source from the content-addressed store, hash-verified

161 const result: LSPClient.Info[] = []
162
163 async function schedule(server: LSPServer.Info, root: string, key: string) {
164 const handle = await server
165 .spawn(root)
166 .then((value) => {
167 if (!value) s.broken.add(key)
168 return value
169 })
170 .catch((err) => {
171 s.broken.add(key)
172 log.error(`Failed to spawn LSP server ${server.id}`, { error: err })
173 return undefined
174 })
175
176 if (!handle) return undefined
177 log.info("spawned lsp server", { serverID: server.id })
178
179 const client = await LSPClient.create({
180 serverID: server.id,
181 server: handle,
182 root,
183 }).catch((err) => {
184 s.broken.add(key)
185 handle.process.kill()
186 log.error(`Failed to initialize LSP client ${server.id}`, { error: err })
187 return undefined
188 })
189
190 if (!client) {
191 handle.process.kill()
192 return undefined
193 }
194
195 const existing = s.clients.find((x) => x.root === root && x.serverID === server.id)
196 if (existing) {
197 handle.process.kill()
198 return existing
199 }
200
201 s.clients.push(client)
202 return client
203 }
204
205 for (const server of Object.values(s.servers)) {
206 if (server.extensions.length && !server.extensions.includes(extension)) continue

Callers 1

getClientsFunction · 0.85

Calls 4

spawnMethod · 0.80
pushMethod · 0.80
addMethod · 0.45
createMethod · 0.45

Tested by

no test coverage detected