Skip to content

Commit 0d2c12c

Browse files
authored
@W-21105798 update logic to accout for empty project (#221)
1 parent 3b6acf2 commit 0d2c12c

2 files changed

Lines changed: 25 additions & 11 deletions

File tree

packages/b2c-dx-mcp/src/tools/scapi/scapi-custom-api-scaffold.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,20 @@ export async function executeScaffoldCustomApi(
9898
};
9999
}
100100

101+
const cartridges = findCartridges(projectRoot);
102+
if (cartridges.length === 0) {
103+
return {
104+
scaffold: CUSTOM_API_SCAFFOLD_ID,
105+
outputDir: projectRoot,
106+
dryRun: false,
107+
files: [],
108+
error:
109+
'No cartridges found in project. Custom API scaffold requires an existing cartridge. Create a cartridge first: use `b2c scaffold cartridge --name app_custom`, or manually create a directory with a `.project` file (e.g., cartridges/app_custom/.project).',
110+
};
111+
}
112+
101113
let cartridgeName = args.cartridgeName;
102114
if (!cartridgeName) {
103-
const cartridges = findCartridges(projectRoot);
104-
if (cartridges.length === 0) {
105-
return {
106-
scaffold: CUSTOM_API_SCAFFOLD_ID,
107-
outputDir: projectRoot,
108-
dryRun: false,
109-
files: [],
110-
error:
111-
'No cartridges found in project. Custom API scaffold requires an existing cartridge. Create a cartridge (directory with .project file) first. You can use the `b2c scaffold cartridge` command to create a cartridge.',
112-
};
113-
}
114115
cartridgeName = cartridges[0].name;
115116
}
116117

packages/b2c-dx-mcp/test/tools/scapi/scapi-custom-api-scaffold.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,19 @@ describe('tools/scapi/scapi-custom-api-scaffold', () => {
104104
expect(text).to.include('.project');
105105
});
106106

107+
it('should fail fast with "No cartridges found" when cartridgeName provided but project has no cartridges', async () => {
108+
const tool = createScaffoldCustomApiTool(loadServices);
109+
const result = await tool.handler({
110+
apiName: 'my-api',
111+
cartridgeName: 'app_custom',
112+
});
113+
114+
expect(result.isError).to.be.true;
115+
const text = getResultText(result);
116+
expect(text).to.include('No cartridges found');
117+
expect(text).not.to.include('Parameter validation failed');
118+
});
119+
107120
it('should validate apiName is required', async () => {
108121
const tool = createScaffoldCustomApiTool(loadServices);
109122
const result = await tool.handler({});

0 commit comments

Comments
 (0)