mirror of
https://gitlab.silvrtree.co.uk/martind2000/nci.git
synced 2025-01-25 18:56:16 +00:00
change readers api - involve loaders
This commit is contained in:
parent
91ab584e08
commit
7f74c9b829
13
app.js
13
app.js
@ -7,7 +7,9 @@ var env = process.env.NODE_ENV || 'development',
|
|||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
Steppy = require('twostep').Steppy,
|
Steppy = require('twostep').Steppy,
|
||||||
_ = require('underscore'),
|
_ = require('underscore'),
|
||||||
reader = require('./lib/reader'),
|
Reader = require('./lib/reader').Reader,
|
||||||
|
BaseReaderLoader = require('./lib/reader/loader/base').Loader,
|
||||||
|
JsonReaderLoader = require('./lib/reader/loader/json').Loader,
|
||||||
notifier = require('./lib/notifier'),
|
notifier = require('./lib/notifier'),
|
||||||
ProjectsCollection = require('./lib/project').ProjectsCollection,
|
ProjectsCollection = require('./lib/project').ProjectsCollection,
|
||||||
BuildsCollection = require('./lib/build').BuildsCollection,
|
BuildsCollection = require('./lib/build').BuildsCollection,
|
||||||
@ -19,6 +21,9 @@ var env = process.env.NODE_ENV || 'development',
|
|||||||
var app = new EventEmitter(),
|
var app = new EventEmitter(),
|
||||||
logger = libLogger('app');
|
logger = libLogger('app');
|
||||||
|
|
||||||
|
app.reader = new Reader();
|
||||||
|
app.reader.register('json', JsonReaderLoader);
|
||||||
|
|
||||||
var httpServerLogger = libLogger('http server');
|
var httpServerLogger = libLogger('http server');
|
||||||
|
|
||||||
app.httpServer = httpServer.create();
|
app.httpServer = httpServer.create();
|
||||||
@ -54,7 +59,7 @@ app.httpServer.addRequestListener(function(req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.lib = {};
|
app.lib = {};
|
||||||
app.lib.reader = reader;
|
app.lib.BaseReaderLoader = BaseReaderLoader;
|
||||||
app.lib.notifier = notifier;
|
app.lib.notifier = notifier;
|
||||||
app.lib.logger = libLogger;
|
app.lib.logger = libLogger;
|
||||||
|
|
||||||
@ -174,7 +179,7 @@ Steppy(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
reader.load(app.config.paths.data, 'config', this.slot());
|
app.reader.load(app.config.paths.data, 'config', this.slot());
|
||||||
},
|
},
|
||||||
function(err, mkdirResult, config) {
|
function(err, mkdirResult, config) {
|
||||||
this.pass(mkdirResult);
|
this.pass(mkdirResult);
|
||||||
@ -201,7 +206,7 @@ Steppy(
|
|||||||
function() {
|
function() {
|
||||||
app.projects = new ProjectsCollection({
|
app.projects = new ProjectsCollection({
|
||||||
db: db,
|
db: db,
|
||||||
reader: reader,
|
reader: app.reader,
|
||||||
baseDir: app.config.paths.projects
|
baseDir: app.config.paths.projects
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -3,20 +3,22 @@
|
|||||||
var Steppy = require('twostep').Steppy,
|
var Steppy = require('twostep').Steppy,
|
||||||
_ = require('underscore'),
|
_ = require('underscore'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
path = require('path'),
|
path = require('path');
|
||||||
BaseReader = require('./base').Reader;
|
|
||||||
|
|
||||||
var constructors = {
|
|
||||||
json: require('./json').Reader
|
function Reader() {
|
||||||
|
this.constructors = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.Reader = Reader;
|
||||||
|
|
||||||
|
Reader.prototype.register = function(ext, constructor) {
|
||||||
|
this.constructors[ext] = constructor;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.BaseReader = BaseReader;
|
Reader.prototype.load = function(dir, name, callback) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
exports.register = function(ext, constructor) {
|
|
||||||
constructors[ext] = constructor;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.load = function(dir, name, callback) {
|
|
||||||
Steppy(
|
Steppy(
|
||||||
function() {
|
function() {
|
||||||
fs.readdir(dir, this.slot());
|
fs.readdir(dir, this.slot());
|
||||||
@ -26,19 +28,19 @@ exports.load = function(dir, name, callback) {
|
|||||||
var filePath = _(filePaths).find(function(filePath) {
|
var filePath = _(filePaths).find(function(filePath) {
|
||||||
ext = path.extname(filePath).replace(/^\./, '');
|
ext = path.extname(filePath).replace(/^\./, '');
|
||||||
return (
|
return (
|
||||||
ext in constructors &&
|
ext in self.constructors &&
|
||||||
path.basename(filePath, '.' + ext) === name
|
path.basename(filePath, '.' + ext) === name
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (filePath) {
|
if (filePath) {
|
||||||
var Constructor = constructors[ext],
|
var Constructor = self.constructors[ext],
|
||||||
reader = new Constructor();
|
reader = new Constructor();
|
||||||
reader.load(dir, name, this.slot());
|
reader.load(dir, name, this.slot());
|
||||||
} else {
|
} else {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
'Can`t load "' + name + '" from "' + dir + '" using ' +
|
'Can`t load "' + name + '" from "' + dir + '" using ' +
|
||||||
'readers: ' + _(constructors).keys().join(', ')
|
'readers: ' + _(self.constructors).keys().join(', ')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
var Steppy = require('twostep').Steppy;
|
var Steppy = require('twostep').Steppy;
|
||||||
|
|
||||||
function Reader() {
|
function Loader() {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.Reader = Reader;
|
exports.Loader = Loader;
|
||||||
|
|
||||||
Reader.prototype.load = function(dir, name, callback) {
|
Loader.prototype.load = function(dir, name, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
Steppy(
|
Steppy(
|
||||||
function() {
|
function() {
|
||||||
@ -23,5 +23,5 @@ Reader.prototype.load = function(dir, name, callback) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
Reader.prototype._load = function(dir, name, callback) {
|
Loader.prototype._load = function(dir, name, callback) {
|
||||||
};
|
};
|
@ -2,22 +2,22 @@
|
|||||||
|
|
||||||
var Steppy = require('twostep').Steppy,
|
var Steppy = require('twostep').Steppy,
|
||||||
inherits = require('util').inherits,
|
inherits = require('util').inherits,
|
||||||
ParentReader = require('./base').Reader,
|
ParentLoader = require('./base').Loader,
|
||||||
path = require('path'),
|
path = require('path'),
|
||||||
fs = require('fs');
|
fs = require('fs');
|
||||||
|
|
||||||
|
|
||||||
function Reader() {
|
function Loader() {
|
||||||
ParentReader.call(this);
|
ParentLoader.call(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
inherits(Reader, ParentReader);
|
inherits(Loader, ParentLoader);
|
||||||
|
|
||||||
exports.Reader = Reader;
|
exports.Loader = Loader;
|
||||||
|
|
||||||
Reader.prototype.ext = 'json';
|
Loader.prototype.ext = 'json';
|
||||||
|
|
||||||
Reader.prototype._load = function(dir, name, callback) {
|
Loader.prototype._load = function(dir, name, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
Steppy(
|
Steppy(
|
||||||
function() {
|
function() {
|
@ -56,7 +56,7 @@
|
|||||||
"nci-projects-reloader": "0.1.1",
|
"nci-projects-reloader": "0.1.1",
|
||||||
"nci-rest-api-server": "0.1.1",
|
"nci-rest-api-server": "0.1.1",
|
||||||
"nci-static-server": "0.1.0",
|
"nci-static-server": "0.1.0",
|
||||||
"nci-yaml-reader": "0.1.0",
|
"nci-yaml-reader": "0.2.0",
|
||||||
"nodemon": "1.3.7",
|
"nodemon": "1.3.7",
|
||||||
"nrun": "0.1.4",
|
"nrun": "0.1.4",
|
||||||
"sinon": "1.14.1"
|
"sinon": "1.14.1"
|
||||||
|
Loading…
Reference in New Issue
Block a user