specpress
Version:
Export PDF and/or DOCX files from a subset of Markdown, ASN.1 and JSON files
48 lines (40 loc) • 1.94 kB
JavaScript
// validate-ran4.js — CLI wrapper for RAN4 JSON validation
//
// Usage: specpress-validate-ran4 [--skip-validation] [--skip-schema] [--no-abort] [--output <file>] <rootFolder>
import { resolve } from 'node:path'
import { loadAndValidateAll, EXIT_CONTENT_ERROR, EXIT_SCHEMA_ERROR } from '../../dist/lib/ran4/ValidateData.js'
import { logger } from '../../dist/lib/ran4/Logger.js'
const args = process.argv.slice(2)
const skipValidation = args.includes('--skip-validation')
const skipSchema = args.includes('--skip-schema')
const noAbort = args.includes('--no-abort')
const outputIdx = args.indexOf('--output')
const outputFile = outputIdx >= 0 ? args[outputIdx + 1] : null
const rootFolder = args.find((a, i) => !a.startsWith('--') && (outputIdx < 0 || i !== outputIdx + 1))
if (!rootFolder) {
console.error('Usage: specpress-validate-ran4 [--skip-validation] [--skip-schema] [--no-abort] [--output <file>] <rootFolder>')
process.exit(1)
}
if (outputFile) await logger.openFile(outputFile)
process.on('uncaughtException', (e) => {
const msg = `${e.name}: ${e.message}`
const code = e.name === 'SchemaValidationException' ? EXIT_SCHEMA_ERROR : EXIT_CONTENT_ERROR
logger.log(msg)
logger.close().then((path) => {
if (path) {
console.error(msg)
console.log(`ValidateData: Output written to '${path}'.`)
}
process.exit(code)
})
})
logger.log(`ValidateData: rootFolder = '${resolve(rootFolder)}'`)
const { exitCode } = loadAndValidateAll(rootFolder, skipValidation, skipSchema, !noAbort)
const schemaStatus = skipSchema ? 'skipped' : 'done'
const validationStatus = skipValidation ? 'skipped' : 'done'
logger.log(`ValidateData: All data loaded. Schema validation: ${schemaStatus}. Content validation: ${validationStatus}. Exit code: ${exitCode}.`)
await logger.close().then((path) => {
if (path) console.log(`ValidateData: Output written to '${path}'.`)
process.exit(exitCode)
})