Skip to content

Commit

Permalink
Merge pull request #103 from nodecg/v0.5.2
Browse files Browse the repository at this point in the history
v0.5.2
  • Loading branch information
Alex Van Camp committed Feb 27, 2015
2 parents 6d5a288 + 35ae8cf commit e9e2819
Show file tree
Hide file tree
Showing 8 changed files with 391 additions and 273 deletions.
44 changes: 30 additions & 14 deletions lib/bundles/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

var parse = require('./parser.js');
var parse = require('./parser');
var events = require('events');
var watcher = require('./watcher.js');
var fs = require('fs');
Expand All @@ -25,30 +25,46 @@ _bundlesDir.forEach(function(bundleFolderName) {

// Begin parsing each folder. Push each parse promise onto an array.
promises.push(
parse(bundleFolderName)
parse.all(bundleFolderName)
.then(function(bundle) {
if (!bundle) return;
log.trace('Parsed bundle %s', bundle.name);
_bundles.push(bundle);
})
.catch(function(err) {
log.error(err.stack);
})
);
});

// Once all the initial parse promises have been resolved, start up the bundle watcher
Q.all(promises)
.then(function() {
watcher.on('bundleChanged', function (name) {
parse(name)
.then(function(bundle) {
if (bundle) {
log.info('%s was changed, and has been reloaded from disk', name);
exports.add(bundle);
} else {
log.info('%s\'s nodecg.json can no longer be found on disk, ' +
'assuming the bundle has been deleted or moved', name);
exports.remove(name);
}
});
watcher.on('bundleChanged', function (name, changes) {
changes.forEach(function (change) {
var bundle = exports.find(name);
if (!bundle) return;
switch (change) {
case 'npm':
parse.npm(bundle);
break;
case 'bower':
parse.bower(bundle);
break;
case 'dashboard':
parse.panels(bundle);
break;
default:
log.error('Unknown change type %s for bundle %s', change, name);
break;
}
});
});

watcher.on('bundleRemoved', function(name) {
log.info('%s\'s nodecg.json can no longer be found on disk, ' +
'assuming the bundle has been deleted or moved', name);
exports.remove(name);
});

exports.emit('allLoaded', exports.all());
Expand Down
241 changes: 0 additions & 241 deletions lib/bundles/parser.js

This file was deleted.

36 changes: 36 additions & 0 deletions lib/bundles/parser/bower.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict';

var Q = require('q');
var log = require('../../logger/index')('nodecg/lib/bundles/parser/bower');
var fs = require('fs');
var path = require('path');
var exec = require('child_process').exec;
var bower = require('bower');
var util = require('util');

exports = module.exports = function(bundle) {
if (!bundle) return;

var deferred = Q.defer();

// Do nothing if bower.json does not exist
var packagejsonPath = path.join(bundle.dir, 'bower.json');
if (!fs.existsSync(packagejsonPath)) {
log.trace('No Bower dependencies to install for bundle', bundle.name);
deferred.resolve();
return deferred.promise;
}

bower.commands.install(undefined, undefined, { cwd: bundle.dir })
.on('end', function() {
log.trace('Successfully installed Bower dependencies for bundle', bundle.name);
deferred.resolve();
})
.on('error', function(error) {
deferred.reject(new Error(
util.format('[%s] Failed to install Bower dependencies:', bundle.name, error.message)
));
});

return deferred.promise;
};

0 comments on commit e9e2819

Please sign in to comment.