normalize terminology

This commit is contained in:
Fede Ramirez
2015-03-23 18:35:35 -03:00
parent b5333e44fc
commit 9ccd7e11eb
5 changed files with 42 additions and 39 deletions
+7
View File
@@ -0,0 +1,7 @@
# GLOSSARY
- `canonical package name`: is the combination of a `package name` with an `endpoint` (example: `github:components/jquery`).
- `endpoint`: is platform where packets are hosted (`npm` or `github`).
- `override` or `override file`: is a `package.json` override file.
- `package name`: is the name of a package at some endpoint (example: `components/jquery` from `github` endpoint or `d3` from `npm` endpoint).
- `registry entry`: is just the mapping represented in the `registry.json` (example: `"jquery": "github:components/jquery"`).
+19 -21
View File
@@ -3,7 +3,7 @@
var util = require('util'); var util = require('util');
var mout = require('mout'); var mout = require('mout');
var colors = require('colors/safe'); var colors = require('colors/safe');
var registries = { var endpoints = {
github: require('jspm-github'), github: require('jspm-github'),
npm: require('jspm-npm') npm: require('jspm-npm')
}; };
@@ -14,8 +14,7 @@ var gray = colors.gray;
var log = require('./lib/log'); var log = require('./lib/log');
var JsonFile = require('./lib/JsonFile'); var JsonFile = require('./lib/JsonFile');
var RegistryFile = require('./lib/RegistryFile'); var RegistryFile = require('./lib/RegistryFile');
var RegistryEntryCollection = require('./lib/RegistryEntryCollection'); var OverridesList = require('./lib/OverridesList');
// //
// COMMANDER CONFIGURATION // COMMANDER CONFIGURATION
@@ -88,43 +87,42 @@ if(registryFile.errors().length) {
} else { } else {
ok('registry.json is valid json'); ok('registry.json is valid json');
registryFile.forEachPackage(function(pkg, name){ registryFile.forEachRegistryEntry(function(pkg, registryEntryName){
// validate specific packages // validate specific packages
if(program.args.length) { if(program.args.length) {
var pos = program.args.indexOf(name); var pos = program.args.indexOf(registryEntryName);
if(pos === -1) if(pos === -1)
return; return;
// replace for test the package-override // replace for test the package-override
program.args[pos] = pkg.value; program.args[pos] = pkg.canonical;
} }
if(!pkg.endpoint || !pkg.name) if(!pkg.endpoint || !pkg.name)
return error( util.format('%s not respects the format {ENDPOINT}:{PACKAGE_NAME}', gray(pkg.value)) ); return error( util.format('%s not respects the format {ENDPOINT}:{PACKAGE_NAME}', gray(pkg.canonical)) );
if(!registries[pkg.endpoint]) if(!endpoints[pkg.endpoint])
return error( util.format('%s is not valid registry', gray(pkg.endpoint)) ); return error( util.format('%s is not valid enpoint', gray(pkg.endpoint)) );
if(!registries[pkg.endpoint].packageFormat.test( pkg.name )) if(!endpoints[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)) ); 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) ); ok( util.format('%s => %s', registryEntryName, pkg.canonical) );
}); });
} }
/** /**
* package overrides files * package overrides files
*/ */
forOwn(registries, function(endpointPackage, registryName){ forOwn(endpoints, function(Endpoint, endpointName){
var registryEntryCollection = new RegistryEntryCollection(registryName); var overridesList = new OverridesList(endpointName);
registryEntryCollection.forEachFile(function(fileinfo){ overridesList.forEachOverrideFile(function(fileinfo){
if(fileinfo.ext !== 'json') if(fileinfo.ext !== 'json')
return error( util.format('%s is not json file', gray(fileinfo.path)) ); return error( util.format('%s is not json file', gray(fileinfo.path)) );
@@ -132,18 +130,18 @@ forOwn(registries, function(endpointPackage, registryName){
if(!fileinfo.packageName || !fileinfo.packageVersion) if(!fileinfo.packageName || !fileinfo.packageVersion)
return error( util.format('%s not respects the file name format {PACKAGE_NAME}@{PACKAGE_VERSION}.json', gray(fileinfo.path)) ); return error( util.format('%s not respects the file name format {PACKAGE_NAME}@{PACKAGE_VERSION}.json', gray(fileinfo.path)) );
if(!endpointPackage.packageFormat.test( fileinfo.packageName )) if(!Endpoint.packageFormat.test( fileinfo.packageName ))
return error( util.format('%s is not valid package name from %s endpoint', gray(fileinfo.packageName), gray(fileinfo.endpoint)) ); return error( util.format('%s is not valid package name from %s endpoint', gray(fileinfo.packageName), gray(fileinfo.endpoint)) );
// validate specific packages // validate specific packages
if(program.args.length && program.args.indexOf(fileinfo.packageValue) === -1 ) if(program.args.length && program.args.indexOf(fileinfo.canonicalPackageName) === -1 )
return; return;
var jsonFile = new JsonFile(fileinfo.path); var overrideFile = new JsonFile(fileinfo.path);
if(jsonFile.errors().length) if(overrideFile.errors().length)
return error( util.format('%s is not valid json file \n - %s', gray(fileinfo.path), jsonFile.errors().join('\n -')) ); return error( util.format('%s is not valid json file \n - %s', gray(fileinfo.path), overrideFile.errors().join('\n -')) );
ok( fileinfo.packageValue + '@' + fileinfo.packageVersion ); ok( fileinfo.canonicalPackageName + '@' + fileinfo.packageVersion );
}); });
}); });
@@ -8,10 +8,10 @@ var FILE_EXTENSION = /[^.]*$/i;
var PACKAGE_EXPECTATION = /(.*)@(.*).json$/; var PACKAGE_EXPECTATION = /(.*)@(.*).json$/;
/** /**
* @constructor RegistryEntry * @constructor OverridesList
*/ */
var RegistryEntryCollection = module.exports = function RegistryEntry(endpoint){ var OverridesList = module.exports = function OverridesList(endpoint){
this._endpoint = endpoint; this._endpoint = endpoint;
this._basePath = path.resolve('./package-overrides', this._endpoint); this._basePath = path.resolve('./package-overrides', this._endpoint);
@@ -19,7 +19,7 @@ var RegistryEntryCollection = module.exports = function RegistryEntry(endpoint){
}; };
RegistryEntryCollection.prototype.forEachFile = function(fn){ OverridesList.prototype.forEachOverrideFile = function(fn){
forOwn(this._files, function(file, index){ forOwn(this._files, function(file, index){
@@ -29,7 +29,7 @@ RegistryEntryCollection.prototype.forEachFile = function(fn){
var fileinfo = { var fileinfo = {
packageName: undefined, packageName: undefined,
packageVersion: undefined, packageVersion: undefined,
packageValue: undefined, canonicalPackageName: undefined,
file: file, file: file,
endpoint: this._endpoint, endpoint: this._endpoint,
@@ -42,7 +42,7 @@ RegistryEntryCollection.prototype.forEachFile = function(fn){
if (match) { if (match) {
fileinfo.packageName = match[1]; fileinfo.packageName = match[1];
fileinfo.packageVersion = match[2]; fileinfo.packageVersion = match[2];
fileinfo.packageValue = fileinfo.endpoint + ':' + fileinfo.packageName; fileinfo.canonicalPackageName = fileinfo.endpoint + ':' + fileinfo.packageName;
} }
fn.call(this, fileinfo, index); fn.call(this, fileinfo, index);
+8 -10
View File
@@ -3,12 +3,11 @@
var util = require('util'); var util = require('util');
var path = require('path'); var path = require('path');
var JsonFile = require('./JsonFile'); var JsonFile = require('./JsonFile');
var PACKAGE_EXPECTATION = /^([^:\s]*):([^\s]*)$/; var CANONICAL_NAME_EXPECTATION = /^([^:\s]*):([^\s]*)$/;
/** /**
* @constructor RegistryFile * @constructor RegistryFile
*/ */
var RegistryFile = module.exports = function RegistryFile(){ var RegistryFile = module.exports = function RegistryFile(){
if( !(this instanceof RegistryFile) ) if( !(this instanceof RegistryFile) )
@@ -19,30 +18,29 @@ var RegistryFile = module.exports = function RegistryFile(){
util.inherits(RegistryFile, JsonFile); util.inherits(RegistryFile, JsonFile);
RegistryFile.prototype.forEachPackage = function(fn){ RegistryFile.prototype.forEachRegistryEntry = function(fn){
return this.forEach(function(redirection, name){ return this.forEach(function(canonicalPackageName, registryEntryName){
var pkg = {}; var pkg = {};
var match = PACKAGE_EXPECTATION.exec(redirection); var match = CANONICAL_NAME_EXPECTATION.exec(canonicalPackageName);
if (!match) { if (!match) {
pkg = { pkg = {
value: redirection, canonical: canonicalPackageName,
endpoint: undefined, endpoint: undefined,
name: undefined, name: undefined,
}; };
} else { } else {
pkg = { pkg = {
value: match[0], canonical: match[0],
endpoint: match[1], endpoint: match[1],
name: match[2], name: match[2],
}; };
} }
fn.call(this, pkg, name); fn.call(this, pkg, registryEntryName);
}); });
}; };