From 056ee63354dfb5c3e9c22bd0dd5b6b90e561db78 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Fri, 9 Aug 2019 15:30:35 +0200 Subject: [PATCH 1/2] [POC] Proxy mode: Read ABAP URI configuration from projects --- lib/types/application/ApplicationFormatter.js | 21 ++++++++ lib/types/library/LibraryFormatter.js | 50 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/lib/types/application/ApplicationFormatter.js b/lib/types/application/ApplicationFormatter.js index 61245b474..d2f18de08 100644 --- a/lib/types/application/ApplicationFormatter.js +++ b/lib/types/application/ApplicationFormatter.js @@ -21,6 +21,14 @@ class ApplicationFormatter extends AbstractUi5Formatter { }; project.metadata.namespace = await this.getNamespace(); + + if (project.specVersion === "1.1a") { + try { + project.metadata.abapUri = await this.getAbapUri(); + } catch (err) { + log.warn(err.message); + } + } } /** @@ -71,6 +79,19 @@ class ApplicationFormatter extends AbstractUi5Formatter { return namespace; } + async getAbapUri() { + const {content: manifest} = await this.getManifest(); + + if (manifest["sap.platform.abap"] && manifest["sap.platform.abap"].uri) { + const abapUri = manifest["sap.platform.abap"].uri; + log.verbose(`ABAP URI of project ${this._project.metadata.name} is: ${abapUri}`); + return abapUri; + } else { + throw new Error(`No "sap.platform.abap".uri configuration found in ` + + `manifest.json of project ${this._project.metadata.name}`); + } + } + /** * Reads the projects manifest.json * diff --git a/lib/types/library/LibraryFormatter.js b/lib/types/library/LibraryFormatter.js index 664cb7ce6..022822de9 100644 --- a/lib/types/library/LibraryFormatter.js +++ b/lib/types/library/LibraryFormatter.js @@ -54,6 +54,14 @@ class LibraryFormatter extends AbstractUi5Formatter { // TODO 2.0: Make copyright mandatory and just let the error throw log.verbose(err.message); } + + if (project.specVersion === "1.1a") { + try { + project.metadata.abapUri = await this.getAbapUri(); + } catch (err) { + log.warn(err.message); + } + } } /** @@ -394,6 +402,48 @@ class LibraryFormatter extends AbstractUi5Formatter { }); } + async getAbapUri() { + let abapUri; + // First try manifest.json + try { + const {content: manifest} = await this.getManifest(); + if (manifest["sap.platform.abap"] && manifest["sap.platform.abap"].uri) { + abapUri = manifest["sap.platform.abap"].uri; + } else { + throw new Error(`No "sap.platform.abap".uri configuration found in ` + + `manifest.json of project ${this._project.metadata.name}`); + } + } catch (err) { + log.verbose(`Failed to read ABAP URI configuration from manifest.json for project ` + + `${this._project.metadata.name}: ${err.message}`); + log.verbose(`Falling back to .library file...`); + } + + + // Fallback to .library + try { + const {content: dotLibrary} = await this.getDotLibrary(); + if (dotLibrary && dotLibrary.library && dotLibrary.library.appData && dotLibrary.library.appData.manifest && + dotLibrary.library.appData.manifest["sap.platform.abap"] && + dotLibrary.library.appData.manifest["sap.platform.abap"].uri) { + abapUri = dotLibrary.library.appData.manifest["sap.platform.abap"].uri; + } else { + throw new Error(`No library.appData.manifest."sap.platform.abap".uri configuration found in ` + + `.library of project ${this._project.metadata.name}`); + } + } catch (err) { + log.verbose(`Failed to read ABAP URI configuration from .library for project ` + + `${this._project.metadata.name}: ${err.message}`); + } + + if (!abapUri) { + throw new Error(`Failed to resolve ABAP URI configuration for ` + + `project ${this._project.metadata.name}. Check verbose log for details.`); + } + log.verbose(`ABAP URI of project ${this._project.metadata.name} is: ${abapUri}`); + return abapUri; + } + /** * Validates the project * From 92c4a854a518e068732c0075899d53c1dd870d07 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Tue, 14 Apr 2020 13:41:49 +0200 Subject: [PATCH 2/2] Rename spec version 1.1a to 2.2a --- lib/types/application/ApplicationFormatter.js | 2 +- lib/types/library/LibraryFormatter.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/application/ApplicationFormatter.js b/lib/types/application/ApplicationFormatter.js index d2f18de08..8c1ee7beb 100644 --- a/lib/types/application/ApplicationFormatter.js +++ b/lib/types/application/ApplicationFormatter.js @@ -22,7 +22,7 @@ class ApplicationFormatter extends AbstractUi5Formatter { project.metadata.namespace = await this.getNamespace(); - if (project.specVersion === "1.1a") { + if (project.specVersion === "2.2a") { try { project.metadata.abapUri = await this.getAbapUri(); } catch (err) { diff --git a/lib/types/library/LibraryFormatter.js b/lib/types/library/LibraryFormatter.js index 022822de9..9a6dc51c6 100644 --- a/lib/types/library/LibraryFormatter.js +++ b/lib/types/library/LibraryFormatter.js @@ -55,7 +55,7 @@ class LibraryFormatter extends AbstractUi5Formatter { log.verbose(err.message); } - if (project.specVersion === "1.1a") { + if (project.specVersion === "2.2a") { try { project.metadata.abapUri = await this.getAbapUri(); } catch (err) {