reserve
Version:
Lightweight http server statically configurable using regular expressions
61 lines (55 loc) • 1.65 kB
JavaScript
const colors = require('./detect/colors')
const { read } = require('./configuration')
const log = require('./log')
const serve = require('./serve')
module.exports = {
Request: require('./mock/Request'),
Response: require('./mock/Response'),
body: require('./body'),
capture: require('./capture'),
check: require('./configuration').check,
interpolate: require('./interpolate'),
log,
mock: require('./mock'),
read,
serve
}
/* istanbul ignore if */ // Only used for command line
if (require.main === module) {
const configurationFileNames = process.argv.reduce((name, parameter) => {
if (parameter === '--config') {
return false
}
if (name === false) {
return parameter
}
return name
}, '') || 'reserve.json'
const verbose = process.argv.includes('--verbose')
const silent = process.argv.includes('--silent')
configurationFileNames.split(',').forEach(configurationFileName => {
read(configurationFileName)
.catch(reason => {
if (verbose) {
console.error(colors.red(reason.toString()))
}
console.warn(colors.yellow(`'${configurationFileName}' not found or invalid, applying defaults`))
return {} // empty configuration will use all defaults
})
.then(configuration => {
let eventEmitter
if (silent) {
eventEmitter = serve(configuration)
} else {
eventEmitter = log(serve(configuration), verbose)
}
eventEmitter.on('ready', () => {
if (process.send) {
process.send('ready')
}
})
})
})
}