2024-01-27 12:47:30 +02:00
|
|
|
import { z } from "zod";
|
|
|
|
import zodToJsonSchema from "zod-to-json-schema";
|
2024-03-30 12:34:33 +00:00
|
|
|
import { guildPluginInfo } from "./plugins/pluginInfo";
|
2024-01-27 12:47:30 +02:00
|
|
|
import { zZeppelinGuildConfig } from "./types";
|
|
|
|
|
2024-03-30 12:34:33 +00:00
|
|
|
const pluginSchemaMap = Object.entries(guildPluginInfo).reduce((map, [pluginName, pluginInfo]) => {
|
|
|
|
if (pluginInfo.configSchema) {
|
|
|
|
map[pluginName] = pluginInfo.configSchema;
|
2024-01-27 12:47:30 +02:00
|
|
|
}
|
|
|
|
return map;
|
|
|
|
}, {});
|
|
|
|
|
2024-01-27 14:23:13 +02:00
|
|
|
const fullSchema = zZeppelinGuildConfig.omit({ plugins: true }).merge(
|
|
|
|
z.strictObject({
|
2024-01-27 12:47:30 +02:00
|
|
|
plugins: z.strictObject(pluginSchemaMap).partial(),
|
2024-01-27 14:23:13 +02:00
|
|
|
}),
|
|
|
|
);
|
2024-01-27 12:47:30 +02:00
|
|
|
|
|
|
|
const jsonSchema = zodToJsonSchema(fullSchema);
|
|
|
|
|
|
|
|
console.log(JSON.stringify(jsonSchema, null, 2));
|
|
|
|
|
|
|
|
process.exit(0);
|