jsons2avro
Version:
A cli tool to convert jsonSchema to Avro
31 lines (26 loc) • 1.2 kB
JavaScript
const program = require("commander")
const fs = require('fs')
const path = require("path")
const converter = require('jsonschema-avro')
const JSON5 = require('json5')
const mm = require('minimatch')
const rReadDir = require('recursive-readdir')
program
.version(require(path.join(__dirname, 'package.json')).version)
.option('-i, --input <path>', 'Input path (jsonschema)', '.')
.option('-o, --output <path>', 'Output directory (avro json)', './avro')
.parse(process.argv)
const opts = program.opts();
rReadDir(opts.input)
.then((files) => {
const jschemas = files.filter(mm.filter('**.json*', {matchBase: true}))
jschemas.forEach((jschema) => {
let outFile = path.resolve(path.join(opts.output,
(path.basename(jschema).split('.')[0]) + '.avsc').replace(/\\/g, '\\\\'))
console.log(jschema, '=>', outFile)
let _in = JSON5.parse(fs.readFileSync(jschema).toString());
let _out = converter.convert(_in)
fs.writeFileSync(outFile, JSON.stringify(_out, null, 2))
})
}).catch((err) => console.log(err))