From 2d1b40a9b7a4ee1ac55841170676fd3ddb44347a Mon Sep 17 00:00:00 2001 From: Ben King <9087625+benfdking@users.noreply.github.com> Date: Mon, 11 Aug 2025 17:15:53 +0200 Subject: [PATCH] feat(vscode): adding validation to config --- vscode/extension/src/utilities/config.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/vscode/extension/src/utilities/config.ts b/vscode/extension/src/utilities/config.ts index c8edcd13ce..9a88e24f36 100644 --- a/vscode/extension/src/utilities/config.ts +++ b/vscode/extension/src/utilities/config.ts @@ -6,10 +6,12 @@ import { traceVerbose, traceInfo } from './common/log' import { parse } from 'shell-quote' import { z } from 'zod' -export interface SqlmeshConfiguration { - projectPath: string - lspEntryPoint: string -} +const configSchema = z.object({ + projectPath: z.string(), + lspEntryPoint: z.string(), +}) + +export type SqlmeshConfiguration = z.infer /** * Get the SQLMesh configuration from VS Code settings. @@ -20,10 +22,17 @@ function getSqlmeshConfiguration(): SqlmeshConfiguration { const config = workspace.getConfiguration('sqlmesh') const projectPath = config.get('projectPath', '') const lspEntryPoint = config.get('lspEntrypoint', '') - return { + + const parsed = configSchema.safeParse({ projectPath, lspEntryPoint, + }) + if (!parsed.success) { + throw new Error( + `Invalid sqlmesh configuration: ${JSON.stringify(parsed.error)}`, + ) } + return parsed.data } const stringsArray = z.array(z.string())