refactor cli

This commit is contained in:
Lloyd Brookes
2017-06-11 19:26:47 +01:00
parent 498ee868c0
commit d07ef41cd2
5 changed files with 80 additions and 78 deletions

17
lib/cli-app.js Normal file
View File

@ -0,0 +1,17 @@
'use strict'
const LwsCliApp = require('lws/lib/cli-app')
/**
* @alias module:local-web-server
*/
class WsCliApp extends LwsCliApp {
constructor (options) {
super (options)
/* override default serve command */
this.commands.add(null, require('./command/serve'))
/* add feature-list command */
this.commands.add('feature-list', require('./command/feature-list'))
}
}
module.exports = WsCliApp

62
lib/command/serve.js Normal file
View File

@ -0,0 +1,62 @@
const ServeCommand = require('lws/lib/command/serve')
const path = require('path')
/**
* @module local-web-server
*/
class WsServe extends ServeCommand {
execute (options, argv) {
options = {
stack: [
'lws-log',
'lws-cors',
'lws-json',
'lws-rewrite',
'lws-body-parser',
'lws-blacklist',
'lws-conditional-get',
'lws-mime',
'lws-compress',
'lws-mock-response',
'lws-spa',
'lws-static',
'lws-index'
],
moduleDir: path.resolve(__dirname, `../../node_modules`),
modulePrefix: 'lws-'
}
super.execute(options, argv)
}
usage () {
const sections = super.usage()
sections.shift()
sections.shift()
sections.pop()
sections.unshift(
{
header: 'local-web-server',
content: 'A convenient local web server to support productive, full-stack Javascript development.'
},
{
header: 'Synopsis',
content: [
'$ ws <options>',
'$ ws [underline]{command} <options>'
]
}
)
sections.push({
content: 'Project home: [underline]{https://github.com/lwsjs/local-web-server}'
})
return sections
}
showVersion () {
const pkg = require(path.resolve(__dirname, '..', 'package.json'))
console.log(pkg.version)
}
}
module.exports = WsServe

View File

@ -1,77 +0,0 @@
'use strict'
const Lws = require('lws')
const Serve = require('lws/lib/command/serve')
const path = require('path')
/**
* @module local-web-server
*/
class WsServe extends Serve {
execute (options, argv) {
options = {
stack: [
'lws-log',
'lws-cors',
'lws-json',
'lws-rewrite',
'lws-body-parser',
'lws-blacklist',
'lws-conditional-get',
'lws-mime',
'lws-compress',
'lws-mock-response',
'lws-spa',
'lws-static',
'lws-index'
],
moduleDir: path.resolve(__dirname, `../node_modules`),
modulePrefix: 'lws-'
}
super.execute(options, argv)
}
usage () {
const sections = super.usage()
sections.shift()
sections.shift()
sections.pop()
sections.unshift(
{
header: 'local-web-server',
content: 'A convenient local web server to support productive, full-stack Javascript development.'
},
{
header: 'Synopsis',
content: [
'$ ws <options>',
'$ ws [underline]{command} <options>'
]
}
)
sections.push({
content: 'Project home: [underline]{https://github.com/lwsjs/local-web-server}'
})
return sections
}
showVersion () {
const pkg = require(path.resolve(__dirname, '..', 'package.json'))
console.log(pkg.version)
}
}
/**
* @alias module:local-web-server
*/
class LocalWebServer extends Lws {
constructor (options) {
super (options)
/* override default serve command */
this.commands.add(null, WsServe)
/* add feature-list command */
this.commands.add('feature-list', require('./feature-list'))
}
}
module.exports = LocalWebServer