()
| 300 | } |
| 301 | |
| 302 | function copyDependencies() { |
| 303 | const pkg: Package = require(path.join(projectRoot, 'app', 'package.json')) |
| 304 | |
| 305 | const filterExternals = (dependencies: Record<string, string>) => |
| 306 | Object.fromEntries( |
| 307 | Object.entries(dependencies).filter(([k]) => externals.includes(k)) |
| 308 | ) |
| 309 | |
| 310 | // The product name changes depending on whether it's a prod build or dev |
| 311 | // build, so that we can have them running side by side. |
| 312 | pkg.productName = getProductName() |
| 313 | pkg.dependencies = filterExternals(pkg.dependencies) |
| 314 | pkg.devDependencies = |
| 315 | isDevelopmentBuild && pkg.devDependencies |
| 316 | ? filterExternals(pkg.devDependencies) |
| 317 | : {} |
| 318 | |
| 319 | writeFileSync(path.join(outRoot, 'package.json'), JSON.stringify(pkg)) |
| 320 | rmSync(path.resolve(outRoot, 'node_modules'), { |
| 321 | recursive: true, |
| 322 | force: true, |
| 323 | }) |
| 324 | |
| 325 | console.log(' Installing dependencies via yarn…') |
| 326 | cp.execSync('yarn install', { cwd: outRoot, env: process.env }) |
| 327 | |
| 328 | console.log(' Copying desktop-askpass-trampoline…') |
| 329 | const trampolineSource = path.resolve( |
| 330 | projectRoot, |
| 331 | 'app/node_modules/desktop-trampoline/build/Release' |
| 332 | ) |
| 333 | const desktopTrampolineDir = path.resolve(outRoot, 'desktop-trampoline') |
| 334 | const desktopAskpassTrampolineFile = |
| 335 | process.platform === 'win32' |
| 336 | ? 'desktop-askpass-trampoline.exe' |
| 337 | : 'desktop-askpass-trampoline' |
| 338 | |
| 339 | rmSync(desktopTrampolineDir, { recursive: true, force: true }) |
| 340 | mkdirSync(desktopTrampolineDir, { recursive: true }) |
| 341 | cpSync( |
| 342 | path.resolve(trampolineSource, desktopAskpassTrampolineFile), |
| 343 | path.resolve(desktopTrampolineDir, desktopAskpassTrampolineFile), |
| 344 | { recursive: true, verbatimSymlinks: true } |
| 345 | ) |
| 346 | |
| 347 | console.log(' Copying copilot…') |
| 348 | copyCopilotDependency() |
| 349 | |
| 350 | // Dev builds for macOS require a SSH wrapper to use SSH_ASKPASS |
| 351 | if (process.platform === 'darwin' && isDevelopmentBuild) { |
| 352 | console.log(' Copying ssh-wrapper') |
| 353 | const sshWrapperFile = 'ssh-wrapper' |
| 354 | cpSync( |
| 355 | path.resolve( |
| 356 | projectRoot, |
| 357 | 'app/node_modules/desktop-trampoline/build/Release', |
| 358 | sshWrapperFile |
| 359 | ), |
no test coverage detected