diff --git a/.gitignore b/.gitignore index 2462588..857cb6b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ static/css/**/*.css static/fonts static/js/libs static/js/templates -projects/**/workspace +data/projects/**/workspace diff --git a/app.js b/app.js index 186d73e..cce4762 100644 --- a/app.js +++ b/app.js @@ -3,6 +3,7 @@ var http = require('http'); var nodeStatic = require('node-static'); var jade = require('jade'); +var path = require('path'); var staticServer = new nodeStatic.Server('./static'); var server = http.createServer(function(req, res, next) { @@ -23,6 +24,8 @@ var socketio = require('socket.io')(server); var dataio = require('./dataio')(socketio); var app = { + // path to root dir (with projects, builds etc) + dir: path.join(process.cwd(), 'data'), server: server, dataio: dataio }; diff --git a/projects/project1/config.json b/data/projects/project1/config.json similarity index 100% rename from projects/project1/config.json rename to data/projects/project1/config.json diff --git a/projects/project2/config.json b/data/projects/project2/config.json similarity index 100% rename from projects/project2/config.json rename to data/projects/project2/config.json diff --git a/resources/projects.js b/resources/projects.js index b08053a..b6316b5 100644 --- a/resources/projects.js +++ b/resources/projects.js @@ -4,39 +4,41 @@ var Steppy = require('twostep').Steppy, _ = require('underscore'), project = require('../lib/project'), Distributor = require('../lib/distributor').Distributor, - db = require('../db'); - -var projects, projectsHash; - -project.loadAll('projects', function(err, loadedProjects) { - if (err) throw err; - projects = loadedProjects; - projectsHash = _(projects).indexBy(function(project) { - return project.config.name; - }); - console.log( - 'Loaded projects: ', - _(projects).chain().pluck('config').pluck('name').value() - ); -}); - -var distributor = new Distributor({ - nodes: [{type: 'local', maxExecutorsCount: 1}], - saveBuild: function(build, callback) { - Steppy( - function() { - db.builds.put(build, this.slot()); - }, - function() { - this.pass(build); - }, - callback - ); - } -}); + db = require('../db'), + path = require('path'); module.exports = function(app) { + var projectsDir = path.join(app.dir, 'projects'), + projects, projectsHash; + + project.loadAll(projectsDir, function(err, loadedProjects) { + if (err) throw err; + projects = loadedProjects; + projectsHash = _(projects).indexBy(function(project) { + return project.config.name; + }); + console.log( + 'Loaded projects: ', + _(projects).chain().pluck('config').pluck('name').value() + ); + }); + + var distributor = new Distributor({ + nodes: [{type: 'local', maxExecutorsCount: 1}], + saveBuild: function(build, callback) { + Steppy( + function() { + db.builds.put(build, this.slot()); + }, + function() { + this.pass(build); + }, + callback + ); + } + }); + distributor.on('buildUpdate', function(build, changes) { var buildsResource = app.dataio.resource('builds');