Ei kuvausta

Luis Figueiredo 233cec34fc Added shell-test screenshot 8 vuotta sitten
bundles 4d6757df37 Updating hci 8 vuotta sitten
doc 233cec34fc Added shell-test screenshot 8 vuotta sitten
lib 4d6757df37 Updating hci 8 vuotta sitten
test 4d6757df37 Updating hci 8 vuotta sitten
.gitignore 4219b2a253 test git 8 vuotta sitten
.tern-project f0a151f54d Creating new independent event manager, with context and channels 8 vuotta sitten
README.md 233cec34fc Added shell-test screenshot 8 vuotta sitten
index.js 4d6757df37 Updating hci 8 vuotta sitten
package.json 1f7b7d965d Updated missing packages in package.json 8 vuotta sitten

README.md

hci

Introduction:

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

Usage:

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();

Result of this bundle:
shell-test example

Running examples:

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

Cli bundle list
bundles

Web based bundle listing
bundles