0x/lib/validate.js
davidmarkclements 07e8b39ab3 linting
2018-03-14 01:48:58 +01:00

36 lines
953 B
JavaScript

'use strict'
const ajv = require('ajv')()
module.exports = (schema) => {
return validate
function validate (args) {
const privateProps = {
workingDir: {type: 'string'}
}
const valid = ajv.compile({
...schema,
properties: {...schema.properties, ...privateProps}
}
)
if (valid(args)) return
const [{keyword, dataPath, params, message}] = valid.errors
if (keyword === 'type') {
const flag = dataPath.substr(
1,
dataPath[dataPath.length - 1] === ']'
? dataPath.length - 2
: dataPath.length - 1
)
const dashPrefix = flag.length === 1 ? '-' : '--'
throw Error(`The ${dashPrefix}${flag} option ${message}\n`)
}
if (keyword === 'additionalProperties') {
const flag = params.additionalProperty
const dashPrefix = flag.length === 1 ? '-' : '--'
throw Error(`${dashPrefix}${flag} is not a recognized flag\n`)
}
}
}