properties validation for PackageOverrideFile

This commit is contained in:
Fede Ramirez
2015-03-27 00:21:35 -03:00
parent c5327a20fc
commit ef0b15e318
2 changed files with 62 additions and 4 deletions
+4 -4
View File
@@ -12,7 +12,7 @@ var forOwn = mout.object.forOwn;
var gray = colors.gray; var gray = colors.gray;
var log = require('./lib/log'); var log = require('./lib/log');
var JsonFile = require('./lib/JsonFile'); var PackageOverrideFile = require('./lib/PackageOverrideFile');
var OverrideFile = require('./lib/OverrideFile'); var OverrideFile = require('./lib/OverrideFile');
var OverridesList = require('./lib/OverridesList'); var OverridesList = require('./lib/OverridesList');
@@ -138,9 +138,9 @@ forOwn(endpoints, function(Endpoint, endpointName){
if(program.args.length && program.args.indexOf(fileinfo.canonicalPackageName) === -1 ) if(program.args.length && program.args.indexOf(fileinfo.canonicalPackageName) === -1 )
return; return;
var overrideFile = new JsonFile(fileinfo.path); var packageOverrideFile = new PackageOverrideFile(fileinfo.path);
if(overrideFile.hasErrors()) if(packageOverrideFile.hasErrors())
return error( util.format('%s is not valid json file \n - %s', gray(fileinfo.path), overrideFile.errors().join('\n -')) ); return error( util.format('%s is not valid package override file \n - %s', gray(fileinfo.path), packageOverrideFile.errors().join('\n -')) );
ok( fileinfo.canonicalPackageName + '@' + fileinfo.packageVersion ); ok( fileinfo.canonicalPackageName + '@' + fileinfo.packageVersion );
}); });
+58
View File
@@ -0,0 +1,58 @@
'use strict';
var util = require('util');
var mout = require('mout');
var cyan = require('colors/safe').cyan;
var forEach = mout.array.forEach;
var isEmpty = mout.lang.isEmpty;
var deepClone = mout.lang.deepClone;
var objectUnset = mout.object.unset;
var JsonFile = require('./JsonFile');
var ALLOWED_PROPERTIES = [
'main',
'registry',
'dependencies',
'devDependencies',
'directories.lib',
'directories.dist',
'format',
'map',
'files',
'ignore',
'shim',
'jspmNodeConversion',
'browser'
];
/**
* @constructor PackageOverrideFile
*/
var PackageOverrideFile = module.exports = function PackageOverrideFile(file){
if( !(this instanceof PackageOverrideFile) )
return new PackageOverrideFile();
JsonFile.call(this, file);
if(!this.hasErrors())
{
var notAllowedProperties = deepClone(this._json);
forEach(ALLOWED_PROPERTIES, function(allowedProperty){
objectUnset(notAllowedProperties, allowedProperty);
});
if(isEmpty(notAllowedProperties.directories))
objectUnset(notAllowedProperties, 'directories');
if(!isEmpty(notAllowedProperties))
this.error( this._file + ' contains not allowed properties: \n\t' + cyan( JSON.stringify(notAllowedProperties) ) );
}
};
util.inherits(PackageOverrideFile, JsonFile);