diff --git a/bin/check-deps.js b/bin/check-deps.js index 4b3f48ef..6f212295 100755 --- a/bin/check-deps.js +++ b/bin/check-deps.js @@ -3,49 +3,52 @@ var fs = require('fs') var cp = require('child_process') -var BUILT_IN_DEPS = ['child_process', 'electron', 'fs', 'os', 'path', 'screen'] +var BUILT_IN_DEPS = ['child_process', 'electron', 'fs', 'os', 'path'] var EXECUTABLE_DEPS = ['gh-release', 'standard'] main() -// Scans our codebase and package.json for missing or unused dependencies -// Process returns 0 on success, prints a message and returns 1 on failure +// Scans codebase for missing or unused dependencies. Exits with code 0 on success. function main () { if (process.platform === 'win32') { - console.log('Sorry, check-deps only works on Mac and Linux') + console.error('Sorry, check-deps only works on Mac and Linux') return } - var jsDeps = findJSDeps() + var usedDeps = findUsedDeps() var packageDeps = findPackageDeps() - var missingDeps = jsDeps.filter((dep) => - packageDeps.indexOf(dep) < 0 && - BUILT_IN_DEPS.indexOf(dep) < 0) - var unusedDeps = packageDeps.filter((dep) => - jsDeps.indexOf(dep) < 0 && - EXECUTABLE_DEPS.indexOf(dep) < 0) + var missingDeps = usedDeps.filter( + (dep) => !packageDeps.includes(dep) && !BUILT_IN_DEPS.includes(dep) + ) + var unusedDeps = packageDeps.filter( + (dep) => !usedDeps.includes(dep) && !EXECUTABLE_DEPS.includes(dep) + ) - if (missingDeps.length > 0) console.log('Missing package dependencies: ' + missingDeps) - if (unusedDeps.length > 0) console.log('Unused package dependencies: ' + unusedDeps) - - if (missingDeps.length + unusedDeps.length > 0) process.exit(1) - - console.log('Lookin good!') + if (missingDeps.length > 0) { + console.error('Missing package dependencies: ' + missingDeps) + } + if (unusedDeps.length > 0) { + console.error('Unused package dependencies: ' + unusedDeps) + } + if (missingDeps.length + unusedDeps.length > 0) { + process.exitCode = 1 + } } -// Finds all dependencies, required, optional, or dev, in package.json +// Finds all dependencies specified in `package.json` function findPackageDeps () { var pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')) - var requiredDeps = Object.keys(pkg.dependencies) + + var deps = Object.keys(pkg.dependencies) var devDeps = Object.keys(pkg.devDependencies) var optionalDeps = Object.keys(pkg.optionalDependencies) - return [].concat(requiredDeps, devDeps, optionalDeps) + return [].concat(deps, devDeps, optionalDeps) } -// Finds all dependencies required() in the code -function findJSDeps () { +// Finds all dependencies that used with `require()` +function findUsedDeps () { var stdout = cp.execSync('./bin/list-deps.sh') return stdout.toString().trim().split('\n') } diff --git a/bin/cmd.js b/bin/cmd.js index 3723bbb8..e18f3268 100755 --- a/bin/cmd.js +++ b/bin/cmd.js @@ -6,5 +6,5 @@ var path = require('path') var child = cp.spawn(electron, [path.join(__dirname, '..')], {stdio: 'inherit'}) child.on('close', function (code) { - process.exit(code) + process.exitCode = code })