New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

packity

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

packity - npm Package Compare versions

Comparing version

to
0.2.0

#!/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 @@

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",