move rewrite rules

This commit is contained in:
Lloyd Brookes
2016-06-18 10:37:52 +01:00
parent 6298f693cd
commit fcabd45058
2 changed files with 16 additions and 19 deletions

View File

@ -113,30 +113,12 @@ function collectOptions (mwOptionDefinitions) {
directory: process.cwd()
}, stored, cliOptions.server, cliOptions.middleware, cliOptions.misc)
if (options.rewrite) {
options.rewrite = parseRewriteRules(options.rewrite)
}
// console.error(require('util').inspect(options, { depth: 3, colors: true }))
validateOptions(options)
return options
}
function parseRewriteRules (rules) {
return rules && rules.map(rule => {
if (t.isString(rule)) {
const matches = rule.match(/(\S*)\s*->\s*(\S*)/)
if (!(matches && matches.length >= 3)) throw new Error('Invalid rule: ' + rule)
return {
from: matches[1],
to: matches[2]
}
} else {
return rule
}
})
}
function validateOptions (options) {
if (!t.isNumber(options.port)) {
tool.printError('--port must be numeric')

View File

@ -37,7 +37,7 @@ class MiddlewareStack extends Array {
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'."
},
middleware: function (cliOptions) {
const options = arrayify(cliOptions.rewrite || rewriteRules)
const options = parseRewriteRules(arrayify(cliOptions.rewrite || rewriteRules))
if (options.length) {
return options.map(route => {
if (route.to) {
@ -295,3 +295,18 @@ class MiddlewareStack extends Array {
}
module.exports = MiddlewareStack
function parseRewriteRules (rules) {
return rules && rules.map(rule => {
if (t.isString(rule)) {
const matches = rule.match(/(\S*)\s*->\s*(\S*)/)
if (!(matches && matches.length >= 3)) throw new Error('Invalid rule: ' + rule)
return {
from: matches[1],
to: matches[2]
}
} else {
return rule
}
})
}