MCPcopy
hub / github.com/desktop/desktop / copyDependencies

Function copyDependencies

script/build.ts:302–426  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

300}
301
302function 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 ),

Callers 1

build.tsFile · 0.85

Calls 5

getProductNameFunction · 0.90
getDistArchitectureFunction · 0.90
filterExternalsFunction · 0.85
copyCopilotDependencyFunction · 0.85
logMethod · 0.45

Tested by

no test coverage detected