52 lines
1.6 KiB
JavaScript
Executable File
52 lines
1.6 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
var fs = require('fs')
|
|
var cp = require('child_process')
|
|
|
|
var BUILT_IN_DEPS = ['child_process', 'electron', 'fs', 'os', 'path', 'screen']
|
|
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
|
|
function main () {
|
|
if (process.platform === 'win32') {
|
|
console.log('Sorry, check-deps only works on Mac and Linux')
|
|
return
|
|
}
|
|
|
|
var jsDeps = findJSDeps()
|
|
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)
|
|
|
|
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!')
|
|
}
|
|
|
|
// Finds all dependencies, required, optional, or dev, in package.json
|
|
function findPackageDeps () {
|
|
var pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
var requiredDeps = Object.keys(pkg.dependencies)
|
|
var devDeps = Object.keys(pkg.devDependencies)
|
|
var optionalDeps = Object.keys(pkg.optionalDependencies)
|
|
|
|
return [].concat(requiredDeps, devDeps, optionalDeps)
|
|
}
|
|
|
|
// Finds all dependencies required() in the code
|
|
function findJSDeps () {
|
|
var stdout = cp.execSync('./bin/list-deps.sh')
|
|
return stdout.toString().trim().split('\n')
|
|
}
|