#!/usr/bin/env node 'use strict' const path = require('path') const CONFIG = require('./config') const childProcess = require('child_process') const cleanDependencies = require('./lib/clean-dependencies') const deleteMsbuildFromPath = require('./lib/delete-msbuild-from-path') const dependenciesFingerprint = require('./lib/dependencies-fingerprint') const installApm = require('./lib/install-apm') const runApmInstall = require('./lib/run-apm-install') const installScriptDependencies = require('./lib/install-script-dependencies') const verifyMachineRequirements = require('./lib/verify-machine-requirements') process.on('unhandledRejection', function (e) { console.error(e.stack || e) process.exit(1) }) // We can't use yargs until installScriptDependencies() is executed, so... let ci = process.argv.indexOf('--ci') !== -1 if (!ci && process.env.CI === 'true' && process.argv.indexOf('--no-ci') === -1) { console.log('Automatically enabling --ci because CI is set in the environment') ci = true } verifyMachineRequirements() if (dependenciesFingerprint.isOutdated()) { cleanDependencies() } if (process.platform === 'win32') deleteMsbuildFromPath() installScriptDependencies(ci) installApm(ci) childProcess.execFileSync( CONFIG.getApmBinPath(), ['--version'], {stdio: 'inherit'} ) runApmInstall(CONFIG.repositoryRootPath, ci) if (!process.env.CI) { require('colors') const glob = require('glob') const {spawn} = require('child_process') // Install the local core packages in-place so they can be used in dev mode const files = glob.sync(path.join(CONFIG.repositoryRootPath, 'packages/*/package.json')) if (files.length > 0) { console.log('Installing core packages for use in dev mode...') files.forEach(file => { const packageDir = path.dirname(file) process.stdout.write(`Installing packages/${path.basename(packageDir)} `) runApmInstall(path.dirname(file), false, ['inherit', 'pipe', 'inherit']) if (process.platform === 'win32') { return process.stdout.write('done\n'.green) } else { return process.stdout.write('\u2713\n'.green) } }) } } dependenciesFingerprint.write()