#!/usr/bin/env node | ||
require('colors'); | ||
var program = require('commander'), | ||
pkg = require('../package.json'), | ||
packity = require('../index'), | ||
packity = require('../index'); | ||
log = function () { | ||
console.log.apply(console, arguments); | ||
}; | ||
program | ||
@@ -27,36 +21,3 @@ .version(pkg.version) | ||
options.path = path; | ||
packity(options, function (err, result) { | ||
if (err) { | ||
if (!options.supress) { throw err; } | ||
!options.quiet && log('err! %s'.red, err && err.message || err); | ||
} | ||
var failure = false, | ||
logPackages = !options.quiet && !options.summary; | ||
// banner | ||
!options.quiet && log('%s v%s'.yellow, result.package.name, result.package.version); | ||
Object.keys(result.status).forEach(function (name) { | ||
var stat = result.status[name]; | ||
if (stat.ok) { | ||
logPackages && log(' ✓ '.green + '%s v%s (%s)', name, stat.installed, stat.message); | ||
} | ||
else { | ||
!log.quiet && log(' ✗ %s%s (%s; required v%s)'.red, name, stat.installed ? | ||
(' v' + stat.installed) : '', stat.message, stat.required); | ||
} | ||
!stat.ok && (failure = true); | ||
}); | ||
if (failure) { | ||
!options.quiet && log('not ok.'.red.bold); | ||
!options.exitCode && process.exit(1); | ||
} | ||
else { | ||
!options.quiet && log('ok!'.green.bold); | ||
} | ||
}); | ||
packity(options, packity.cliReporter(options)); | ||
}); | ||
@@ -63,0 +24,0 @@ |
53
index.js
var _ = require('lodash'), | ||
$ = require('async'), | ||
colors = require('colors/safe'), | ||
async = require('async'), | ||
semver = require('semver'), | ||
fs = require('fs'), | ||
format = require('util').format | ||
joinpath = require('path').join, | ||
@@ -11,3 +13,3 @@ resolvepath = require('path').resolve, | ||
GIT_URL = /^git(\+(ssh|https?))?:\/\//i, | ||
GIT_URL_PREFIX = /^[\s\S]+#([\s\S]+)$/, | ||
GIT_URL_PREFIX = /^[\s\S]+#([\s\S]+)async/, | ||
REQUIRED_PACKAGE_DATA = ['name', 'version', 'dependencies', 'devDependencies'], | ||
@@ -30,2 +32,6 @@ MODULE_FOLDER_NAME = 'node_modules', | ||
dev: false | ||
}, | ||
log = function () { | ||
process.stdout.write(format.apply(this, arguments) + '\n'); | ||
}; | ||
@@ -37,3 +43,3 @@ | ||
$.waterfall([ | ||
async.waterfall([ | ||
// prepare options | ||
@@ -78,3 +84,3 @@ function (done) { | ||
$.filter(packageFiles, fs.exists, _.bind(done, this, null, dependencies, package)); | ||
async.filter(packageFiles, fs.exists, _.bind(done, this, null, dependencies, package)); | ||
}, | ||
@@ -84,3 +90,3 @@ | ||
function (dependencies, package, packageFiles, done) { | ||
$.map(packageFiles, function (file, next) { | ||
async.map(packageFiles, function (file, next) { | ||
next(null, _.pick(require(file), REQUIRED_PACKAGE_DATA)); | ||
@@ -131,1 +137,38 @@ }, function (err, modules) { | ||
}; | ||
// add cli parser | ||
module.exports.cliReporter = function (options) { | ||
return function (err, result) { | ||
if (err) { | ||
if (!options.supress) { throw err; } | ||
!options.quiet && log(colors.red('err! %s'), err && err.message || err); | ||
} | ||
var failure = false, | ||
logPackages = !options.quiet && !options.summary; | ||
// banner | ||
!options.quiet && log(colors.yellow('%s v%s'), result.package.name, result.package.version); | ||
_.keys(result.status).forEach(function (name) { | ||
var stat = result.status[name]; | ||
if (stat.ok) { | ||
logPackages && log(colors.green(' ✓ ') + '%s v%s (%s)', name, stat.installed, stat.message); | ||
} | ||
else { | ||
!log.quiet && log(colors.red(' ✗ %s%s (%s; required v%s)'), name, stat.installed ? | ||
(' v' + stat.installed) : '', stat.message, stat.required); | ||
} | ||
!stat.ok && (failure = true); | ||
}); | ||
if (failure) { | ||
!options.quiet && log(colors.bold.red('not ok.')); | ||
!options.exitCode && process.exit(1); | ||
} | ||
else { | ||
!options.quiet && log(colors.bold.green('ok!')); | ||
} | ||
}; | ||
}; |
{ | ||
"name": "packity", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "Sanity test for installed node modules of a package", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -16,3 +16,3 @@ var expect = require('expect.js'); | ||
"name": "packity", | ||
"version": "0.0.0-beta.3", | ||
"version": "0.2.0", | ||
"dependencies": { | ||
@@ -19,0 +19,0 @@ "async": "^1.4.2", |
10523
1.77%7
16.67%206
1.98%