mirror of
https://github.com/openstf/stf
synced 2025-10-06 03:50:04 +02:00
87 lines
2.1 KiB
JavaScript
87 lines
2.1 KiB
JavaScript
var readline = require('readline')
|
|
|
|
var zmq = require('zmq')
|
|
var Promise = require('bluebird')
|
|
|
|
var logger = require('../util/logger')
|
|
var tx = require('../util/tx')
|
|
|
|
module.exports = function(options) {
|
|
var log = logger.createLogger('console')
|
|
|
|
// Input
|
|
var sub = zmq.socket('sub')
|
|
sub.subscribe('ALL')
|
|
options.endpoints.sub.forEach(function(endpoint) {
|
|
log.info('SUB connected to %s', endpoint)
|
|
sub.connect(endpoint)
|
|
})
|
|
|
|
// Output
|
|
var push = zmq.socket('push')
|
|
options.endpoints.push.forEach(function(endpoint) {
|
|
log.info('PUSH connected to %s', endpoint)
|
|
push.connect(endpoint)
|
|
})
|
|
|
|
// User input
|
|
var rl = readline.createInterface({
|
|
input: process.stdin
|
|
, output: process.stdout
|
|
})
|
|
rl.setPrompt('stf> ')
|
|
rl.prompt()
|
|
|
|
rl.on('line', function(line) {
|
|
var args = line.trim().split(/\s+/g)
|
|
switch (args.shift()) {
|
|
case 'help':
|
|
console.log()
|
|
console.log('Available commands:')
|
|
console.log()
|
|
console.log(' help - show help')
|
|
console.log()
|
|
rl.prompt()
|
|
break
|
|
case 'ls':
|
|
tx.q(push, sub, 'ALL', ['ls'])
|
|
.timeout(1000)
|
|
.then(function(results) {
|
|
results.forEach(function(result) {
|
|
console.log('%s', result.serial)
|
|
})
|
|
})
|
|
.catch(Promise.TimeoutError, function(err) {
|
|
console.log(err.message)
|
|
})
|
|
.finally(function() {
|
|
rl.prompt()
|
|
})
|
|
break
|
|
case 'shell':
|
|
tx.q(push, sub, 'ALL', ['shell', args.join(' ')])
|
|
.timeout(1000)
|
|
.then(function(results) {
|
|
results.forEach(function(result) {
|
|
console.log('%s: %s', result.serial, result.value.toString().trim())
|
|
})
|
|
})
|
|
.catch(Promise.TimeoutError, function(err) {
|
|
console.log(err.message)
|
|
})
|
|
.finally(function() {
|
|
rl.prompt()
|
|
})
|
|
break
|
|
case 'exit':
|
|
case 'quit':
|
|
process.exit(0)
|
|
break
|
|
default:
|
|
console.log('Unknown command')
|
|
rl.prompt()
|
|
break
|
|
}
|
|
})
|
|
|
|
}
|