82b13ca184
Migrate the run/text/lines helpers in util/process.ts to Effect-returning functions that yield ChildProcessSpawner and use ChildProcess.make internally. The legacy Promise-based behaviour stays available under runPromise/textPromise/linesPromise for non-Effect callers; these are thin wrappers over the original spawn() path so AbortSignal and timeout semantics are preserved. server.ts now runs Process.run/Process.text through a private ManagedRuntime backed by CrossSpawnSpawner.defaultLayer and the shared memoMap, since LSP.spawn callbacks execute inside Effect.promise blocks. Other Process.run/text/lines call sites are renamed to the *Promise variants and otherwise left untouched for follow-up migrations.
18 lines
710 B
TypeScript
18 lines
710 B
TypeScript
import path from "path"
|
|
import * as Process from "./process"
|
|
|
|
export async function extractZip(zipPath: string, destDir: string) {
|
|
if (process.platform === "win32") {
|
|
const winZipPath = path.resolve(zipPath)
|
|
const winDestDir = path.resolve(destDir)
|
|
// $global:ProgressPreference suppresses PowerShell's blue progress bar popup
|
|
const cmd = `$global:ProgressPreference = 'SilentlyContinue'; Expand-Archive -Path '${winZipPath}' -DestinationPath '${winDestDir}' -Force`
|
|
await Process.runPromise(["powershell", "-NoProfile", "-NonInteractive", "-Command", cmd])
|
|
return
|
|
}
|
|
|
|
await Process.runPromise(["unzip", "-o", "-q", zipPath, "-d", destDir])
|
|
}
|
|
|
|
export * as Archive from "./archive"
|