Files
jspm-registry/test/index.js
T

169 lines
3.6 KiB
JavaScript
Raw Normal View History

2015-03-23 05:15:10 -03:00
'use strict';
var util = require('util');
var mout = require('mout');
var colors = require('colors/safe');
2015-03-23 18:35:35 -03:00
var endpoints = {
2015-03-23 05:15:10 -03:00
github: require('jspm-github'),
npm: require('jspm-npm')
};
var forOwn = mout.object.forOwn;
var gray = colors.gray;
2015-03-19 05:11:58 -03:00
var log = require('./lib/log');
var PackageOverrideFile = require('./lib/PackageOverrideFile');
2015-03-24 21:47:19 -03:00
var OverrideFile = require('./lib/OverrideFile');
2015-03-23 18:35:35 -03:00
var OverridesList = require('./lib/OverridesList');
2015-03-23 05:15:10 -03:00
//
// COMMANDER CONFIGURATION
//
2015-03-19 05:11:58 -03:00
var program = require('commander');
program
.version('0.0.1')
.usage('[options] <package ...>')
2015-03-23 05:15:10 -03:00
.option('-e, --only-errors', 'Show only errors', 0)
2015-03-19 05:11:58 -03:00
.parse(process.argv);
2015-03-23 05:15:10 -03:00
//
// LOG HELPERS
//
/**
* @function error - log errors messages
* @param {String|Array} msg
* @return {Function} error
*/
var error = function(msg){
2015-03-26 23:08:35 -03:00
2015-03-23 05:26:04 -03:00
if(!program.onlyErrors)
log.error(msg);
2015-03-23 05:15:10 -03:00
if(Array.isArray(msg)) {
2015-03-26 23:08:35 -03:00
error.summary = error.summary.concat(msg);
2015-03-23 05:15:10 -03:00
} else {
error.summary.push(msg);
}
return error;
};
/**
* @type {Array} list all errors
*/
error.summary = [];
/**
* function ok - log validation passed messages
* @param {String|Array} msg
* @return {Function} ok
*/
var ok = function(msg){
if(!program.onlyErrors)
log.ok(msg);
return ok;
};
//
// VALIDATION PROCESS
//
2015-03-19 05:11:58 -03:00
/**
* registry.json
*/
2015-03-24 21:47:19 -03:00
var overrideFile = new OverrideFile();
2015-03-19 05:11:58 -03:00
2015-03-26 23:08:35 -03:00
if(overrideFile.hasErrors()) {
2015-03-23 05:15:10 -03:00
// json format errors
2015-03-24 21:47:19 -03:00
error(overrideFile.errors());
2015-03-23 05:15:10 -03:00
} else {
ok('registry.json is valid json');
2015-03-24 21:47:19 -03:00
overrideFile.forEachRegistryEntry(function(pkg, registryEntryName){
2015-03-23 05:15:10 -03:00
// validate specific packages
if(program.args.length) {
2015-03-23 18:35:35 -03:00
var pos = program.args.indexOf(registryEntryName);
2015-03-23 05:15:10 -03:00
2015-03-23 18:35:35 -03:00
if(pos === -1)
2015-03-23 05:15:10 -03:00
return;
// replace for test the package-override
2015-03-23 18:35:35 -03:00
program.args[pos] = pkg.canonical;
2015-03-23 05:15:10 -03:00
}
if(!pkg.endpoint || !pkg.name)
2015-03-23 18:35:35 -03:00
return error( util.format('%s not respects the format {ENDPOINT}:{PACKAGE_NAME}', gray(pkg.canonical)) );
2015-03-23 05:15:10 -03:00
2015-03-23 18:35:35 -03:00
if(!endpoints[pkg.endpoint])
return error( util.format('%s is not valid enpoint', gray(pkg.endpoint)) );
2015-03-23 05:15:10 -03:00
2015-03-23 18:35:35 -03:00
if(!endpoints[pkg.endpoint].packageFormat.test( pkg.name ))
2015-03-23 05:15:10 -03:00
return error( util.format('%s is not valid package name from %s endpoint', gray(pkg.name), gray(pkg.endpoint)) );
2015-03-23 18:35:35 -03:00
ok( util.format('%s => %s', registryEntryName, pkg.canonical) );
2015-03-23 05:15:10 -03:00
});
}
2015-03-19 05:11:58 -03:00
/**
2015-03-23 05:15:10 -03:00
* package overrides files
2015-03-19 05:11:58 -03:00
*/
2015-03-23 18:35:35 -03:00
forOwn(endpoints, function(Endpoint, endpointName){
2015-03-19 05:11:58 -03:00
2015-03-23 18:35:35 -03:00
var overridesList = new OverridesList(endpointName);
2015-03-19 05:11:58 -03:00
2015-03-23 18:35:35 -03:00
overridesList.forEachOverrideFile(function(fileinfo){
2015-03-19 05:11:58 -03:00
2015-03-23 05:15:10 -03:00
if(fileinfo.ext !== 'json')
return error( util.format('%s is not json file', gray(fileinfo.path)) );
if(!fileinfo.packageName || !fileinfo.packageVersion)
return error( util.format('%s not respects the file name format {PACKAGE_NAME}@{PACKAGE_VERSION}.json', gray(fileinfo.path)) );
2015-03-19 05:11:58 -03:00
2015-03-23 18:35:35 -03:00
if(!Endpoint.packageFormat.test( fileinfo.packageName ))
2015-03-23 05:15:10 -03:00
return error( util.format('%s is not valid package name from %s endpoint', gray(fileinfo.packageName), gray(fileinfo.endpoint)) );
2015-03-19 05:11:58 -03:00
2015-03-23 05:15:10 -03:00
// validate specific packages
2015-03-23 18:35:35 -03:00
if(program.args.length && program.args.indexOf(fileinfo.canonicalPackageName) === -1 )
2015-03-23 05:15:10 -03:00
return;
2015-03-19 05:11:58 -03:00
var packageOverrideFile = new PackageOverrideFile(fileinfo.path);
if(packageOverrideFile.hasErrors())
return error( util.format('%s is not valid package override file \n - %s', gray(fileinfo.path), packageOverrideFile.errors().join('\n -')) );
2015-03-23 05:15:10 -03:00
2015-03-23 18:35:35 -03:00
ok( fileinfo.canonicalPackageName + '@' + fileinfo.packageVersion );
2015-03-23 05:15:10 -03:00
});
2015-03-19 05:11:58 -03:00
});
2015-03-23 05:15:10 -03:00
//
// SUMMARY LOG
//
if(error.summary.length) {
2015-03-19 05:11:58 -03:00
log.n()
('Error summary ................')
2015-03-23 05:15:10 -03:00
.error(error.summary)
2015-03-19 05:11:58 -03:00
.n();
process.exit(1);
}
log.n()
2015-03-23 06:38:44 -03:00
('Summary ................')
2015-03-19 05:11:58 -03:00
.ok('excellent!! all is well.')
.n();
process.exit(0);