diff --git a/script/lib/backup-node-modules.js b/script/lib/backup-node-modules.js new file mode 100644 index 000000000..f7df0cfec --- /dev/null +++ b/script/lib/backup-node-modules.js @@ -0,0 +1,20 @@ +const fs = require('fs-extra') +const path = require('path') + +module.exports = function(packagePath) { + const nodeModulesPath = path.join(packagePath, 'node_modules') + const nodeModulesBackupPath = path.join(packagePath, 'node_modules.bak') + if (fs.existsSync(nodeModulesBackupPath)) { + throw new Error("Cannot back up " + nodeModulesPath + "; " + nodeModulesBackupPath + " already exists") + } + + fs.copySync(nodeModulesPath, nodeModulesBackupPath) + + return function restoreNodeModules() { + if (!fs.existsSync(nodeModulesBackupPath)) { + throw new Error("Cannot restore " + nodeModulesPath + "; " + nodeModulesBackupPath + " does not exist") + } + fs.removeSync(nodeModulesPath) + fs.renameSync(nodeModulesBackupPath, nodeModulesPath) + } +} diff --git a/script/lib/transpile-packages-with-custom-transpiler-paths.js b/script/lib/transpile-packages-with-custom-transpiler-paths.js index 73f4a0b6e..cc3fce72f 100644 --- a/script/lib/transpile-packages-with-custom-transpiler-paths.js +++ b/script/lib/transpile-packages-with-custom-transpiler-paths.js @@ -6,6 +6,7 @@ const glob = require('glob') const path = require('path') const CONFIG = require('../config') +const backupNodeModules = require('./backup-node-modules') const runApmInstall = require('./run-apm-install') require('colors') @@ -19,9 +20,7 @@ module.exports = function () { const metadata = require(metadataPath) if (metadata.atomTranspilers) { console.log(' transpiling for package '.cyan + packageName.cyan) - const nodeModulesPath = path.join(packagePath, 'node_modules') - const nodeModulesBackupPath = path.join(packagePath, 'node_modules.bak') - fs.copySync(nodeModulesPath, nodeModulesBackupPath) + const restoreNodeModules = backupNodeModules(packagePath) runApmInstall(packagePath) CompileCache.addTranspilerConfigForPath(packagePath, metadata.name, metadata, metadata.atomTranspilers) @@ -30,8 +29,7 @@ module.exports = function () { pathsToCompile.forEach(transpilePath) } - fs.removeSync(nodeModulesPath) - fs.renameSync(nodeModulesBackupPath, nodeModulesPath) + restoreNodeModules() } } } diff --git a/script/test b/script/test index 1b44bab0b..aa940ab27 100755 --- a/script/test +++ b/script/test @@ -11,6 +11,7 @@ const glob = require('glob') const path = require('path') const CONFIG = require('./config') +const backupNodeModules = require('./lib/backup-node-modules') const runApmInstall = require('./lib/run-apm-install') const resourcePath = CONFIG.repositoryRootPath @@ -94,11 +95,7 @@ for (let packageName in CONFIG.appMetadata.packageDependencies) { if (require(pkgJsonPath).atomTestRunner) { console.log(`Installing test runner dependencies for ${packageName}`.bold.green) if (fs.existsSync(nodeModulesPath)) { - fs.copySync(nodeModulesPath, nodeModulesBackupPath) - finalize = () => { - fs.removeSync(nodeModulesPath) - fs.renameSync(nodeModulesBackupPath, nodeModulesPath) - } + finalize = backupNodeModules(repositoryPackagePath) } else { finalize = () => fs.removeSync(nodeModulesPath) }