// import { promises } from "fs";
// const { readdir, writeFile } = promises;
// import { dirname, join } from "path";
// import { createGenerator } from "ts-json-schema-generator";

// async function genSchema(path: string, typename: string) {
// 	const gen = createGenerator({
// 		path: path,
// 		type: typename,
// 		tsconfig: "tsconfig.json",
// 	});
// 	const schema = gen.createSchema(typename);
// 	if (schema.definitions != undefined) {
// 		const definitions = schema.definitions;
// 		const definition = definitions[typename];
// 		if (typeof definition == "object") {
// 			let property = definition.properties;
// 			if (property) {
// 				property["$schema"] = {
// 					type: "string",
// 				};
// 			}
// 		}
// 	}
// 	const text = JSON.stringify(schema);
// 	await writeFile(join(dirname(path), `${typename}.schema.json`), text);
// }
// function capitalize(s: string) {
// 	return s.charAt(0).toUpperCase() + s.slice(1);
// }
// async function setToALL(path: string) {
// 	console.log(`scan ${path}`);
// 	const direntry = await readdir(path, { withFileTypes: true });
// 	const works = direntry
// 		.filter((x) => x.isFile() && x.name.endsWith("Config.ts"))
// 		.map((x) => {
// 			const name = x.name;
// 			const m = /(.+)\.ts/.exec(name);
// 			if (m !== null) {
// 				const typename = m[1];
// 				return genSchema(join(path, typename), capitalize(typename));
// 			}
// 		});
// 	await Promise.all(works);
// 	const subdir = direntry.filter((x) => x.isDirectory()).map((x) => x.name);
// 	for (const x of subdir) {
// 		await setToALL(join(path, x));
// 	}
// }
// setToALL("src");