Skip to content

Commit f5821dd

Browse files
committed
fix(scaffolding): skip scaffold when widget directory already exists
1 parent 2cae67f commit f5821dd

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

packages/pluggable-widgets-mcp/src/tools/scaffolding.tools.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
createToolResponse,
1010
type ErrorCode
1111
} from "@/tools/utils/response";
12-
import { access, mkdir } from "node:fs/promises";
12+
import { access, mkdir, stat } from "node:fs/promises";
1313
import { dirname } from "node:path";
1414
import { z } from "zod";
1515
import { isPathAllowed } from "./utils/sandbox";
@@ -139,8 +139,24 @@ async function handleCreateWidget(
139139
const widgetFolder = options.name.charAt(0).toLowerCase() + options.name.slice(1);
140140
const widgetPath = `${outputDir}/${widgetFolder}`;
141141

142-
// Run generator inside outputDir — it creates the widget subfolder
143-
await runWidgetGenerator(options, tracker, outputDir);
142+
// If the widget directory already exists, skip the Yeoman scaffold — the generator
143+
// refuses to run in non-empty directories. The existing scaffold is still valid;
144+
// generate-widget-code will overwrite the source files anyway.
145+
let alreadyExists = false;
146+
try {
147+
await stat(widgetPath);
148+
alreadyExists = true;
149+
} catch {
150+
/* directory doesn't exist yet — proceed with scaffold */
151+
}
152+
153+
if (alreadyExists) {
154+
console.error(`[create-widget] Widget directory already exists at ${widgetPath} — skipping scaffold`);
155+
await tracker.progress(SCAFFOLD_PROGRESS.COMPLETE, "Widget directory already exists — skipping scaffold.");
156+
} else {
157+
// Run generator inside outputDir — it creates the widget subfolder
158+
await runWidgetGenerator(options, tracker, outputDir);
159+
}
144160

145161
console.error(`[create-widget] Widget created successfully at ${widgetPath}`);
146162
await tracker.progress(SCAFFOLD_PROGRESS.COMPLETE, "Widget created successfully!");

0 commit comments

Comments
 (0)