properties validation for PackageOverrideFile
This commit is contained in:
+4
-4
@@ -12,7 +12,7 @@ var forOwn = mout.object.forOwn;
|
||||
var gray = colors.gray;
|
||||
|
||||
var log = require('./lib/log');
|
||||
var JsonFile = require('./lib/JsonFile');
|
||||
var PackageOverrideFile = require('./lib/PackageOverrideFile');
|
||||
var OverrideFile = require('./lib/OverrideFile');
|
||||
var OverridesList = require('./lib/OverridesList');
|
||||
|
||||
@@ -138,9 +138,9 @@ forOwn(endpoints, function(Endpoint, endpointName){
|
||||
if(program.args.length && program.args.indexOf(fileinfo.canonicalPackageName) === -1 )
|
||||
return;
|
||||
|
||||
var overrideFile = new JsonFile(fileinfo.path);
|
||||
if(overrideFile.hasErrors())
|
||||
return error( util.format('%s is not valid json file \n - %s', gray(fileinfo.path), overrideFile.errors().join('\n -')) );
|
||||
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 -')) );
|
||||
|
||||
ok( fileinfo.canonicalPackageName + '@' + fileinfo.packageVersion );
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
Reference in New Issue
Block a user