(
args: string[],
signal?: AbortSignal,
)
| 106 | } |
| 107 | |
| 108 | private async executeDockerCommand( |
| 109 | args: string[], |
| 110 | signal?: AbortSignal, |
| 111 | ): Promise<{ stdout: string; stderr: string }> { |
| 112 | return new Promise((resolve, reject) => { |
| 113 | const proc = spawn("docker", args, { shell: true }); |
| 114 | |
| 115 | let stdout = ""; |
| 116 | let stderr = ""; |
| 117 | |
| 118 | proc.stdout.on("data", (data) => { |
| 119 | stdout += data.toString(); |
| 120 | }); |
| 121 | |
| 122 | proc.stderr.on("data", (data) => { |
| 123 | stderr += data.toString(); |
| 124 | }); |
| 125 | |
| 126 | proc.on("close", (code) => { |
| 127 | if (code === 0) { |
| 128 | resolve({ stdout, stderr }); |
| 129 | } else { |
| 130 | reject( |
| 131 | new Error(`Docker command failed with code ${code}: ${stderr}`), |
| 132 | ); |
| 133 | } |
| 134 | }); |
| 135 | |
| 136 | if (signal) { |
| 137 | signal.addEventListener("abort", () => { |
| 138 | proc.kill(); |
| 139 | reject(new Error("Docker command was aborted")); |
| 140 | }); |
| 141 | } |
| 142 | }); |
| 143 | } |
| 144 | |
| 145 | async listModels(): Promise<string[]> { |
| 146 | try { |
no test coverage detected