@sap/cds-dk 6.7.2 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/bin/deploy/index.js +1 -1
  3. package/bin/import.js +5 -3
  4. package/bin/login.js +29 -9
  5. package/bin/watch.js +16 -0
  6. package/lib/bind/bindingUtil.js +2 -2
  7. package/lib/bind/userCdsrcJsonStorageProvider.js +1 -1
  8. package/lib/client/auth_manager.js +3 -1
  9. package/lib/client/helper/errors.js +6 -1
  10. package/lib/client/params.js +22 -20
  11. package/lib/client/settings_manager.js +17 -3
  12. package/lib/compile/openapi/csdl2openapi.js +2 -1
  13. package/lib/import/asyncapi/importAsyncAPI.js +32 -0
  14. package/lib/import/asyncapi/index.js +15 -0
  15. package/lib/import/asyncapi/parserContext.js +351 -0
  16. package/lib/import/asyncapi/utils.js +18 -0
  17. package/lib/import/common.js +21 -67
  18. package/lib/import/importapi.js +23 -2
  19. package/lib/import/message.js +11 -1
  20. package/lib/import/odata/index.js +14 -11
  21. package/lib/import/odata/metadataconverter/MetadataConverter.js +35 -35
  22. package/lib/import/odata/util/MultiMap.js +5 -5
  23. package/lib/import/odata/v2parser.js +1 -0
  24. package/lib/import/odata/v4parser.js +1281 -1139
  25. package/lib/init/constants.js +10 -3
  26. package/lib/init/template/_merging/registry-mta.js +33 -36
  27. package/lib/init/template/approuter/files/mtxs-configmap-java.yaml +20 -0
  28. package/lib/init/template/approuter/files/mtxs-configmap-nodejs.yaml +12 -0
  29. package/lib/init/template/approuter/index.js +24 -33
  30. package/lib/init/template/auditlog/files/package.json.hbs +27 -0
  31. package/lib/init/template/auditlog/index.js +12 -6
  32. package/lib/init/template/cf-manifest/index.js +1 -1
  33. package/lib/init/template/connectivity/index.js +1 -1
  34. package/lib/init/template/destinations/index.js +4 -2
  35. package/lib/init/template/enterprise-messaging/files/package.json.hbs +19 -0
  36. package/lib/init/template/enterprise-messaging/index.js +15 -13
  37. package/lib/init/template/enterprise-messaging-shared/files/event-mesh.json.hbs +31 -0
  38. package/lib/init/template/enterprise-messaging-shared/files/mta.yaml.hbs +15 -0
  39. package/lib/init/template/enterprise-messaging-shared/files/package.json.hbs +22 -0
  40. package/lib/init/template/enterprise-messaging-shared/files/values.yaml +7 -0
  41. package/lib/init/template/enterprise-messaging-shared/index.js +51 -0
  42. package/lib/init/template/extensibility/files/package.json.hbs +20 -0
  43. package/lib/init/template/extensibility/index.js +4 -16
  44. package/lib/init/template/file-based-messaging/files/package.json.hbs +19 -0
  45. package/lib/init/template/file-based-messaging/index.js +25 -0
  46. package/lib/init/template/hana/files/package.json.hbs +33 -0
  47. package/lib/init/template/hana/index.js +38 -65
  48. package/lib/init/template/helm/chart/templates/_deployment_helpers.tpl +0 -12
  49. package/lib/init/template/helm/chart/templates/_helpers.tpl +1 -121
  50. package/lib/init/template/helm/index.js +1 -1
  51. package/lib/init/template/html5-repo/index.js +1 -1
  52. package/lib/init/template/java/index.js +2 -2
  53. package/lib/init/template/kibana-logging/files/package.json.hbs +17 -0
  54. package/lib/init/template/kibana-logging/index.js +6 -19
  55. package/lib/init/template/lint/index.js +1 -1
  56. package/lib/init/template/mta/index.js +2 -2
  57. package/lib/init/template/multitenancy/files/mtxs-configmap-java.yaml +3 -5
  58. package/lib/init/template/multitenancy/files/mtxs-configmap-nodejs.yaml +3 -10
  59. package/lib/init/template/multitenancy/files/package.json.hbs +5 -4
  60. package/lib/init/template/multitenancy/index.js +22 -19
  61. package/lib/init/template/nodejs/files/.vscode/launch.json +11 -3
  62. package/lib/init/template/nodejs/index.js +1 -1
  63. package/lib/init/template/pipeline/index.js +1 -1
  64. package/lib/init/template/redis-messaging/files/mta.yaml.hbs +14 -0
  65. package/lib/init/template/redis-messaging/files/package.json.hbs +22 -0
  66. package/lib/init/template/redis-messaging/index.js +50 -0
  67. package/lib/init/template/samples/index.js +3 -3
  68. package/lib/init/template/sqlite/files/package.json.hbs +12 -4
  69. package/lib/init/template/sqlite/index.js +5 -1
  70. package/lib/init/template/toggles/files/package.json.hbs +20 -0
  71. package/lib/init/template/toggles/index.js +3 -9
  72. package/lib/init/template/xsuaa/files/package.json.hbs +28 -0
  73. package/lib/init/template/xsuaa/index.js +8 -23
  74. package/lib/init/util/{md5Tracking.js → md5.js} +1 -1
  75. package/lib/init/util/merge.js +4 -9
  76. package/lib/init/util/{mvnArchetypeUtil.js → mvn.js} +3 -0
  77. package/lib/init/util/projectReader.js +25 -107
  78. package/lib/init/util/xml.js +56 -0
  79. package/lib/lint/checks.js +1 -1
  80. package/lib/lint/io.js +1 -1
  81. package/lib/{init/util/commandUtil.js → util/command.js} +4 -2
  82. package/lib/{init/util/fsUtil.js → util/fs.js} +2 -2
  83. package/npm-shrinkwrap.json +17 -16
  84. package/package.json +5 -4
  85. package/lib/init/template/approuter/files/cds.cdsrc.json +0 -7
  86. package/lib/init/template/approuter/files/cds.cdsrc.json.hbs +0 -9
  87. package/lib/init/template/approuter/files/cds.package.json +0 -9
  88. package/lib/init/template/approuter/files/cds.package.json.hbs +0 -11
  89. package/lib/init/template/auditlog/files/dependencies.package.json +0 -5
  90. package/lib/init/template/enterprise-messaging/files/cds.package.json +0 -9
  91. package/lib/init/template/enterprise-messaging/files/cds.profile.package.json.hbs +0 -11
  92. package/lib/init/template/enterprise-messaging/files/cdsrc.json +0 -7
  93. package/lib/init/template/enterprise-messaging/files/cdsrc.json.hbs +0 -9
  94. package/lib/init/template/extensibility/files/cds.package.json +0 -7
  95. package/lib/init/template/extensibility/files/cds.package.json.hbs +0 -9
  96. package/lib/init/template/extensibility/files/cdsrc.json +0 -5
  97. package/lib/init/template/extensibility/files/cdsrc.json.hbs +0 -7
  98. package/lib/init/template/hana/files/java/cds.json.hbs +0 -7
  99. package/lib/init/template/hana/files/java/cds.profile.json.hbs +0 -12
  100. package/lib/init/template/hana/files/java/cds.shortcut.json.hbs +0 -5
  101. package/lib/init/template/hana/files/java/cds.shortcut.profile.json.hbs +0 -8
  102. package/lib/init/template/hana/files/nodejs/cds.json.hbs +0 -9
  103. package/lib/init/template/hana/files/nodejs/cds.profile.json.hbs +0 -14
  104. package/lib/init/template/hana/files/nodejs/cds.shortcut.json.hbs +0 -7
  105. package/lib/init/template/hana/files/nodejs/cds.shortcut.profile.json.hbs +0 -10
  106. package/lib/init/template/hana/files/nodejs/dependencies.package.json +0 -5
  107. package/lib/init/template/helm/chart/templates/_sapcp_helpers.tpl +0 -103
  108. package/lib/init/template/kibana-logging/files/cds.profile.package.json.hbs +0 -9
  109. package/lib/init/template/toggles/files/cds.package.json +0 -7
  110. package/lib/init/template/toggles/files/cds.package.json.hbs +0 -9
  111. package/lib/init/template/toggles/files/cdsrc.json +0 -5
  112. package/lib/init/template/toggles/files/cdsrc.json.hbs +0 -7
  113. package/lib/init/template/xsuaa/files/cds.cdsrc.json +0 -7
  114. package/lib/init/template/xsuaa/files/cds.cdsrc.json.hbs +0 -9
  115. package/lib/init/template/xsuaa/files/cds.package.json +0 -9
  116. package/lib/init/template/xsuaa/files/cds.package.json.hbs +0 -11
  117. package/lib/init/template/xsuaa/files/dependencies.package.json +0 -6
  118. package/lib/init/util/versionCompare.js +0 -73
  119. /package/lib/init/template/hana/files/{java/db → db}/package.json +0 -0
  120. /package/lib/init/template/hana/files/{common/src → src}/.hdiconfig +0 -0
  121. /package/lib/init/template/hana/files/{common/undeploy.json → undeploy.json} +0 -0
  122. /package/lib/init/util/{templateUtil.js → template.js} +0 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ {{#cap.isNodejs}}
3
+ "dependencies": {
4
+ "@sap/cds-mtxs": "^1"
5
+ },
6
+ "cds": {
7
+ {{/cap.isNodejs}}
8
+ "requires": {
9
+ {{#cap.for}}
10
+ "[{{cap.for}}]": {
11
+ {{/cap.for}}
12
+ "extensibility": true
13
+ {{#cap.for}}
14
+ }
15
+ {{/cap.for}}
16
+ }
17
+ {{#cap.isNodejs}}
18
+ }
19
+ {{/cap.isNodejs}}
20
+ }
@@ -1,5 +1,5 @@
1
1
  const cds = require('../../../cds')
2
- const { read, write, exists } = cds.utils
2
+ const { exists } = cds.utils
3
3
  const { join } = require('path')
4
4
  const { readProject } = require('../../util/projectReader')
5
5
  const { mergeJSON } = require('../../util/merge')
@@ -18,25 +18,13 @@ module.exports = class ExtensibilityTemplate extends require('../templateBase')
18
18
 
19
19
  async run() {
20
20
  const projectDescriptor = await readProject(this.options)
21
- const { for: forProfile, isJava, hasSidecar } = projectDescriptor.cap
22
- const cdsConfigPath = isJava ? '.cdsrc.json' : 'package.json'
23
- const cdsTemplateFile = forProfile ? (isJava ? 'cdsrc.json.hbs' : 'cds.package.json.hbs') : (isJava ? 'cdsrc.json' : 'cds.package.json')
24
- await mergeJSON(cdsConfigPath, join(__dirname, 'files', cdsTemplateFile), projectDescriptor)
25
- if (hasSidecar) {
26
- const out = join('mtx', 'sidecar', 'package.json')
27
- const config = await read(out)
28
- if (!config.cds) config.cds = {}
29
- if (!config.cds.requires) config.cds.requires = {}
30
- if (!('cds.xt.ExtensibilityService' in config.cds.requires)) {
31
- config.cds.requires['cds.xt.ExtensibilityService'] = true
32
- await write(out, config, { spaces: 2 })
33
- }
34
- }
21
+ const { configFile } = projectDescriptor.cap
22
+ await mergeJSON(configFile, join(__dirname, 'files', 'package.json.hbs'), projectDescriptor)
35
23
  await this.runDependentMerging()
36
24
  }
37
25
 
38
26
  async runDependentMerging() {
39
- const projectDescriptor = await readProject()
27
+ const projectDescriptor = await readProject(this.options)
40
28
  const { hasXsuaa, hasApprouter } = projectDescriptor.cap
41
29
  if (hasXsuaa) {
42
30
  await mergeJSON(
@@ -0,0 +1,19 @@
1
+ {
2
+ {{#cap.isNodejs}}
3
+ "cds": {
4
+ {{/cap.isNodejs}}
5
+ "requires": {
6
+ {{#cap.for}}
7
+ "[{{cap.for}}]": {
8
+ {{/cap.for}}
9
+ "messaging": {
10
+ "kind": "file-based-messaging"
11
+ }
12
+ {{#cap.for}}
13
+ }
14
+ {{/cap.for}}
15
+ }
16
+ {{#cap.isNodejs}}
17
+ }
18
+ {{/cap.isNodejs}}
19
+ }
@@ -0,0 +1,25 @@
1
+ const { join } = require('path')
2
+ const cds = require('../../../cds'), { read } = cds.utils
3
+ const { readProject } = require('../../util/projectReader')
4
+ const { mergeJSON } = require('../../util/merge')
5
+
6
+ module.exports = class FileBasedMessagingTemplate extends require('../templateBase') {
7
+
8
+ async canRun() {
9
+ const projectDescriptor = await readProject(this.options)
10
+ const { isJava } = projectDescriptor.cap
11
+ if (isJava) throw `'cds add file-based-messaging' is not available for Java yet`
12
+ return true
13
+ }
14
+
15
+ static hasFacet(env) {
16
+ return env.requires?.messaging?.kind === 'file-based-messaging'
17
+ }
18
+
19
+ async run() {
20
+ const projectDescriptor = await readProject(this.options)
21
+ const { configFile } = projectDescriptor.cap
22
+ projectDescriptor.cap.shortcut = !(await read(configFile)).cds?.requires?.messaging?.kind
23
+ await mergeJSON(configFile, join(__dirname, 'files', 'package.json.hbs'), projectDescriptor)
24
+ }
25
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ {{#cap.isNodejs}}
3
+ "dependencies": {
4
+ "hdb": "^0.19.0"
5
+ },
6
+ "cds": {
7
+ {{/cap.isNodejs}}
8
+ "requires": {
9
+ {{#cap.for}}
10
+ "[{{cap.for}}]": {
11
+ {{#cap.shortcut}}
12
+ "db": "hana-cloud"
13
+ {{/cap.shortcut}}
14
+ {{^cap.shortcut}}
15
+ "db": {
16
+ "kind": "hana-cloud"
17
+ }
18
+ {{/cap.shortcut}}
19
+ },
20
+ {{/cap.for}}
21
+ {{#cap.shortcut}}
22
+ "db": "{{^cap.for}}hana-cloud{{/cap.for}}{{#cap.for}}sql{{/cap.for}}"
23
+ {{/cap.shortcut}}
24
+ {{^cap.shortcut}}
25
+ "db": {
26
+ "kind": "sql"
27
+ }
28
+ {{/cap.shortcut}}
29
+ }
30
+ {{#cap.isNodejs}}
31
+ }
32
+ {{/cap.isNodejs}}
33
+ }
@@ -1,18 +1,17 @@
1
1
  const { join } = require('path');
2
2
  const cds = require('../../../cds')
3
3
  const { read, write, exists, rmdir } = cds.utils
4
- const commandUtil = require('../../util/commandUtil');
5
- const mvnArchetypes = require('../../util/mvnArchetypeUtil');
4
+ const commandUtil = require('../../../util/command');
5
+ const mvnArchetypes = require('../../util/mvn');
6
6
  const term = require('../../../util/term');
7
7
  const { mergeJSON, mergeYAML, removeFromYAML, removeFromYAMLArray } = require('../../util/merge')
8
- const { parseMd5File, writeMd5File } = require('../../util/md5Tracking')
9
- const { copyFiles } = require('../../util/templateUtil')
8
+ const { parseMd5File, writeMd5File } = require('../../util/md5')
9
+ const { copyFiles } = require('../../util/template')
10
10
  const { readProject } = require('../../util/projectReader');
11
- const versionCompare = require('../../util/versionCompare');
12
11
 
13
- const { PROJECT_TYPE, OPTION_JAVA, URLS } = require('../../constants');
12
+ const { OPTION_JAVA, URLS } = require('../../constants');
14
13
 
15
- const { srvNode, srvJava, hdbDeployer, serviceManager, hdiContainer, mtxSidecar4 } = require('../_merging/registry-mta');
14
+ const { srvNode4, srvJava4, hdbDeployer, serviceManager, hdiContainer, mtxSidecar4 } = require('../_merging/registry-mta');
16
15
 
17
16
  module.exports = class HanaTemplate extends require('../templateBase') {
18
17
 
@@ -20,38 +19,44 @@ module.exports = class HanaTemplate extends require('../templateBase') {
20
19
  return env.requires?.db?.kind === 'hana'
21
20
  }
22
21
 
22
+ // REVISIT: Remove with CDS 7
23
23
  async canRun() {
24
24
  const cds = require('../../../cds')
25
- if (versionCompare(cds.version, '5.9.0') < 0) {
25
+ const [major, minor] = cds.version.split('.').map(Number)
26
+ if (major < 5 || major === 5 && minor < 9) {
26
27
  cds.error('The added configuration requires @sap/cds 5.9.0 or higher. Please update @sap/cds to the latest version and run \x1b[1mcds add hana\x1b[0m again.')
27
28
  }
28
29
  return true
29
30
  }
30
31
 
31
32
  async run() {
32
- const env = await this.getEnv();
33
-
34
- const hdiConfigPath = join(env.folders.db, 'src', '.hdiconfig');
35
- const hdiConfigTemplatePath = join(__dirname, 'files', 'common', 'src', '.hdiconfig');
36
- await mergeJSON(hdiConfigPath, hdiConfigTemplatePath);
37
-
38
- const undeployJSONPath = join(env.folders.db, 'undeploy.json');
39
- const undeployJSONTemplatePath = join(__dirname, 'files', 'common', 'undeploy.json');
40
- await mergeJSON(undeployJSONPath, undeployJSONTemplatePath);
41
-
42
- const projectType = this.getProjectType();
43
- switch (projectType) {
44
- case PROJECT_TYPE.java: {
45
- await copyFiles(join(__dirname, 'files', 'java', 'db'), join(env.folders.db), {}, this.options.force);
46
- await this._updatePomXml();
47
- await this._updateCdsConfiguration();
48
- break;
49
- }
50
- case PROJECT_TYPE.nodejs: {
51
- await this._updatePackageJson()
52
- break;
53
- }
54
- default: break;
33
+ const projectDescriptor = await readProject(this.options)
34
+ const { isJava, configFile } = projectDescriptor.cap
35
+ projectDescriptor.cap.shortcut = !(await read(configFile)).cds?.requires?.db?.kind
36
+
37
+ const env = await this.getEnv() // REVISIT: Get info from projectDescriptor
38
+
39
+ // REVISIT: Let cds build generate by default
40
+ const hdiConfigPath = join(env.folders.db, 'src', '.hdiconfig')
41
+ const hdiConfigTemplatePath = join(__dirname, 'files', 'src', '.hdiconfig')
42
+ await mergeJSON(hdiConfigPath, hdiConfigTemplatePath)
43
+
44
+ // REVISIT: Let csd build generate by default
45
+ const undeployJSONPath = join(env.folders.db, 'undeploy.json')
46
+ const undeployJSONTemplatePath = join(__dirname, 'files', 'undeploy.json')
47
+ await mergeJSON(undeployJSONPath, undeployJSONTemplatePath)
48
+
49
+ if (isJava) {
50
+ await copyFiles(join(__dirname, 'files', 'db'), env.folders.db, {}, this.options.force)
51
+ await this._updatePomXml()
52
+ }
53
+
54
+ await mergeJSON(configFile, join(__dirname, 'files', 'package.json.hbs'), projectDescriptor, { forceOverwrite: true })
55
+
56
+ const packageJson = exists('package.json') ? await read('package.json') : undefined
57
+ if (packageJson?.dependencies) {
58
+ delete packageJson.dependencies['@sap/hana-client']
59
+ await write('package.json', packageJson, { spaces: 2 })
55
60
  }
56
61
  await this.runDependentMerging()
57
62
  }
@@ -74,12 +79,9 @@ module.exports = class HanaTemplate extends require('../templateBase') {
74
79
  const projectDescriptor = await readProject(this.options)
75
80
  const { hasMta, hasHelm, hasHtml5Repo, isJava, isMultitenant, srvPath } = projectDescriptor.cap
76
81
 
77
- if (isMultitenant) {
78
- await this._updateCdsConfiguration()
79
- }
80
82
 
81
83
  if (hasMta) {
82
- const srv = (isJava ? srvJava : srvNode)(srvPath)
84
+ const srv = (isJava ? srvJava4 : srvNode4)(srvPath)
83
85
  const db = isMultitenant ? serviceManager : hdiContainer
84
86
  const deletions = isMultitenant ? [{
85
87
  item: hdbDeployer,
@@ -210,6 +212,7 @@ module.exports = class HanaTemplate extends require('../templateBase') {
210
212
  cwd: cds.root
211
213
  });
212
214
  } catch (err) {
215
+ // REVISIT: This should not have to be checked and tested in a facet implementation, move to Maven util
213
216
  if (err.code === 'ENOENT' && err.path === 'mvn') {
214
217
  throw new Error(`Maven executable 'mvn' not found, follow ${term.info(URLS.MAVEN_INSTALL_HELP)} and install Maven on your machine.`);
215
218
  }
@@ -217,34 +220,4 @@ module.exports = class HanaTemplate extends require('../templateBase') {
217
220
  }
218
221
  }
219
222
  }
220
-
221
- async _updatePackageJson() {
222
- const packageJsonPath = join('package.json')
223
- const dependenciesTemplatePath = join(__dirname, 'files', 'nodejs', 'dependencies.package.json');
224
- await mergeJSON(packageJsonPath, dependenciesTemplatePath);
225
-
226
- const packageJson = await read(packageJsonPath);
227
- if ('@sap/hana-client' in packageJson.dependencies) {
228
- delete packageJson.dependencies['@sap/hana-client'];
229
- await write(packageJsonPath, packageJson, { spaces: 2 });
230
- }
231
-
232
- await this._updateCdsConfiguration()
233
- }
234
-
235
- async _updateCdsConfiguration(configPath) {
236
- const projectType = this.getProjectType();
237
- const configFile = projectType === PROJECT_TYPE.nodejs ? 'package.json' : '.cdsrc.json';
238
- configPath = configPath ?? configFile
239
- const projectDescriptor = await readProject(this.options);
240
- const { for: forProfile } = projectDescriptor.cap;
241
- let json; try { json = await read(configPath, 'utf8') } catch { /* ignore */ }
242
- const _cds = projectType === PROJECT_TYPE.nodejs ? json?.cds : json;
243
- const shortcut = typeof _cds?.requires?.db === 'string' || !json ? 'shortcut.' : '';
244
- const profile = forProfile ? 'profile.' : '';
245
- const cdsTemplateFile = `cds.${shortcut}${profile}json.hbs`
246
- const { language } = projectDescriptor.cap;
247
- const cdsTemplatePath = join(__dirname, 'files', language, cdsTemplateFile);
248
- await mergeJSON(configPath, cdsTemplatePath, projectDescriptor, { forceOverwrite: true })
249
- }
250
223
  }
@@ -1,15 +1,3 @@
1
- {{/*
2
- Add custom env variables
3
- */}}
4
- {{- define "cap.env" -}}
5
- {{- if . -}}
6
- {{- range $name, $value := . }}
7
- - name: {{ $name | quote }}
8
- value: {{ $value | quote }}
9
- {{- end -}}
10
- {{- end -}}
11
- {{- end -}}
12
-
13
1
  {{/*
14
2
  Get list of deployment names
15
3
  */}}
@@ -1,24 +1,3 @@
1
- {{/*
2
- Check for mandatory configuration options
3
- */}}
4
- {{- define "cap.expect" -}}
5
- {{- $root := first . -}}
6
- {{- $vars := rest . -}}
7
- {{- range $path := $vars -}}
8
- {{- $var := $root.Values -}}
9
- {{- $segments := regexSplit "\\." $path -1 -}}
10
- {{- $context := (dict "var" $var) -}}
11
- {{- range $segment := $segments -}}
12
- {{- $var := (get $context "var") -}}
13
- {{- $var := get $var $segment -}}
14
- {{- if empty $var -}}
15
- {{- fail (join "" (list "Expect .Values." $path)) -}}
16
- {{- end -}}
17
- {{- $context := set $context "var" $var -}}
18
- {{- end -}}
19
- {{- end -}}
20
- {{- end -}}
21
-
22
1
  {{/*
23
2
  Labels for a component
24
3
  */}}
@@ -33,105 +12,6 @@ app.kubernetes.io/version: {{ .Chart.AppVersion }}
33
12
  {{- end }}
34
13
  {{- end -}}
35
14
 
36
- {{/*
37
- Labels to select a component
38
- */}}
39
- {{- define "cap.selectorLabels" -}}
40
- app.kubernetes.io/name: {{ .name }}
41
- app.kubernetes.io/instance: {{ .Release.Name }}
42
- {{- end -}}
43
-
44
- {{/*
45
- Image
46
- */}}
47
- {{- define "cap.image" -}}
48
- {{- if .image.tag -}}
49
- {{ .image.repository }}:{{ .image.tag }}
50
- {{- else -}}
51
- {{ .image.repository }}
52
- {{- end -}}
53
- {{- end -}}
54
-
55
- {{/*
56
- Image Pull Policy
57
- */}}
58
- {{- define "cap.imagePullPolicy" -}}
59
- {{- if and (.image.tag) (ne .image.tag "latest") -}}
60
- IfNotPresent
61
- {{- else -}}
62
- Always
63
- {{- end -}}
64
- {{- end -}}
65
-
66
- {{/*
67
- Image Pull Secrets
68
- */}}
69
- {{- define "cap.imagePullSecrets" -}}
70
- {{- if (and .Values.global.imagePullSecret .Values.global.imagePullSecret.name) }}
71
- imagePullSecrets:
72
- - name: {{ .Values.global.imagePullSecret.name | quote }}
73
- {{- end -}}
74
- {{- end -}}
75
-
76
- {{/*
77
- Service Instance NEW
78
- ternary dict ($.Files.Get $.service.config | fromJson)
79
- */}}
80
- {{- define "cap.service-instance" -}}
81
- {{- $key := .Template.Name | lower | regexFind "[a-zA-Z0-9_-]+.yaml" | replace ".yaml" "" | replace "-" "_" }}
82
- {{- $service := get .Values $key }}
83
- {{- if $service }}
84
- {{- if or (not (hasKey $service "enabled")) $service.enabled }}
85
- {{- $name := $key | replace "_" "-" }}
86
- {{- $serviceParameters := $service.parameters | default (dict) }}
87
- {{- $configParameters := (dict) }}
88
- {{- if $service.config }}
89
- {{- $configString := $.Files.Get $service.config }}
90
- {{- if not $configString }}
91
- {{- fail (print "Config file " $service.config " not found") }}
92
- {{- end }}
93
- {{- $_ := merge $configParameters (fromJson $configString) }}
94
- {{- end }}
95
- {{- $defaultParameters := $.defaultParameters | default dict }}
96
- {{ $parameters := merge $serviceParameters $configParameters $defaultParameters }}
97
- apiVersion: services.cloud.sap.com/v1alpha1
98
- kind: ServiceInstance
99
- metadata:
100
- name: {{ include "cap.service-instance.serviceInstanceName" (dict "root" . "name" $name "service" $service) }}
101
- namespace: {{ .Release.Namespace }}
102
- labels: {{- include "cap.labels" (merge (dict "name" $name) .) | nindent 4 }}
103
- spec:
104
- serviceOfferingName: {{ $service.serviceOfferingName }}
105
- servicePlanName: {{ $service.servicePlanName }}
106
- externalName: {{ .Release.Namespace }}-{{ include "cap.service-instance.serviceInstanceName" (dict "root" . "name" $name "service" $service) }}
107
- parameters:
108
- {{ toYaml $parameters | indent 4 }}
109
- {{- end -}}
110
- {{- end -}}
111
- {{- end -}}
112
-
113
- {{/*
114
- Service Instance
115
- from web-application helm chart
116
- */}}
117
- {{- define "cap.service-instance.serviceInstanceName" -}}
118
- {{- if .service.fullnameOverride }}
119
- {{- if gt (len .service.fullnameOverride) 63 }}
120
- {{- fail (printf "name exceeds 63 characters: '%s'" .service.fullnameOverride) }}
121
- {{- end }}
122
- {{- .service.fullnameOverride }}
123
- {{- else }}
124
- {{- $name := .name }}
125
- {{- if not (hasPrefix .root.Release.Name $name)}}
126
- {{- $name = printf "%s-%s" .root.Release.Name $name }}
127
- {{- end }}
128
- {{- if gt (len $name) 63 }}
129
- {{- fail (printf "name exceeds 63 characters: '%s'" $name) }}
130
- {{- end }}
131
- {{- $name }}
132
- {{- end }}
133
- {{- end }}
134
-
135
15
  {{/*
136
16
  Saas Registry Parameters
137
17
  */}}
@@ -145,4 +25,4 @@ spec:
145
25
  {{- $_ := set $appUrls "getDependencies" (printf "https://%s%s" $srvHostFull $appUrls.getDependencies) }}
146
26
  {{- $_ := set $appUrls "onSubscription" (printf "https://%s%s" $srvHostFull $appUrls.onSubscription) }}
147
27
  {{- $parameters | mustToJson }}
148
- {{- end }}
28
+ {{- end }}
@@ -2,7 +2,7 @@ const { join } = require('path');
2
2
  const { exists, rimraf } = require('../../../cds').utils;
3
3
  const { readProject } = require('../../util/projectReader');
4
4
  const { mergeYAML } = require('../../util/merge')
5
- const { parseMd5File, writeMd5File, copyAndTrack } = require('../../util/md5Tracking')
5
+ const { parseMd5File, writeMd5File, copyAndTrack } = require('../../util/md5')
6
6
 
7
7
  module.exports = class HelmTemplate extends require('../templateBase') {
8
8
  constructor(generator, oldTrackingData = undefined, newTrackingData = {}) {
@@ -2,7 +2,7 @@ const { join } = require('path')
2
2
  const { exists } = require('../../../cds').utils
3
3
  const { readProject } = require('../../util/projectReader')
4
4
  const { mergeYAML } = require('../../util/merge')
5
- const { copyAndTrack, parseMd5File, writeMd5File } = require('../../util/md5Tracking')
5
+ const { copyAndTrack, parseMd5File, writeMd5File } = require('../../util/md5')
6
6
  const { OPTION_DESTINATIONS } = require('../../constants')
7
7
 
8
8
  module.exports = class Html5RepoTemplate extends require('../templateBase') {
@@ -2,8 +2,8 @@ const fs = require('fs').promises;
2
2
  const os = require('os');
3
3
  const { join, relative } = require('path');
4
4
 
5
- const commandUtil = require('../../util/commandUtil');
6
- const mvnArchetypeUtil = require('../../util/mvnArchetypeUtil');
5
+ const commandUtil = require('../../../util/command');
6
+ const mvnArchetypeUtil = require('../../util/mvn');
7
7
  const term = require('../../../util/term');
8
8
  const cds = require('../../../cds')
9
9
  const { exists, copy } = cds.utils
@@ -0,0 +1,17 @@
1
+ {
2
+ {{#cap.isNodejs}}
3
+ "cds": {
4
+ {{/cap.isNodejs}}
5
+ "features": {
6
+ {{#cap.for}}
7
+ "[{{cap.for}}]": {
8
+ {{/cap.for}}
9
+ "kibana_formatter": true
10
+ {{#cap.for}}
11
+ }
12
+ {{/cap.for}}
13
+ }
14
+ {{#cap.isNodejs}}
15
+ }
16
+ {{/cap.isNodejs}}
17
+ }
@@ -2,8 +2,7 @@ const { join } = require('path')
2
2
  const cds = require('../../../cds')
3
3
  const { readProject } = require('../../util/projectReader')
4
4
  const { mergeJSON, mergeYAML } = require('../../util/merge')
5
- const { PROJECT_TYPE } = require('../../constants')
6
- const { srvNode, srvJava, kibanaLogging } = require('../_merging/registry-mta')
5
+ const { srvNode4, srvJava4, kibanaLogging } = require('../_merging/registry-mta')
7
6
 
8
7
  module.exports = class KibanaLoggingTemplate extends require('../templateBase') {
9
8
 
@@ -17,22 +16,10 @@ module.exports = class KibanaLoggingTemplate extends require('../templateBase')
17
16
  }
18
17
 
19
18
  async run() {
20
- const projectType = this.getProjectType()
21
-
22
- switch (projectType) {
23
- case PROJECT_TYPE.java:
24
- default:
25
- cds.error(`kibana-logging is not implemented for project type '${projectType}' yet`)
26
- // TODO: implement
27
- break
28
- case PROJECT_TYPE.nodejs: {
29
- const projectDescriptor = await readProject(this.options);
30
- const { for: forProfile } = projectDescriptor.cap
31
- const cdsTemplateFile = forProfile ? 'cds.profile.package.json.hbs' : 'cds.package.json'
32
- const cdsTemplatePath = join(__dirname, 'files', cdsTemplateFile)
33
- await mergeJSON('package.json', cdsTemplatePath, projectDescriptor)
34
- }
35
- }
19
+ const projectDescriptor = await readProject(this.options)
20
+ const { isJava } = projectDescriptor.cap
21
+ if (isJava) cds.error(`kibana-logging is not implemented for project type Java yet`)
22
+ await mergeJSON('package.json', join(__dirname, 'files', 'package.json.hbs'), projectDescriptor)
36
23
  await this.runDependentMerging()
37
24
  }
38
25
 
@@ -41,7 +28,7 @@ module.exports = class KibanaLoggingTemplate extends require('../templateBase')
41
28
  const { hasMta, isNodejs, srvPath } = projectDescriptor.cap
42
29
 
43
30
  if (hasMta) {
44
- const srv = (isNodejs ? srvNode : srvJava)(srvPath)
31
+ const srv = (isNodejs ? srvNode4 : srvJava4)(srvPath)
45
32
  await mergeYAML(
46
33
  'mta.yaml',
47
34
  join(__dirname, 'files', 'mta.yaml.hbs'),
@@ -5,7 +5,7 @@ const term = require("../../../util/term");
5
5
  const checks = require("../../../lint/checks");
6
6
  const io = require("../../../lint/io");
7
7
  const readline = require("readline");
8
- const { copyFiles } = require('../../util/templateUtil')
8
+ const { copyFiles } = require('../../util/template')
9
9
  const { OPTION_LINT_DEV, OPTION_LINT_GLOBAL } = require("../../constants");
10
10
  const { getConfigPath, getFileExtensions } = require("@sap/eslint-plugin-cds/lib/api");
11
11
  const cds = require("../../../cds");
@@ -1,7 +1,7 @@
1
1
  const { join } = require('path');
2
2
  const cds = require('../../../cds')
3
3
  const { exists } = cds.utils
4
- const { copyFiles } = require('../../util/templateUtil')
4
+ const { copyFiles } = require('../../util/template')
5
5
  const { readProject } = require('../../util/projectReader');
6
6
 
7
7
  module.exports = class MtaTemplate extends require('../templateBase') {
@@ -18,7 +18,7 @@ module.exports = class MtaTemplate extends require('../templateBase') {
18
18
  }
19
19
 
20
20
  // Re-applying the dependent merging part of other facets if necessary.
21
- const dependentFacets = ['approuter', 'hana', 'xsuaa', 'multitenancy', 'extensibility', 'enterprise-messaging']
21
+ const dependentFacets = ['approuter', 'hana', 'xsuaa', 'multitenancy', 'extensibility', 'enterprise-messaging', 'enterprise-messaging-shared', 'redis-messaging']
22
22
  for (const facet of dependentFacets) {
23
23
  const Template = require('../'+facet)
24
24
  const template = new Template(this.generator)
@@ -1,10 +1,8 @@
1
1
  # Please do not modify this file. This file may be overwritten.
2
2
 
3
- {{- $approuterDeployment := .Values.approuter }}
4
- {{- $ := merge (dict "name" "approuter" "deployment" .Values.approuter ) . }}
5
- {{- $approuterUrl := (include "cap.deploymentHostFull" $ )}}
3
+ {{- $ := merge (dict "name" "approuter" "deployment" .Values.srv ) . }}
4
+ {{- $srvUrl := (include "cap.deploymentHostFull" $ )}}
6
5
 
7
- {{- $sidecarDeployment := .Values.sidecar }}
8
6
  {{- $ = merge (dict "name" "sidecar" "deployment" .Values.sidecar ) . }}
9
7
  {{- $sidecarUrl := (include "cap.deploymentHostFull" $ )}}
10
8
 
@@ -15,6 +13,6 @@ metadata:
15
13
  namespace: "{{ .Release.Namespace }}"
16
14
  data:
17
15
  CDS_MULTITENANCY_APPUI_TENANTSEPARATOR: "-"
16
+ CDS_MULTITENANCY_APPUI_URL: {{ printf "https://%s" $srvUrl }}
18
17
  CDS_MULTITENANCY_MTXS_ENABLED: "true"
19
- CDS_MULTITENANCY_APPUI_URL: {{ printf "https://%s" $approuterUrl }}
20
18
  CDS_MULTITENANCY_SIDECAR_URL: {{ printf "https://%s" $sidecarUrl }}
@@ -1,12 +1,7 @@
1
1
  # Please do not modify this file. This file may be overwritten.
2
2
 
3
- {{- $approuterDeployment := .Values.approuter }}
4
- {{- $ := merge (dict "name" "approuter" "deployment" .Values.approuter ) . }}
5
- {{- $approuterUrl := (include "cap.deploymentHostFull" $ )}}
6
-
7
- {{- $sidecarDeployment := .Values.sidecar }}
8
- {{- $ = merge (dict "name" "sidecar" "deployment" .Values.sidecar ) . }}
9
- {{- $sidecarUrl := (include "cap.deploymentHostFull" $ )}}
3
+ {{- $ := merge (dict "name" "srv" "deployment" .Values.srv ) . }}
4
+ {{- $srvUrl := (include "cap.deploymentHostFull" $ )}}
10
5
 
11
6
  apiVersion: v1
12
7
  kind: ConfigMap
@@ -14,6 +9,4 @@ metadata:
14
9
  name: "{{ .Release.Name }}-mtxs-configmap"
15
10
  namespace: "{{ .Release.Namespace }}"
16
11
  data:
17
- CDS_MULTITENANCY_APPUI_TENANTSEPARATOR: "-"
18
- CDS_MULTITENANCY_APPUI_URL: {{ printf "https://%s" $approuterUrl }}
19
- SUBSCRIPTION_URL: {{ printf "https://${tenant_subdomain}-%s" $approuterUrl }}
12
+ SUBSCRIPTION_URL: {{ printf "https://${tenant_subdomain}-%s" $srvUrl }}
@@ -3,8 +3,8 @@
3
3
  "dependencies": {
4
4
  "@sap/cds-mtxs": "^1"
5
5
  },
6
- {{/cap.isNodejs}}
7
6
  "cds": {
7
+ {{/cap.isNodejs}}
8
8
  {{#cap.isJava}}
9
9
  "profiles": ["with-mtx-sidecar", "java"],
10
10
  "build": {
@@ -17,12 +17,13 @@
17
17
  "requires": {
18
18
  {{#cap.for}}
19
19
  "[{{cap.for}}]": {
20
+ {{/cap.for}}
20
21
  "multitenancy": true
22
+ {{#cap.for}}
21
23
  }
22
24
  {{/cap.for}}
23
- {{^cap.for}}
24
- "multitenancy": true
25
- {{/cap.for}}
26
25
  }
26
+ {{#cap.isNodejs}}
27
27
  }
28
+ {{/cap.isNodejs}}
28
29
  }