(first)
| 53 | }); |
| 54 | |
| 55 | async function onChange(first) { |
| 56 | if (first) { |
| 57 | await fs.rm("./build/", { force: true, recursive: true }); |
| 58 | |
| 59 | await exec( |
| 60 | "npm run postinstall --verbose", |
| 61 | path.join(root, "node_modules", "electron") |
| 62 | ); |
| 63 | |
| 64 | await exec("yarn electron-builder install-app-deps", root); |
| 65 | } |
| 66 | |
| 67 | await exec(`yarn run bundle`, root); |
| 68 | await exec(`yarn run build`, root); |
| 69 | |
| 70 | if (await isBundleSame()) { |
| 71 | console.log("Bundle is same. Doing nothing."); |
| 72 | return; |
| 73 | } |
| 74 | |
| 75 | if (first) { |
| 76 | await spawnAndWaitUntil( |
| 77 | ["npm", "run", "start:desktop"], |
| 78 | path.join(__dirname, "..", "..", "web"), |
| 79 | (data) => data.includes("Network: use --host to expose") |
| 80 | ); |
| 81 | } |
| 82 | |
| 83 | if (!first) { |
| 84 | console.log("Restarting...", RESTARTABLE_PROCESSES.length); |
| 85 | await killProcesses(RESTARTABLE_PROCESSES); |
| 86 | } |
| 87 | |
| 88 | execAsync( |
| 89 | "yarn", |
| 90 | ["electron", path.join("build", "electron.js")], |
| 91 | true, |
| 92 | cleanup |
| 93 | ); |
| 94 | } |
| 95 | |
| 96 | function spawnAndWaitUntil(cmd, cwd, predicate) { |
| 97 | return new Promise((resolve) => { |
no test coverage detected