1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- var readline = require('readline');
- var log = require('hlogger').createLogger("shell");
- var path = require('path');
- var shellActivator = {
- start(context) {
- this.context = context;
- this.manager = context.manager;
- this.stdout = process.stdout;
- this.registerCommands(context);
- this.cli = readline.createInterface(process.stdin,this.stdout,(str) => this.completer(str));
- this.cli.setPrompt("HCI> ");
-
- this.cli.on('line',(cmd) => {
- if(cmd.length == "") {this.cli.prompt(); return;}
- var args = cmd.split(/\s/);
- context.emit("cmd:" + args[0],args).done(()=> {
- this.cli.prompt();
- });
- });
- this.cli.prompt();
- },
- stop(context) {
- log.info("Closing cli");
- this.cli.close();
- },
- completer(str) {
- var hits = this.manager.listeners
- .filter((v)=> {
- var re = new RegExp("^"+ this.context.name + ":cmd:" +str + ".*");
- if(re.test(v.name)) {
- return v;
- }
- }).map((v) => v.name.split(":")[2] + " ");
- return [hits,str];
- },
- output(str) {
- this.stdout.write(str + "\n");
- },
- registerCommands(context) {
- }
-
- }
- module.exports.bundleActivator = shellActivator;
|