Files
jspm-registry/test/index.js
T

171 lines
3.5 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');
var registries = {
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');
2015-03-23 05:15:10 -03:00
var JsonFile = require('./lib/JsonFile');
2015-03-19 05:11:58 -03:00
var RegistryFile = require('./lib/RegistryFile');
2015-03-23 05:15:10 -03:00
var RegistryEntryCollection = require('./lib/RegistryEntryCollection');
2015-03-19 05:11:58 -03:00
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-23 05:26:04 -03:00
if(!program.onlyErrors)
log.error(msg);
2015-03-23 05:15:10 -03:00
if(Array.isArray(msg)) {
error.summary.concat(msg);
} 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-23 05:15:10 -03:00
var registryFile = new RegistryFile();
2015-03-19 05:11:58 -03:00
2015-03-23 05:15:10 -03:00
if(registryFile.errors().length) {
// json format errors
error(registryFile.errors());
} else {
ok('registry.json is valid json');
registryFile.forEachPackage(function(pkg, name){
// validate specific packages
if(program.args.length) {
var pos = program.args.indexOf(name);
if(pos === -1)
return;
// replace for test the package-override
program.args[pos] = pkg.value;
}
if(!pkg.endpoint || !pkg.name)
return error( util.format('%s not respects the format {ENDPOINT}:{PACKAGE_NAME}', gray(pkg.value)) );
if(!registries[pkg.endpoint])
return error( util.format('%s is not valid registry', gray(pkg.endpoint)) );
if(!registries[pkg.endpoint].packageFormat.test( pkg.name ))
return error( util.format('%s is not valid package name from %s endpoint', gray(pkg.name), gray(pkg.endpoint)) );
ok( util.format('%s => %s', name, pkg.value) );
});
}
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 05:15:10 -03:00
forOwn(registries, function(endpointPackage, registryName){
2015-03-19 05:11:58 -03:00
2015-03-23 05:15:10 -03:00
var registryEntryCollection = new RegistryEntryCollection(registryName);
2015-03-19 05:11:58 -03:00
2015-03-23 05:15:10 -03:00
registryEntryCollection.forEachFile(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 05:15:10 -03:00
if(!endpointPackage.packageFormat.test( fileinfo.packageName ))
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
if(program.args.length && program.args.indexOf(fileinfo.packageValue) === -1 )
return;
2015-03-19 05:11:58 -03:00
2015-03-23 05:15:10 -03:00
var jsonFile = new JsonFile(fileinfo.path);
if(jsonFile.errors().length)
return error( util.format('%s is not valid json file \n - %s', gray(fileinfo.path), jsonFile.errors().join('\n -')) );
ok( fileinfo.packageValue + '@' + fileinfo.packageVersion );
});
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 05:15:10 -03:00
('errorSummary ................')
2015-03-19 05:11:58 -03:00
.ok('excellent!! all is well.')
.n();
process.exit(0);