SAP / ui5-tooling

An open and modular toolchain to develop state of the art applications based on the UI5 framework
https://sap.github.io/ui5-tooling
Apache License 2.0
468 stars 71 forks source link

[Feature Request]: Allow merging of multiple config files #704

Open jakubledl opened 1 year ago

jakubledl commented 1 year ago

Is your feature request related to a problem? Please describe.

In many projects, including now our own, one sees two or three different YAML configurations for UI5, each doing a different thing (one running with the mockserver middleware, a different one with the fiori local middleware &c.), but all sharing a lot of common information.

Describe the solution you'd like

Suppose I have e.g. ui5.yaml:

specVersion: "2.0"
metadata:
  name: ...
type: application
...

and mockserver.yaml:

server:
  customMiddleware:
    - name: sap-fe-mockserver
      beforeMiddleware: compression
      configuration:
        service:
          ...

I would like to be able to run e.g. ui5 serve --config ui5.yaml --config mockserver.yaml and have the two config files effectively merged into one configuration.

Describe alternatives you've considered

RandomByte commented 1 year ago

Thanks for filing this feature request. Am I understanding it correctly that the two files contain configuration for the same project (the application)?

A ui5.yaml file can contain multiple configurations (e.g. multiple projects, extensions, etc), so we need to be careful which configurations should be merged.

jakubledl commented 1 year ago

Hello @RandomByte, that is correct! I understand further thought needs to be given to the question you mention, when one has multiple documents/configuration in a single document, but perhaps the most straightforward solution could be not to support this case (i.e. return an error when one of the files to be merged contains multiple YAML documents) and only allow merging of single-document files?

matz3 commented 1 year ago

To merge multiple documents, the metadata.name could be used as key to identify the right document. I would at least expect those fields (specVersion, metadata, type) to be mandatory (also to be able to use the schema validation).