diff --git a/resources/template-js/webapp/manifest.json b/resources/template-js/webapp/manifest.json index f9722d2c..a8dcb47f 100644 --- a/resources/template-js/webapp/manifest.json +++ b/resources/template-js/webapp/manifest.json @@ -18,7 +18,11 @@ "odataVersion": "4.0" } } - }<% } %> + }<% } %>, + "sourceTemplate": { + "id": "@ui5/mcp-server:js", + "version": "<%= mcpServerVersion %>" + } }, "sap.ui": { diff --git a/resources/template-ts/webapp/manifest.json b/resources/template-ts/webapp/manifest.json index 59c4ab67..21b9a160 100644 --- a/resources/template-ts/webapp/manifest.json +++ b/resources/template-ts/webapp/manifest.json @@ -18,7 +18,11 @@ "odataVersion": "4.0" } } - }<% } %> + }<% } %>, + "sourceTemplate": { + "id": "@ui5/mcp-server:ts", + "version": "<%= mcpServerVersion %>" + } }, "sap.ui": { diff --git a/src/tools/create_ui5_app/create_ui5_app.ts b/src/tools/create_ui5_app/create_ui5_app.ts index 3fe4d1a7..280b9689 100644 --- a/src/tools/create_ui5_app/create_ui5_app.ts +++ b/src/tools/create_ui5_app/create_ui5_app.ts @@ -10,7 +10,7 @@ import ODataMetadata from "./ODataMetadata.js"; import {CreateUi5AppParams, CreateUi5AppResult} from "./schema.js"; import {getLogger} from "@ui5/logger"; import {isUi5Framework, Ui5Framework} from "../../utils/ui5Framework.js"; -import {dirExists, InvalidInputError} from "../../utils.js"; +import {dirExists, InvalidInputError, PKG_VERSION} from "../../utils.js"; import isValidUrl from "./isValidUrl.js"; const log = getLogger("tools:create_ui5_app:create_ui5_app"); @@ -230,6 +230,7 @@ The minimum version for ${framework} is ${minFwkVersionToUse}.` qunitCoverageFile: semver.gte(frameworkVersion, "1.113.0") ? "qunit-coverage-istanbul.js" : "qunit-coverage.js", + mcpServerVersion: PKG_VERSION, gte1_98_0: semver.gte(frameworkVersion, "1.98.0"), gte1_100_0: semver.gte(frameworkVersion, "1.100.0"), gte1_104_0: semver.gte(frameworkVersion, "1.104.0"), diff --git a/src/tools/create_ui5_app/templateProcessor.ts b/src/tools/create_ui5_app/templateProcessor.ts index 49107e72..cebf2060 100644 --- a/src/tools/create_ui5_app/templateProcessor.ts +++ b/src/tools/create_ui5_app/templateProcessor.ts @@ -38,6 +38,8 @@ export interface TemplateVars { defaultTheme: string; /** QUnit coverage file - depends on UI5 version */ qunitCoverageFile: string; + /** Version of the MCP server, for source template metadata */ + mcpServerVersion: string; /** Flags for version-specific features */ gte1_98_0: boolean; gte1_100_0: boolean; diff --git a/test/expected/create_ui5_app/com.test.apiapp/webapp/manifest.json b/test/expected/create_ui5_app/com.test.apiapp/webapp/manifest.json index 6f4e9d2c..fb884bca 100644 --- a/test/expected/create_ui5_app/com.test.apiapp/webapp/manifest.json +++ b/test/expected/create_ui5_app/com.test.apiapp/webapp/manifest.json @@ -9,6 +9,10 @@ "description": "{{appDescription}}", "applicationVersion": { "version": "${version}" + }, + "sourceTemplate": { + "id": "@ui5/mcp-server:ts", + "version": "0.0.0-test" } }, diff --git a/test/lib/tools/create_ui5_app/create_ui5_app.integration.ts b/test/lib/tools/create_ui5_app/create_ui5_app.integration.ts index 1067af9f..f0b5a309 100644 --- a/test/lib/tools/create_ui5_app/create_ui5_app.integration.ts +++ b/test/lib/tools/create_ui5_app/create_ui5_app.integration.ts @@ -43,12 +43,15 @@ test.beforeEach(async (t) => { }; t.context.loggerMock = loggerMock; - // Mock the @ui5/logger module + // Mock the @ui5/logger module and PKG_VERSION const {createUi5App} = await esmock("../../../../src/tools/create_ui5_app/create_ui5_app.js", { "@ui5/logger": { getLogger: t.context.sinon.stub().returns(loggerMock), isLogLevelEnabled: t.context.sinon.stub().returns(true), }, + "../../../../src/utils.js": { + PKG_VERSION: "0.0.0-test", + }, }); t.context.createUi5App = createUi5App; diff --git a/test/lib/tools/create_ui5_app/create_ui5_app.ts b/test/lib/tools/create_ui5_app/create_ui5_app.ts index 413ac645..5647f246 100644 --- a/test/lib/tools/create_ui5_app/create_ui5_app.ts +++ b/test/lib/tools/create_ui5_app/create_ui5_app.ts @@ -104,6 +104,7 @@ test.beforeEach(async (t) => { }, "../../../../src/utils.js": { dirExists: t.context.dirExists, + PKG_VERSION: "0.0.0-test", }, }); @@ -175,6 +176,7 @@ test("All parameters", async (t) => { gte1_142_0: false, lt1_110_0: false, lt1_124_0: false, + mcpServerVersion: "0.0.0-test", namespace: "com.test.apiapp", oDataEntitySet: "Products", oDataV4Url: "https://localhost/odata/v4/service/",