MCPcopy
hub / github.com/tailwindlabs/tailwindcss / spawn

Function spawn

integrations/utils.ts:205–339  ·  view source on GitHub ↗
(command: string, childProcessOptions: ChildProcessOptions = {})

Source from the content-addressed store, hash-verified

203 })
204 },
205 async spawn(command: string, childProcessOptions: ChildProcessOptions = {}) {
206 let resolveDisposal: (() => void) | undefined
207 let rejectDisposal: ((error: Error) => void) | undefined
208 let disposePromise = new Promise<void>((resolve, reject) => {
209 resolveDisposal = resolve
210 rejectDisposal = reject
211 })
212
213 let cwd = childProcessOptions.cwd ?? root
214 if (debug && cwd !== root) {
215 let relative = path.relative(root, cwd)
216 if (relative[0] !== '.') relative = `./${relative}`
217 console.log(`> cd ${relative}`)
218 }
219 if (debug) console.log(`>& ${command}`)
220 let child = spawn(command, {
221 cwd,
222 detached: !IS_WINDOWS,
223 shell: true,
224 ...childProcessOptions,
225 env: {
226 ...process.env,
227 ...childProcessOptions.env,
228 },
229 })
230
231 let disposed = false
232
233 async function dispose() {
234 if (disposed) return disposePromise
235 disposed = true
236
237 await killProcessTree(child)
238
239 let timer = setTimeout(() => {
240 forceKillProcessTree(child)
241 rejectDisposal?.(new Error(`spawned process (${command}) did not exit in time`))
242 }, ASSERTION_TIMEOUT)
243 disposePromise.then(
244 () => clearTimeout(timer),
245 () => clearTimeout(timer),
246 )
247 return disposePromise
248 }
249 disposables.push(dispose)
250
251 function onExit() {
252 resolveDisposal?.()
253 }
254
255 let stdoutMessages: string[] = []
256 let stderrMessages: string[] = []
257
258 let stdoutActors: SpawnActor[] = []
259 let stderrActors: SpawnActor[] = []
260
261 function notifyNext(actors: SpawnActor[], messages: string[]) {
262 if (actors.length <= 0) return

Callers 15

index.test.tsFile · 0.85
next.test.tsFile · 0.85
source.test.tsFile · 0.85
config.test.tsFile · 0.85
index.test.tsFile · 0.85
config.test.tsFile · 0.85
index.test.tsFile · 0.85
index.test.tsFile · 0.85
qwik.test.tsFile · 0.85
resolvers.test.tsFile · 0.85
solidstart.test.tsFile · 0.85
multi-root.test.tsFile · 0.85

Calls 2

notifyNextFunction · 0.85
errorMethod · 0.80

Tested by

no test coverage detected