UNPKG

@storm-software/workspace-tools

Version:

Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.

77 lines (74 loc) 2.25 kB
import { withRunGenerator } from "./chunk-C76K2E2A.mjs"; import { schemaRegistry, workspaceConfigSchema } from "./chunk-4PKTZSV2.mjs"; import { writeInfo, writeSuccess, writeTrace } from "./chunk-MMA4S6LZ.mjs"; import { findWorkspaceRoot } from "./chunk-3J2CP54B.mjs"; // src/generators/config-schema/generator.ts import { formatFiles, writeJson } from "@nx/devkit"; import * as z from "zod"; async function configSchemaGeneratorFn(tree, options, config) { writeInfo( "\u{1F4E6} Running Storm Workspace Configuration JSON Schema generator", config ); writeTrace( `Determining the Storm Workspace Configuration JSON Schema...`, config ); const jsonSchema = z.toJSONSchema(workspaceConfigSchema, { target: "draft-7", metadata: schemaRegistry }); jsonSchema.$id ??= "https://public.storm-cdn.com/schemas/storm-workspace.schema.json"; jsonSchema.title ??= "Storm Workspace Configuration JSON Schema"; jsonSchema.description ??= "This JSON Schema defines the structure of the Storm Workspace configuration file (`storm-workspace.json`). It is used to validate the configuration file and ensure that it adheres to the expected format."; writeTrace(jsonSchema, config); if (!options.outputFile) { throw new Error( "The `outputFile` option is required. Please specify the output file path." ); } const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll( config?.workspaceRoot ?? findWorkspaceRoot(), options.outputFile.startsWith("./") ? "" : "./" ); writeTrace( `\u{1F4DD} Writing Storm Configuration JSON Schema to "${outputPath}"`, config ); writeJson(tree, outputPath, jsonSchema, { spaces: 2 }); await formatFiles(tree); writeSuccess( "\u{1F680} Storm Configuration JSON Schema creation has completed successfully!", config ); return { success: true }; } var generator_default = withRunGenerator( "Configuration Schema Creator", configSchemaGeneratorFn, { hooks: { applyDefaultOptions: (options) => { options.outputFile ??= "{workspaceRoot}/storm-workspace.schema.json"; return options; } } } ); export { configSchemaGeneratorFn, generator_default };