Browse Source

upgrade command-line-args

master
Lloyd Brookes 8 years ago
parent
commit
0eb5998605
  1. 7
      bin/cli.js
  2. 152
      lib/cli-options.js
  3. 15
      package.json

7
bin/cli.js

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

152
lib/cli-options.js

@ -1,74 +1,86 @@
module.exports = {
definitions: [
{
name: 'port', alias: 'p', type: Number, defaultOption: true,
description: 'Web server port.', group: 'server'
},
{
name: 'directory', alias: 'd', type: String, typeLabel: '[underline]{path}',
description: 'Root directory, defaults to the current directory.', group: 'server'
},
{
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'
},
{
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'
},
{
name: 'spa', alias: 's', type: String, typeLabel: '[underline]{file}',
description: 'Path to a Single Page App, e.g. app.html.', group: 'server'
},
{
name: 'compress', alias: 'c', type: Boolean,
description: 'Serve gzip-compressed resources, where applicable.', group: 'server'
},
{
name: 'forbid', alias: 'b', type: String, multiple: true, typeLabel: '[underline]{path} ...',
description: 'A list of forbidden routes.', group: 'server'
},
{
name: 'no-cache', alias: 'n', type: Boolean,
description: 'Disable etag-based caching - forces loading from disk each request.', group: 'server'
},
{
name: 'key', type: String, typeLabel: '[underline]{file}', group: 'server',
description: 'SSL key. Supply along with --cert to launch a https server.'
},
{
name: 'cert', type: String, typeLabel: '[underline]{file}', group: 'server',
description: 'SSL cert. Supply along with --key to launch a https 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.'
},
{
name: 'verbose', type: Boolean,
description: 'Verbose output, useful for debugging.', group: 'server'
},
{
name: 'help', alias: 'h', type: Boolean,
description: 'Print these usage instructions.', group: 'misc'
},
{
name: 'config', type: Boolean,
description: 'Print the stored config.', group: 'misc'
}
],
usageData: {
title: 'local-web-server',
description: 'A simple web-server for productive front-end development.',
footer: 'Project home: [underline]{https://github.com/75lb/local-web-server}',
synopsis: [
exports.definitions = [
{
name: 'port', alias: 'p', type: Number, defaultOption: true,
description: 'Web server port.', group: 'server'
},
{
name: 'directory', alias: 'd', type: String, typeLabel: '[underline]{path}',
description: 'Root directory, defaults to the current directory.', group: 'server'
},
{
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'
},
{
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'
},
{
name: 'spa', alias: 's', type: String, typeLabel: '[underline]{file}',
description: 'Path to a Single Page App, e.g. app.html.', group: 'server'
},
{
name: 'compress', alias: 'c', type: Boolean,
description: 'Serve gzip-compressed resources, where applicable.', group: 'server'
},
{
name: 'forbid', alias: 'b', type: String, multiple: true, typeLabel: '[underline]{path} ...',
description: 'A list of forbidden routes.', group: 'server'
},
{
name: 'no-cache', alias: 'n', type: Boolean,
description: 'Disable etag-based caching - forces loading from disk each request.', group: 'server'
},
{
name: 'key', type: String, typeLabel: '[underline]{file}', group: 'server',
description: 'SSL key. Supply along with --cert to launch a https server.'
},
{
name: 'cert', type: String, typeLabel: '[underline]{file}', group: 'server',
description: 'SSL cert. Supply along with --key to launch a https 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.'
},
{
name: 'verbose', type: Boolean,
description: 'Verbose output, useful for debugging.', group: 'server'
},
{
name: 'help', alias: 'h', type: Boolean,
description: 'Print these usage instructions.', group: 'misc'
},
{
name: 'config', type: Boolean,
description: 'Print the stored config.', group: 'misc'
}
]
exports.usageData = [
{
header: 'local-web-server',
content: 'A simple web-server for productive front-end development.'
},
{
header: 'Synopsis',
content: [
'$ ws [<server options>]',
'$ ws --config',
'$ 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}'
}
}
]

15
package.json

@ -31,27 +31,28 @@
"dependencies": {
"ansi-escape-sequences": "^2.2.2",
"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",
"debug": "^2.2.0",
"http-proxy": "^1.13.2",
"kcors": "^1.2.0",
"http-proxy": "^1.13.3",
"kcors": "^1.2.1",
"koa": "^2.0.0",
"koa-bodyparser": "^3.0.0",
"koa-compose": "^3.1.0",
"koa-compress": "^1.0.9",
"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-etag": "^2.1.1",
"koa-json": "^1.1.3",
"koa-morgan": "^1.0.1",
"koa-rewrite": "^2.1.0",
"koa-route": "^3",
"koa-route": "^3.0.0",
"koa-send": "^3.2.0",
"koa-serve-index": "^1.1.1",
"koa-static": "^2.0.0",
"path-to-regexp": "^1.2.1",
"path-to-regexp": "^1.5.0",
"reduce-flatten": "^1.0.0",
"stream-log-stats": "^1.1.3",
"string-tools": "^1.0.0",
@ -60,7 +61,7 @@
},
"devDependencies": {
"jsdoc-to-markdown": "^1.3.6",
"req-then": "^0.2.4",
"req-then": "~0.2.4",
"tape": "^4.5.1"
}
}
Loading…
Cancel
Save