30 lines
813 B
JavaScript
30 lines
813 B
JavaScript
|
#!/usr/bin/env node
|
|||
|
|
|||
|
const { parseSchema } = require('json-schema-to-zod-with-defaults')
|
|||
|
const { schema } = require('../config.schema.json')
|
|||
|
const { format } = require('prettier')
|
|||
|
const { join, basename } = require('path')
|
|||
|
const prettierConfig = require('../prettier.config')
|
|||
|
const { writeFileSync } = require('fs')
|
|||
|
|
|||
|
const file = join(__dirname, '../src/generated/config_boundary.ts')
|
|||
|
|
|||
|
console.log(`Starting code generation for ${file}`)
|
|||
|
|
|||
|
const zodSchema = parseSchema(schema, true)
|
|||
|
|
|||
|
const code = format(
|
|||
|
`
|
|||
|
// Auto-generated by "${join(basename(__dirname), basename(__filename))}", don’t manually edit
|
|||
|
|
|||
|
import { z } from 'zod'
|
|||
|
|
|||
|
export const ConfigBoundary = ${zodSchema}
|
|||
|
`,
|
|||
|
{ filepath: 'codegen.ts', ...prettierConfig },
|
|||
|
)
|
|||
|
|
|||
|
writeFileSync(file, code)
|
|||
|
|
|||
|
console.log(`Finished code generation for ${file}`)
|