websub-hub-cli
Version:
CLI for the WebSub Hub Server
82 lines (68 loc) • 1.61 kB
JavaScript
const Path = require('path')
const Fs = require('fs')
const Minimist = require('minimist')
const Hub = require('websub-hub')
function stop(code) {
process.exit(code)
}
function start(opts) {
if (opts.help) {
console.log(Fs.readFileSync(Path.join(__dirname, 'help.txt'), 'utf8'))
stop(0)
}
runHub(opts).catch(err => {
console.error(err)
stop(1)
})
}
async function runHub(opts) {
let file = null
try {
file = require(Path.resolve(process.cwd(), opts.file))
} catch (e) {}
const options = {
timeout: opts.timeout,
ws: opts.websocket,
logLevel: opts['log-level'],
mongo: {
url: opts['mongodb-url']
}
}
const hub = new Hub(opts.file ? Object.assign(options, file) : options)
await hub.listen(opts.port, opts.address)
console.log(
`Hub listening on http://localhost:${hub.server.server.address().port}`
)
}
function cli() {
start(
Minimist(process.argv.slice(2), {
integer: ['port', 'timeout'],
boolean: ['websocket'],
string: ['log-level', 'address', 'file', 'mongodb-url', 'name'],
alias: {
port: 'p',
help: 'h',
file: 'f',
timeout: 't',
websocket: 'ws',
address: 'a',
'mongodb-url': 'm',
'log-level': 'l'
},
default: {
port: 3000,
name: 'myHub',
address: '127.0.0.1',
'log-level': 'error',
'mongodb-url': 'mongodb://localhost:27017/hub'
}
})
)
}
if (require.main === module) {
cli()
}
module.exports = { start, stop, runHub, cli }