(state: InstanceState)
| 180 | }; |
| 181 | |
| 182 | const printInstance = (state: InstanceState) => { |
| 183 | for (const [name, url] of Object.entries(state.urls ?? {})) { |
| 184 | console.log(` ${name.padEnd(8)} ${url}`); |
| 185 | } |
| 186 | if (state.admin) console.log(` login ${state.admin.email} / ${state.admin.password}`); |
| 187 | console.log(` log ${state.logFile}`); |
| 188 | }; |
| 189 | |
| 190 | // The detached runner: boots the target, owns it (cloud's emulators live in |
| 191 | // this process), writes the state file, and tears down on SIGTERM. |