/ script / bootstrap
bootstrap
 1  #!/usr/bin/env node
 2  
 3  'use strict'
 4  
 5  const path = require('path')
 6  const CONFIG = require('./config')
 7  const childProcess = require('child_process')
 8  const cleanDependencies = require('./lib/clean-dependencies')
 9  const deleteMsbuildFromPath = require('./lib/delete-msbuild-from-path')
10  const dependenciesFingerprint = require('./lib/dependencies-fingerprint')
11  const installApm = require('./lib/install-apm')
12  const runApmInstall = require('./lib/run-apm-install')
13  const installScriptDependencies = require('./lib/install-script-dependencies')
14  const verifyMachineRequirements = require('./lib/verify-machine-requirements')
15  
16  process.on('unhandledRejection', function (e) {
17    console.error(e.stack || e)
18    process.exit(1)
19  })
20  
21  // We can't use yargs until installScriptDependencies() is executed, so...
22  let ci = process.argv.indexOf('--ci') !== -1
23  
24  if (!ci && process.env.CI === 'true' && process.argv.indexOf('--no-ci') === -1) {
25    console.log('Automatically enabling --ci because CI is set in the environment')
26    ci = true
27  }
28  
29  verifyMachineRequirements(ci)
30  
31  if (dependenciesFingerprint.isOutdated()) {
32    cleanDependencies()
33  }
34  
35  if (process.platform === 'win32') deleteMsbuildFromPath()
36  
37  installScriptDependencies(ci)
38  installApm(ci)
39  childProcess.execFileSync(
40    CONFIG.getApmBinPath(),
41    ['--version'],
42    {stdio: 'inherit'}
43  )
44  runApmInstall(CONFIG.repositoryRootPath, ci)
45  
46  dependenciesFingerprint.write()