|  | преди 8 години | |
|---|---|---|
| bundles | преди 8 години | |
| doc | преди 8 години | |
| lib | преди 8 години | |
| test | преди 8 години | |
| .gitignore | преди 9 години | |
| .tern-project | преди 9 години | |
| README.md | преди 8 години | |
| index.js | преди 8 години | |
| package.json | преди 8 години | 
Researching a way to bring java alike OSGi to nodejs for hot swappable modules.
This is not an intention to replace nodejs modules but a way to swap certain areas of the application such as bringing new versions without a restart
Bundle:
A bundle should export bundleStart, or bundleActivator object with start and stop methods
This specific bundle it will receive messages from core-shell bundle, execute a shell command and print output
Placing the bundle in {app path}/bundles/shell-test/index.js
var log = require('hlogger').createLogger('shell-test');
var child = require('child_process');
function bundleStart(context) {
	log.info('Command provider installed');
	// Create a bash and transport commands
	context.events
		.channel('core-shell')
		.after('cmd',(req,res,e) => {   // Subscribe for core-shell cmd messages, after means it will let execute any preexisting shell and if not found it will execute this
			if(e.count != 0) return;
			e.wait();	
			var shcmd = req.cmd + " " + req.args.join(" ");
			var proc = child.exec(shcmd);
			proc.stdout.pipe(res);
			proc.stderr.pipe(process.stderr);
			proc.on('close',function() {
			e.done();
		});			
	});
}
module.exports.bundleStart = bundleStart;
Main app:
var BundleManager = require('node-hci');   // or path to node-hci since is not published in npm yet
// This will load bundles from the {app path}/bundles
var manager = new BundleManager({runPath: __dirname + "/bundles"});
manager.loadDefaultBundles();
git clone http://dev.hexasoftware.com/stdio/node-hci
cd node-hci
npm install
node test/hci-usecase
And monitor bundle should be accessible by http://127.0.0.1:3500/monitor