upgrade command-line-args

This commit is contained in:
Lloyd Brookes
2016-05-29 18:38:12 +01:00
parent 34f245c49d
commit 0eb5998605
3 changed files with 94 additions and 80 deletions

View File

@ -3,6 +3,7 @@
const localWebServer = require('../') const localWebServer = require('../')
const cliOptions = require('../lib/cli-options') const cliOptions = require('../lib/cli-options')
const commandLineArgs = require('command-line-args') const commandLineArgs = require('command-line-args')
const commandLineUsage = require('command-line-usage')
const ansi = require('ansi-escape-sequences') const ansi = require('ansi-escape-sequences')
const loadConfig = require('config-master') const loadConfig = require('config-master')
const path = require('path') const path = require('path')
@ -11,9 +12,9 @@ const arrayify = require('array-back')
const t = require('typical') const t = require('typical')
const flatten = require('reduce-flatten') const flatten = require('reduce-flatten')
const cli = commandLineArgs(cliOptions.definitions) const usage = commandLineUsage(cliOptions.usageData)
const usage = cli.getUsage(cliOptions.usageData)
const stored = loadConfig('local-web-server') const stored = loadConfig('local-web-server')
let options let options
let isHttps = false let isHttps = false
@ -129,7 +130,7 @@ function collectOptions () {
let options = {} let options = {}
/* parse command line args */ /* parse command line args */
options = cli.parse() options = commandLineArgs(cliOptions.definitions)
const builtIn = { const builtIn = {
port: 8000, port: 8000,

View File

@ -1,74 +1,86 @@
module.exports = { exports.definitions = [
definitions: [ {
{ name: 'port', alias: 'p', type: Number, defaultOption: true,
name: 'port', alias: 'p', type: Number, defaultOption: true, description: 'Web server port.', group: 'server'
description: 'Web server port.', group: 'server' },
}, {
{ name: 'directory', alias: 'd', type: String, typeLabel: '[underline]{path}',
name: 'directory', alias: 'd', type: String, typeLabel: '[underline]{path}', description: 'Root directory, defaults to the current directory.', group: 'server'
description: 'Root directory, defaults to the current directory.', group: 'server' },
}, {
{ name: 'log-format', alias: 'f', type: String,
name: 'log-format', alias: 'f', type: String, description: "If a format is supplied an access log is written to stdout. If not, a dynamic statistics view is displayed. Use a preset ('none', 'dev','combined', 'short', 'tiny' or 'logstalgia') or supply a custom format (e.g. ':method -> :url').", group: 'server'
description: "If a format is supplied an access log is written to stdout. If not, a dynamic statistics view is displayed. Use a preset ('none', 'dev','combined', 'short', 'tiny' or 'logstalgia') or supply a custom format (e.g. ':method -> :url').", group: 'server' },
}, {
{ name: 'rewrite', alias: 'r', type: String, multiple: true, typeLabel: '[underline]{expression} ...',
name: 'rewrite', alias: 'r', type: String, multiple: true, typeLabel: '[underline]{expression} ...', description: "A list of URL rewrite rules. For each rule, separate the 'from' and 'to' routes with '->'. Whitespace surrounded the routes is ignored. E.g. '/from -> /to'.", group: 'server'
description: "A list of URL rewrite rules. For each rule, separate the 'from' and 'to' routes with '->'. Whitespace surrounded the routes is ignored. E.g. '/from -> /to'.", group: 'server' },
}, {
{ name: 'spa', alias: 's', type: String, typeLabel: '[underline]{file}',
name: 'spa', alias: 's', type: String, typeLabel: '[underline]{file}', description: 'Path to a Single Page App, e.g. app.html.', group: 'server'
description: 'Path to a Single Page App, e.g. app.html.', group: 'server' },
}, {
{ name: 'compress', alias: 'c', type: Boolean,
name: 'compress', alias: 'c', type: Boolean, description: 'Serve gzip-compressed resources, where applicable.', group: 'server'
description: 'Serve gzip-compressed resources, where applicable.', group: 'server' },
}, {
{ name: 'forbid', alias: 'b', type: String, multiple: true, typeLabel: '[underline]{path} ...',
name: 'forbid', alias: 'b', type: String, multiple: true, typeLabel: '[underline]{path} ...', description: 'A list of forbidden routes.', group: 'server'
description: 'A list of forbidden routes.', group: 'server' },
}, {
{ name: 'no-cache', alias: 'n', type: Boolean,
name: 'no-cache', alias: 'n', type: Boolean, description: 'Disable etag-based caching - forces loading from disk each request.', group: 'server'
description: 'Disable etag-based caching - forces loading from disk each request.', group: 'server' },
}, {
{ name: 'key', type: String, typeLabel: '[underline]{file}', group: 'server',
name: 'key', type: String, typeLabel: '[underline]{file}', group: 'server', description: 'SSL key. Supply along with --cert to launch a https server.'
description: 'SSL key. Supply along with --cert to launch a https server.' },
}, {
{ name: 'cert', type: String, typeLabel: '[underline]{file}', group: 'server',
name: 'cert', type: String, typeLabel: '[underline]{file}', group: 'server', description: 'SSL cert. Supply along with --key to launch a https server.'
description: 'SSL cert. Supply along with --key to launch a https server.' },
}, {
{ name: 'https', type: Boolean, group: 'server',
name: 'https', type: Boolean, group: 'server', description: 'Enable HTTPS using a built-in key and cert, registered to the domain 127.0.0.1.'
description: 'Enable HTTPS using a built-in key and cert, registered to the domain 127.0.0.1.' },
}, {
{ name: 'verbose', type: Boolean,
name: 'verbose', type: Boolean, description: 'Verbose output, useful for debugging.', group: 'server'
description: 'Verbose output, useful for debugging.', group: 'server' },
}, {
{ name: 'help', alias: 'h', type: Boolean,
name: 'help', alias: 'h', type: Boolean, description: 'Print these usage instructions.', group: 'misc'
description: 'Print these usage instructions.', group: 'misc' },
}, {
{ name: 'config', type: Boolean,
name: 'config', type: Boolean, description: 'Print the stored config.', group: 'misc'
description: 'Print the stored config.', group: 'misc' }
} ]
],
usageData: { exports.usageData = [
title: 'local-web-server', {
description: 'A simple web-server for productive front-end development.', header: 'local-web-server',
footer: 'Project home: [underline]{https://github.com/75lb/local-web-server}', content: 'A simple web-server for productive front-end development.'
synopsis: [ },
{
header: 'Synopsis',
content: [
'$ ws [<server options>]', '$ ws [<server options>]',
'$ ws --config', '$ ws --config',
'$ ws --help' '$ ws --help'
], ]
groups: { },
server: 'Server', {
misc: 'Misc' header: 'Server options',
} optionList: exports.definitions,
group: 'server'
},
{
header: 'Misc options',
optionList: exports.definitions,
group: 'misc'
},
{
content: 'Project home: [underline]{https://github.com/75lb/local-web-server}'
} }
} ]

View File

@ -31,27 +31,28 @@
"dependencies": { "dependencies": {
"ansi-escape-sequences": "^2.2.2", "ansi-escape-sequences": "^2.2.2",
"array-back": "^1.0.3", "array-back": "^1.0.3",
"command-line-args": "^2.1.6", "command-line-args": "^3.0.0",
"command-line-usage": "^3.0.1",
"config-master": "^2.0.2", "config-master": "^2.0.2",
"debug": "^2.2.0", "debug": "^2.2.0",
"http-proxy": "^1.13.2", "http-proxy": "^1.13.3",
"kcors": "^1.2.0", "kcors": "^1.2.1",
"koa": "^2.0.0", "koa": "^2.0.0",
"koa-bodyparser": "^3.0.0", "koa-bodyparser": "^3.0.0",
"koa-compose": "^3.1.0", "koa-compose": "^3.1.0",
"koa-compress": "^1.0.9", "koa-compress": "^1.0.9",
"koa-conditional-get": "^1.0.3", "koa-conditional-get": "^1.0.3",
"koa-connect-history-api-fallback": "^0.3.0", "koa-connect-history-api-fallback": "~0.3.0",
"koa-convert": "^1.2.0", "koa-convert": "^1.2.0",
"koa-etag": "^2.1.1", "koa-etag": "^2.1.1",
"koa-json": "^1.1.3", "koa-json": "^1.1.3",
"koa-morgan": "^1.0.1", "koa-morgan": "^1.0.1",
"koa-rewrite": "^2.1.0", "koa-rewrite": "^2.1.0",
"koa-route": "^3", "koa-route": "^3.0.0",
"koa-send": "^3.2.0", "koa-send": "^3.2.0",
"koa-serve-index": "^1.1.1", "koa-serve-index": "^1.1.1",
"koa-static": "^2.0.0", "koa-static": "^2.0.0",
"path-to-regexp": "^1.2.1", "path-to-regexp": "^1.5.0",
"reduce-flatten": "^1.0.0", "reduce-flatten": "^1.0.0",
"stream-log-stats": "^1.1.3", "stream-log-stats": "^1.1.3",
"string-tools": "^1.0.0", "string-tools": "^1.0.0",
@ -60,7 +61,7 @@
}, },
"devDependencies": { "devDependencies": {
"jsdoc-to-markdown": "^1.3.6", "jsdoc-to-markdown": "^1.3.6",
"req-then": "^0.2.4", "req-then": "~0.2.4",
"tape": "^4.5.1" "tape": "^4.5.1"
} }
} }