@uxf/data-grid
Advanced tools
Comparing version 11.0.0-beta.18 to 11.0.0-beta.19
@@ -11,3 +11,4 @@ const { argv, env } = require("process"); | ||
}) | ||
.option("s", { alias: "source" }) | ||
.option("s", { alias: "schemaDirectory" }) | ||
.option("o", { alias: "outputDirectory" }) | ||
.option("h", { alias: "help", group: "Options" }) | ||
@@ -18,3 +19,3 @@ .strict(false) | ||
try { | ||
const { help, source } = cli.parse(argv.slice(2)); | ||
const { help, schemaDirectory, outputDirectory } = cli.parse(argv.slice(2)); | ||
@@ -25,3 +26,3 @@ if (Boolean(help)) { | ||
await require("./index")(source); | ||
await require("./index")(schemaDirectory, outputDirectory); | ||
} catch (e) { | ||
@@ -28,0 +29,0 @@ console.error(e); |
const { globSync } = require("fast-glob"); | ||
const { readFileSync, writeFileSync } = require("fs"); | ||
const { dirname } = require("path"); | ||
const { readFileSync, writeFileSync, mkdirSync } = require("fs"); | ||
const { dirname, relative, parse, join } = require("path"); | ||
function generateSchemaFile(jsonSchema, directory) { | ||
const schemaTs = `import { Schema } from "@uxf/data-grid"; | ||
import json from "./schema.json"; | ||
function camelize(value) { | ||
return value | ||
.split("-") | ||
.map((word) => word.charAt(0).toUpperCase() + word.slice(1)) | ||
.join(""); | ||
} | ||
export const schema: Schema<any> = json as any;`; | ||
function writeFile(filename, value) { | ||
mkdirSync(dirname(filename), { recursive: true }); | ||
writeFileSync(filename, value); | ||
} | ||
writeFileSync(`${directory}/schema.ts`, schemaTs); | ||
function generateSchemaFile(gridName, schemaRelativeImport) { | ||
return `import { Schema } from "@uxf/data-grid"; | ||
import json from "${schemaRelativeImport}"; | ||
export const dataGridSchema_${camelize(gridName)}: Schema<any> = json as any;`; | ||
} | ||
function generate(jsonSchema, filename) { | ||
const directory = dirname(filename); | ||
function generate(jsonSchema, filename, outputDirectory) { | ||
const gridName = parse(filename).name; | ||
const generatedPath = join(process.cwd(), outputDirectory, gridName); | ||
generateSchemaFile(jsonSchema, directory); | ||
const generatedSchemaFilename = `${generatedPath}/schema.ts`; | ||
writeFile( | ||
generatedSchemaFilename, | ||
generateSchemaFile(gridName, relative(dirname(generatedSchemaFilename), filename)), | ||
); | ||
} | ||
module.exports = (source) => { | ||
globSync(source) | ||
module.exports = (schemaDirectory, outputDirectory) => { | ||
globSync(schemaDirectory + "/*.json") | ||
.map((path) => process.cwd() + "/" + path) | ||
.forEach((filename) => generate(readFileSync(filename), filename)); | ||
.forEach((filename) => generate(readFileSync(filename), filename, outputDirectory)); | ||
}; |
{ | ||
"name": "@uxf/data-grid", | ||
"version": "11.0.0-beta.18", | ||
"version": "11.0.0-beta.19", | ||
"description": "UXF DataGrid", | ||
@@ -5,0 +5,0 @@ "homepage": "https://gitlab.com/uxf-npm/data-grid#readme", |
169053
3782