@sap/cds-dk 6.6.2 → 6.7.1
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.
- package/CHANGELOG.md +36 -1
- package/bin/add.js +5 -3
- package/bin/build/all.js +1 -1
- package/bin/cds.js +10 -8
- package/bin/env.js +4 -6
- package/bin/login.js +6 -4
- package/bin/migrate.js +0 -1
- package/bin/repl.js +1 -1
- package/bin/serve.js +7 -0
- package/bin/subscribe.js +5 -5
- package/bin/unsubscribe.js +4 -5
- package/bin/upgrade.js +67 -0
- package/bin/watch.js +8 -5
- package/lib/bind/bindingManager.js +3 -2
- package/lib/bind/cfKeyProvider.js +7 -6
- package/lib/bind/userCdsrcJsonStorageProvider.js +5 -4
- package/lib/cds.js +12 -0
- package/lib/client/activate.js +4 -3
- package/lib/client/auth_manager.js +4 -3
- package/lib/client/base_command.js +7 -2
- package/lib/client/helper/cf_helper.js +12 -11
- package/lib/client/helper/dependency_helper.js +3 -2
- package/lib/client/helper/logging.js +0 -7
- package/lib/client/params.js +4 -2
- package/lib/client/settings_manager.js +35 -34
- package/lib/client/tenant_action.js +78 -0
- package/lib/init/constants.js +1 -1
- package/lib/init/index.js +4 -4
- package/lib/init/template/_merging/registry-mta.js +31 -46
- package/lib/init/template/approuter/files/mta.yaml.hbs +12 -8
- package/lib/init/template/approuter/files/xs-app.json.hbs +0 -3
- package/lib/init/template/approuter/index.js +26 -34
- package/lib/init/template/auditlog/files/mta.yaml.hbs +2 -1
- package/lib/init/template/auditlog/index.js +8 -21
- package/lib/init/template/cf-manifest/files/manifest.yml.hbs +4 -4
- package/lib/init/template/cf-manifest/index.js +2 -1
- package/lib/init/template/connectivity/index.js +4 -5
- package/lib/init/template/data/index.js +19 -22
- package/lib/init/template/destinations/index.js +5 -17
- package/lib/init/template/enterprise-messaging/files/mta.yaml.hbs +2 -1
- package/lib/init/template/enterprise-messaging/index.js +7 -19
- package/lib/init/template/extensibility/index.js +3 -1
- package/lib/init/template/hana/files/mta.yaml.hbs +4 -5
- package/lib/init/template/hana/index.js +49 -84
- package/lib/init/template/helm/chart/templates/_helpers.tpl +4 -1
- package/lib/init/template/helm/files/Chart.yaml.hbs +1 -4
- package/lib/init/template/helm/index.js +45 -13
- package/lib/init/template/helm/subcharts/web-application/templates/_helpers.tpl +21 -31
- package/lib/init/template/helm/subcharts/web-application/templates/api-rule.yaml +3 -12
- package/lib/init/template/helm/subcharts/web-application/templates/deployment.yaml +12 -14
- package/lib/init/template/helm/subcharts/web-application/templates/network-policy.yaml +27 -4
- package/lib/init/template/helm/subcharts/web-application/templates/pod-disruption-budget.yaml +0 -2
- package/lib/init/template/helm/subcharts/web-application/templates/secret.yaml +2 -2
- package/lib/init/template/helm/subcharts/web-application/templates/service-account.yaml +2 -2
- package/lib/init/template/helm/subcharts/web-application/templates/service-binding.yaml +16 -13
- package/lib/init/template/helm/subcharts/web-application/templating.md +16 -9
- package/lib/init/template/helm/subcharts/web-application/values.md +317 -379
- package/lib/init/template/helm/subcharts/web-application/values.schema.json +87 -107
- package/lib/init/template/helm/subcharts/web-application/values.yaml +28 -2
- package/lib/init/template/html5-repo/index.js +6 -29
- package/lib/init/template/java/index.js +1 -1
- package/lib/init/template/kibana-logging/files/mta.yaml.hbs +2 -1
- package/lib/init/template/kibana-logging/index.js +5 -8
- package/lib/init/template/lint/index.js +8 -8
- package/lib/init/template/mta/files/mta.yaml.hbs +3 -2
- package/lib/init/template/mta/index.js +3 -2
- package/lib/init/template/multitenancy/files/mta.yaml.hbs +25 -31
- package/lib/init/template/multitenancy/files/{java/mtxs-configmap.yaml → mtxs-configmap-java.yaml} +1 -1
- package/lib/init/template/multitenancy/files/{mtxs-configmap.yaml → mtxs-configmap-nodejs.yaml} +5 -1
- package/lib/init/template/multitenancy/files/package.json.hbs +28 -0
- package/lib/init/template/multitenancy/files/package.sidecar.json.hbs +21 -0
- package/lib/init/template/multitenancy/files/values.yaml.hbs +16 -9
- package/lib/init/template/multitenancy/index.js +51 -99
- package/lib/init/template/nodejs/files/.vscode/extensions.json +1 -2
- package/lib/init/template/nodejs/files/.vscode/launch.json +2 -2
- package/lib/init/template/nodejs/files/.vscode/tasks.json +2 -2
- package/lib/init/template/nodejs/files/package.json.hbs +2 -2
- package/lib/init/template/nodejs/index.js +4 -3
- package/lib/init/template/pipeline/index.js +3 -2
- package/lib/init/template/samples/index.js +5 -4
- package/lib/init/template/sqlite/files/package.json.hbs +19 -0
- package/lib/init/template/sqlite/index.js +11 -0
- package/lib/init/template/toggles/index.js +3 -5
- package/lib/init/template/xsuaa/files/mta.yaml.hbs +4 -5
- package/lib/init/template/xsuaa/files/values.yaml.hbs +0 -2
- package/lib/init/template/xsuaa/index.js +14 -35
- package/lib/init/util/commandUtil.js +3 -2
- package/lib/init/util/fsUtil.js +19 -2
- package/lib/init/util/md5Tracking.js +36 -63
- package/lib/init/util/projectReader.js +12 -26
- package/lib/lint/Linter.js +0 -3
- package/lib/util/exec.js +2 -1
- package/lib/util/term.js +1 -1
- package/lib/watch/livereload-connect.js +5 -4
- package/lib/watch/livereload-server.js +3 -6
- package/lib/watch/node-watch.js +1 -1
- package/npm-shrinkwrap.json +569 -479
- package/package.json +4 -4
- package/readme.md +1 -1
- package/lib/client/subscription.js +0 -84
- package/lib/init/template/approuter/files/chart.yaml +0 -4
- package/lib/init/template/auditlog/files/auditlog.yaml +0 -4
- package/lib/init/template/destinations/files/destination.yaml +0 -4
- package/lib/init/template/enterprise-messaging/files/event-mesh.yaml +0 -4
- package/lib/init/template/hana/files/hana-deployer.yaml +0 -4
- package/lib/init/template/hana/files/hana.yaml +0 -4
- package/lib/init/template/html5-repo/files/html5-apps-deployer.yaml +0 -4
- package/lib/init/template/html5-repo/files/html5-apps-repo-host.yaml +0 -4
- package/lib/init/template/multitenancy/files/cds.package.json +0 -7
- package/lib/init/template/multitenancy/files/cds.package.json.hbs +0 -9
- package/lib/init/template/multitenancy/files/dependencies.package.json +0 -5
- package/lib/init/template/multitenancy/files/java/.cdsrc.json +0 -22
- package/lib/init/template/multitenancy/files/java/package.json +0 -33
- package/lib/init/template/multitenancy/files/saas-registry.yaml +0 -4
- package/lib/init/template/multitenancy/files/service-manager.yaml +0 -4
- package/lib/init/template/multitenancy/files/sidecar.yaml +0 -4
- package/lib/init/template/xsuaa/files/xsuaa.yaml +0 -4
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
{{#cap.isNodejs}}
|
|
3
|
+
"dependencies": {
|
|
4
|
+
"@sap/cds-mtxs": "^1"
|
|
5
|
+
},
|
|
6
|
+
{{/cap.isNodejs}}
|
|
7
|
+
"cds": {
|
|
8
|
+
{{#cap.isJava}}
|
|
9
|
+
"profiles": ["with-mtx-sidecar", "java"],
|
|
10
|
+
"build": {
|
|
11
|
+
"target": "."
|
|
12
|
+
},
|
|
13
|
+
{{/cap.isJava}}
|
|
14
|
+
{{#cap.isNodejs}}
|
|
15
|
+
"profile": "with-mtx-sidecar",
|
|
16
|
+
{{/cap.isNodejs}}
|
|
17
|
+
"requires": {
|
|
18
|
+
{{#cap.for}}
|
|
19
|
+
"[{{cap.for}}]": {
|
|
20
|
+
"multitenancy": true
|
|
21
|
+
}
|
|
22
|
+
{{/cap.for}}
|
|
23
|
+
{{^cap.for}}
|
|
24
|
+
"multitenancy": true
|
|
25
|
+
{{/cap.for}}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{cap.appName}}-mtx",
|
|
3
|
+
"dependencies": {
|
|
4
|
+
"@sap/cds": "^6",
|
|
5
|
+
"@sap/cds-mtxs": "^1",
|
|
6
|
+
"@sap/xssec": "^3",
|
|
7
|
+
"express": "^4",
|
|
8
|
+
"hdb": "^0",
|
|
9
|
+
"passport": "^0.6.0"
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"sqlite3": "^5"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"start": "cds-serve"{{#cap.isJava}},
|
|
16
|
+
"build": "npm ci && npx -p @sap/cds-dk@^6 cds build ../.. --for mtx-sidecar --production && cd gen && npm ci"{{/cap.isJava}}
|
|
17
|
+
},
|
|
18
|
+
"cds": {
|
|
19
|
+
"profile": "mtx-sidecar"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
srv:
|
|
3
3
|
bindings:
|
|
4
|
+
{{#cap.isJava}}
|
|
4
5
|
saas-registry:
|
|
5
6
|
serviceInstanceName: saas-registry
|
|
7
|
+
{{/cap.isJava}}
|
|
6
8
|
service-manager:
|
|
7
9
|
serviceInstanceName: service-manager
|
|
8
10
|
{{#cap.hasXsuaa}}
|
|
@@ -22,26 +24,32 @@ saasRegistryParameters:
|
|
|
22
24
|
displayName: {{cap.appName}}
|
|
23
25
|
description: {{cap.appDescription}}
|
|
24
26
|
category: "CAP Application"
|
|
25
|
-
appUrls:
|
|
26
27
|
{{#cap.isNodejs}}
|
|
28
|
+
bindSidecar: true
|
|
29
|
+
{{/cap.isNodejs}}
|
|
30
|
+
appUrls:
|
|
31
|
+
{{#cap.isNodejs}}
|
|
27
32
|
getDependencies: "/-/cds/saas-provisioning/dependencies"
|
|
28
33
|
onSubscription: "/-/cds/saas-provisioning/tenant/{tenantId}"
|
|
29
|
-
{{/cap.isNodejs}}
|
|
30
|
-
{{#cap.isJava}}
|
|
34
|
+
{{/cap.isNodejs}}
|
|
35
|
+
{{#cap.isJava}}
|
|
31
36
|
getDependencies: "/mt/v1.0/subscriptions/dependencies"
|
|
32
37
|
onSubscription: "/mt/v1.0/subscriptions/tenants/{tenantId}"
|
|
33
|
-
{{/cap.isJava}}
|
|
38
|
+
{{/cap.isJava}}
|
|
34
39
|
onSubscriptionAsync: true
|
|
35
40
|
onUnSubscriptionAsync: true
|
|
36
41
|
onUpdateDependenciesAsync: true
|
|
37
42
|
callbackTimeoutMillis: 300000
|
|
38
|
-
{{#cap.isJava}}
|
|
39
43
|
sidecar:
|
|
40
44
|
bindings:
|
|
41
|
-
{{#cap.hasXsuaa}}
|
|
45
|
+
{{#cap.hasXsuaa}}
|
|
42
46
|
auth:
|
|
43
47
|
serviceInstanceName: xsuaa
|
|
44
|
-
{{/cap.hasXsuaa}}
|
|
48
|
+
{{/cap.hasXsuaa}}
|
|
49
|
+
{{#cap.isNodejs}}
|
|
50
|
+
saas-registry:
|
|
51
|
+
serviceInstanceName: saas-registry
|
|
52
|
+
{{/cap.isNodejs}}
|
|
45
53
|
service-manager:
|
|
46
54
|
serviceInstanceName: service-manager
|
|
47
55
|
image:
|
|
@@ -55,9 +63,8 @@ sidecar:
|
|
|
55
63
|
ephemeral-storage: 1G
|
|
56
64
|
cpu: 500m
|
|
57
65
|
memory: 500M
|
|
58
|
-
|
|
66
|
+
health:
|
|
59
67
|
liveness:
|
|
60
68
|
path: /
|
|
61
69
|
readiness:
|
|
62
70
|
path: /
|
|
63
|
-
{{/cap.isJava}}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
const { join } = require('path')
|
|
2
2
|
const cds = require('../../../cds')
|
|
3
|
-
const {
|
|
3
|
+
const { exists } = cds.utils
|
|
4
4
|
const { readProject } = require('../../util/projectReader')
|
|
5
5
|
const { mergeJSON, mergeYAML, sortDependencies } = require('../../util/merge')
|
|
6
6
|
const { copyAndTrack, parseMd5File, writeMd5File } = require('../../util/md5Tracking')
|
|
7
|
+
const { copyRenderedJSON } = require('../../util/fsUtil')
|
|
7
8
|
const {
|
|
8
9
|
srvNode, srvJava, // Server
|
|
9
|
-
|
|
10
|
+
mtxSidecar4, // Additional Modules
|
|
10
11
|
saasRegistry, serviceManager, xsuaa, // BTP Services
|
|
11
|
-
|
|
12
|
-
} = require('../_merging/registry-mta')
|
|
12
|
+
srvAPI, providedMtxAPISidecar4, requiredMtxSidecarAPI // APIs
|
|
13
|
+
} = require('../_merging/registry-mta')
|
|
13
14
|
|
|
14
15
|
module.exports = class MultitenancyTemplate extends require('../templateBase') {
|
|
15
16
|
|
|
@@ -17,82 +18,73 @@ module.exports = class MultitenancyTemplate extends require('../templateBase') {
|
|
|
17
18
|
// REVISIT: Check if this can be simplified
|
|
18
19
|
return options?.add?.has('mtx') || options?.add?.has('multitenancy') ||
|
|
19
20
|
!!env.requires?.multitenancy || !!env.requires?.db?.multiTenant ||
|
|
20
|
-
|
|
21
|
+
exists(join('mtx', 'sidecar')) || false
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
async run() {
|
|
24
25
|
const projectDescriptor = await readProject(this.options)
|
|
25
|
-
const {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
await mergeJSON(packageJSONPath, join(__dirname, 'files', cdsTemplateFile), projectDescriptor)
|
|
30
|
-
await mergeJSON(packageJSONPath, join(__dirname, 'files', 'dependencies.package.json'))
|
|
31
|
-
await sortDependencies(packageJSONPath)
|
|
32
|
-
} else if (isJava) {
|
|
33
|
-
const cdsrcJSONPath = join(this.projectPath, '.cdsrc.json')
|
|
34
|
-
await mergeJSON(cdsrcJSONPath, join(__dirname, 'files', 'java', '.cdsrc.json'))
|
|
35
|
-
await copy(join(__dirname, 'files', 'java', 'package.json'), join(this.projectPath, 'mtx', 'sidecar', 'package.json'))
|
|
36
|
-
}
|
|
26
|
+
const { isNodejs } = projectDescriptor.cap
|
|
27
|
+
await mergeJSON('package.json', join(__dirname, 'files', `package.json.hbs`), projectDescriptor)
|
|
28
|
+
if (isNodejs) await sortDependencies('package.json')
|
|
29
|
+
await copyRenderedJSON(join(__dirname, 'files', 'package.sidecar.json.hbs'), join('mtx', 'sidecar', 'package.json'), projectDescriptor)
|
|
37
30
|
await this.runDependentMerging()
|
|
38
31
|
}
|
|
39
32
|
|
|
40
33
|
async runDependentMerging(context = {}) {
|
|
41
34
|
const projectDescriptor = await readProject()
|
|
42
|
-
const { isNodejs, isJava, hasMta, hasHelm, hasApprouter, hasXsuaa, hasHana } = projectDescriptor.cap
|
|
35
|
+
const { isNodejs, isJava, hasMta, hasHelm, hasApprouter, hasXsuaa, hasHana, srvPath } = projectDescriptor.cap
|
|
43
36
|
|
|
44
37
|
if (hasMta) {
|
|
45
|
-
const
|
|
46
|
-
const
|
|
38
|
+
const srv = (isNodejs ? srvNode : srvJava)(srvPath)
|
|
39
|
+
const mtxSidecar = mtxSidecar4(isJava ? 'mtx/sidecar' : 'gen/mtx/sidecar')
|
|
40
|
+
const modules = [srv, mtxSidecar]
|
|
47
41
|
const services = [saasRegistry]
|
|
48
42
|
if (hasXsuaa) services.push(xsuaa)
|
|
49
|
-
const apis =
|
|
43
|
+
const apis = [srvAPI(srv), providedMtxAPISidecar4(mtxSidecar)]
|
|
44
|
+
if (isJava) apis.push(requiredMtxSidecarAPI(srv))
|
|
50
45
|
const additions = [...modules, ...services, ...apis]
|
|
51
46
|
|
|
52
|
-
const overwrites = hasXsuaa ? [{ item: [xsuaa, 'parameters.config.tenant-mode'], withValue: 'shared'}] : []
|
|
47
|
+
const overwrites = hasXsuaa ? [{ item: [xsuaa, 'parameters.config.tenant-mode'], withValue: 'shared' }] : []
|
|
53
48
|
|
|
54
49
|
const relationships = [{
|
|
55
50
|
insert: [saasRegistry, 'name'],
|
|
56
|
-
into: [srv, 'requires', 'name']
|
|
51
|
+
into: [isJava ? srv : mtxSidecar, 'requires', 'name']
|
|
57
52
|
}]
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
})
|
|
70
|
-
}
|
|
53
|
+
if (hasXsuaa) {
|
|
54
|
+
relationships.push({
|
|
55
|
+
insert: [xsuaa, 'name'],
|
|
56
|
+
into: [mtxSidecar, 'requires', 'name']
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
if (hasHana) {
|
|
60
|
+
relationships.push({
|
|
61
|
+
insert: [serviceManager, 'name'],
|
|
62
|
+
into: [mtxSidecar, 'requires', 'name'],
|
|
63
|
+
})
|
|
71
64
|
}
|
|
72
65
|
|
|
73
|
-
const templateMtaPath = join(__dirname,
|
|
74
|
-
const mtaPath = join(this.projectPath, 'mta.yaml')
|
|
66
|
+
const templateMtaPath = join(__dirname, 'files', 'mta.yaml.hbs')
|
|
75
67
|
const mergingRules = { additions, overwrites, relationships }
|
|
76
|
-
await mergeYAML(
|
|
68
|
+
await mergeYAML('mta.yaml', templateMtaPath, projectDescriptor, mergingRules)
|
|
77
69
|
}
|
|
78
70
|
|
|
71
|
+
// REVISIT: Why not just pass a Boolean from run() to indicate the merging isn't run transitively?
|
|
79
72
|
let isIndependentCommand = false
|
|
80
73
|
if (hasHelm) {
|
|
81
|
-
//in case facet is being added to the already
|
|
74
|
+
// in case facet is being added to the already existing charts folder
|
|
82
75
|
if (Object.keys(context).length == 0) {
|
|
83
76
|
isIndependentCommand = true
|
|
84
|
-
context.
|
|
85
|
-
context.oldTrackingData = context.newTrackingData = await parseMd5File(join(this.projectPath, 'chart', '.cds-add-helm-files.md5'))
|
|
77
|
+
context.oldTrackingData = context.newTrackingData = await parseMd5File(join('chart', '.cds-add-helm-files.md5'))
|
|
86
78
|
}
|
|
87
79
|
|
|
88
80
|
await mergeYAML(
|
|
89
|
-
join(
|
|
81
|
+
join('chart', 'values.yaml'),
|
|
90
82
|
join(__dirname, 'files', 'values.yaml.hbs'),
|
|
91
83
|
projectDescriptor
|
|
92
84
|
)
|
|
93
85
|
|
|
94
86
|
await mergeYAML(
|
|
95
|
-
join(
|
|
87
|
+
join('chart', 'values.yaml'),
|
|
96
88
|
{
|
|
97
89
|
srv: {
|
|
98
90
|
envFrom: [
|
|
@@ -117,74 +109,34 @@ module.exports = class MultitenancyTemplate extends require('../templateBase') {
|
|
|
117
109
|
projectDescriptor
|
|
118
110
|
)
|
|
119
111
|
|
|
120
|
-
|
|
121
|
-
await mergeYAML(
|
|
122
|
-
join(this.projectPath, 'chart', 'Chart.yaml'),
|
|
123
|
-
join(__dirname, 'files', 'sidecar.yaml'),
|
|
124
|
-
projectDescriptor,
|
|
125
|
-
{
|
|
126
|
-
additions: [{
|
|
127
|
-
in: `dependencies`,
|
|
128
|
-
where: [{
|
|
129
|
-
property: 'alias',
|
|
130
|
-
isEqualTo: 'sidecar'
|
|
131
|
-
}]
|
|
132
|
-
}]
|
|
133
|
-
}
|
|
134
|
-
)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// copy service-instance chart
|
|
112
|
+
// REVISIT: Don't reference other templates except for the safe `runDependentMerging` -> low coupling, high cohesion
|
|
138
113
|
const HelmTemplate = require(`../helm`);
|
|
139
114
|
const helmTemplate = new HelmTemplate(this.generator, context.oldTrackingData, context.newTrackingData);
|
|
140
|
-
isIndependentCommand = isIndependentCommand | await helmTemplate.addSubChart('service-instance');
|
|
141
115
|
|
|
142
|
-
|
|
143
|
-
await mergeYAML(
|
|
144
|
-
join(this.projectPath, 'chart', 'Chart.yaml'),
|
|
145
|
-
join(__dirname, 'files', 'saas-registry.yaml'),
|
|
146
|
-
projectDescriptor,
|
|
147
|
-
{ additions: [{
|
|
148
|
-
in: `dependencies`,
|
|
149
|
-
where: [{
|
|
150
|
-
property: 'alias',
|
|
151
|
-
isEqualTo: 'saas-registry'
|
|
152
|
-
}]
|
|
153
|
-
}]}
|
|
154
|
-
);
|
|
116
|
+
await helmTemplate.addDependency('web-application', 'sidecar');
|
|
155
117
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
join(__dirname, 'files', 'service-manager.yaml'),
|
|
159
|
-
projectDescriptor,
|
|
160
|
-
{ additions: [{
|
|
161
|
-
in: `dependencies`,
|
|
162
|
-
where: [{
|
|
163
|
-
property: 'alias',
|
|
164
|
-
isEqualTo: 'service-manager'
|
|
165
|
-
}]
|
|
166
|
-
}]}
|
|
167
|
-
);
|
|
118
|
+
// copy service-instance chart
|
|
119
|
+
isIndependentCommand = isIndependentCommand | await helmTemplate.addSubChart('service-instance');
|
|
168
120
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
121
|
+
// add dependency entry in chart.yaml
|
|
122
|
+
await helmTemplate.addDependency('service-instance', 'saas-registry');
|
|
123
|
+
await helmTemplate.addDependency('service-instance', 'service-manager');
|
|
172
124
|
|
|
173
125
|
// add mtxs configmap
|
|
174
126
|
await copyAndTrack(
|
|
175
|
-
|
|
176
|
-
join(
|
|
177
|
-
context
|
|
127
|
+
join(__dirname, 'files', `mtxs-configmap-${isJava ? 'java' : 'nodejs'}.yaml`),
|
|
128
|
+
join('chart', 'templates', 'mtxs-configmap.yaml'),
|
|
129
|
+
context,
|
|
178
130
|
)
|
|
179
131
|
|
|
180
132
|
// add saas registry secret
|
|
181
133
|
await copyAndTrack(
|
|
182
134
|
join(__dirname, 'files', 'saas-registry-secret.yaml'),
|
|
183
|
-
join(
|
|
135
|
+
join('chart', 'templates', 'saas-registry-secret.yaml'),
|
|
184
136
|
context
|
|
185
137
|
);
|
|
186
138
|
|
|
187
|
-
if (isIndependentCommand) await writeMd5File(join(
|
|
139
|
+
if (isIndependentCommand) await writeMd5File(join('chart', '.cds-add-helm-files.md5'), context.newTrackingData)
|
|
188
140
|
}
|
|
189
141
|
|
|
190
142
|
if (hasApprouter) {
|
|
@@ -201,7 +153,7 @@ module.exports = class MultitenancyTemplate extends require('../templateBase') {
|
|
|
201
153
|
|
|
202
154
|
if (hasXsuaa) {
|
|
203
155
|
await mergeJSON(
|
|
204
|
-
|
|
156
|
+
'xs-security.json',
|
|
205
157
|
join(__dirname, 'files', 'xs-security.json.hbs'),
|
|
206
158
|
projectDescriptor,
|
|
207
159
|
{
|
|
@@ -215,7 +167,7 @@ module.exports = class MultitenancyTemplate extends require('../templateBase') {
|
|
|
215
167
|
|
|
216
168
|
if (hasXsuaa && hasHelm) {
|
|
217
169
|
await mergeYAML(
|
|
218
|
-
join(
|
|
170
|
+
join('chart', 'values.yaml'),
|
|
219
171
|
{
|
|
220
172
|
xsuaa: {
|
|
221
173
|
parameters: {
|
|
@@ -226,7 +178,7 @@ module.exports = class MultitenancyTemplate extends require('../templateBase') {
|
|
|
226
178
|
null,
|
|
227
179
|
{ forceOverwrite: true }
|
|
228
180
|
)
|
|
229
|
-
if (isIndependentCommand) await writeMd5File(join(
|
|
181
|
+
if (isIndependentCommand) await writeMd5File(join('chart', '.cds-add-helm-files.md5'), context.newTrackingData)
|
|
230
182
|
}
|
|
231
183
|
}
|
|
232
184
|
}
|
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
"dbaeumer.vscode-eslint",
|
|
9
9
|
"esbenp.prettier-vscode",
|
|
10
10
|
"mechatroner.rainbow-csv",
|
|
11
|
+
"qwtel.sqlite-viewer",
|
|
11
12
|
"humao.rest-client",
|
|
12
|
-
"alexcvzz.vscode-sqlite",
|
|
13
|
-
"hbenl.vscode-mocha-test-adapter",
|
|
14
13
|
"sdras.night-owl"
|
|
15
14
|
],
|
|
16
15
|
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"version": "0.2.0",
|
|
6
6
|
"configurations": [
|
|
7
7
|
{
|
|
8
|
-
"command": "cds
|
|
9
|
-
"name": "cds
|
|
8
|
+
"command": "cds serve --with-mocks --in-memory?",
|
|
9
|
+
"name": "cds serve",
|
|
10
10
|
"request": "launch",
|
|
11
11
|
"type": "node-terminal",
|
|
12
12
|
"skipFiles": [ "<node_internals>/**" ]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const { join, relative } = require('path');
|
|
2
|
-
const
|
|
2
|
+
const cds = require('../../../cds')
|
|
3
|
+
const { mkdirp } = cds.utils
|
|
3
4
|
const { COMMAND_ADD, OPTION_JAVA, OPTION_NODEJS, URLS } = require('../../constants')
|
|
4
5
|
const { copyFiles } = require('../../util/templateUtil')
|
|
5
6
|
const LOG = console
|
|
@@ -8,7 +9,7 @@ module.exports = class NodejsTemplate extends require('../templateBase') {
|
|
|
8
9
|
|
|
9
10
|
static hasFacet() {
|
|
10
11
|
// TODO: Implement
|
|
11
|
-
//return this.
|
|
12
|
+
//return this.language === P_LANGUAGE_NODEJS
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
async canRun() {
|
|
@@ -34,7 +35,7 @@ module.exports = class NodejsTemplate extends require('../templateBase') {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
async finalize() {
|
|
37
|
-
const relativeProjectPath = relative(this.cwd,
|
|
38
|
+
const relativeProjectPath = relative(this.cwd, cds.root);
|
|
38
39
|
if (relativeProjectPath && relativeProjectPath !== '.') {
|
|
39
40
|
LOG.info(`Continue with 'cd ${relativeProjectPath}'`);
|
|
40
41
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const { join } = require('path');
|
|
2
|
-
const
|
|
2
|
+
const cds = require('../../../cds')
|
|
3
|
+
const { exists } = cds.utils
|
|
3
4
|
const { copyFiles } = require('../../util/templateUtil')
|
|
4
5
|
const { URLS } = require('../../constants')
|
|
5
6
|
const LOG = console
|
|
@@ -20,7 +21,7 @@ module.exports = class PipelineTemplate extends require('../templateBase') {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
async run() {
|
|
23
|
-
await copyFiles(join(__dirname, 'files'),
|
|
24
|
+
await copyFiles(join(__dirname, 'files'), cds.root, {}, this.options.force);
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
async finalize() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const { join } = require('path');
|
|
2
|
+
const cds = require('../../../cds')
|
|
2
3
|
const { copyFiles } = require('../../util/templateUtil')
|
|
3
4
|
const commandUtil = require('../../util/commandUtil');
|
|
4
5
|
const mvnArchetypes = require('../../util/mvnArchetypeUtil');
|
|
@@ -30,12 +31,12 @@ module.exports = class SamplesTemplate extends require('../templateBase') {
|
|
|
30
31
|
const mvnAddSamplesArgs = mvnArchetypes.getAddSamplesCmdArgs(this.options);
|
|
31
32
|
try {
|
|
32
33
|
await commandUtil.spawnCommand('mvn', mvnAddSamplesArgs, {
|
|
33
|
-
cwd:
|
|
34
|
+
cwd: cds.root
|
|
34
35
|
});
|
|
35
36
|
|
|
36
37
|
const mvnAddTestsArgs = mvnArchetypes.getAddTestsCmdArgs(this.options);
|
|
37
38
|
await commandUtil.spawnCommand('mvn', mvnAddTestsArgs, {
|
|
38
|
-
cwd:
|
|
39
|
+
cwd: cds.root
|
|
39
40
|
});
|
|
40
41
|
} catch (err) {
|
|
41
42
|
if (err.code === 'ENOENT' && err.path === 'mvn') {
|
|
@@ -48,10 +49,10 @@ module.exports = class SamplesTemplate extends require('../templateBase') {
|
|
|
48
49
|
|
|
49
50
|
async _addNodejsSamples() {
|
|
50
51
|
const { db, srv } = (await this.getEnv()).folders;
|
|
51
|
-
const dbFolder = join(
|
|
52
|
+
const dbFolder = join(cds.root, db);
|
|
52
53
|
await copyFiles(join(__dirname, 'files', 'nodejs', 'db'), dbFolder, {}, this.options.force);
|
|
53
54
|
|
|
54
|
-
const srvFolder = join(
|
|
55
|
+
const srvFolder = join(cds.root, srv);
|
|
55
56
|
await copyFiles(join(__dirname, 'files', 'nodejs', 'srv'), srvFolder, {
|
|
56
57
|
dbFolder: db.replace(/[\\/]+$/, '')
|
|
57
58
|
}, this.options.force);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
{{#cap.isNodejs}}
|
|
3
|
+
"devDependencies": {
|
|
4
|
+
"sqlite3": "^5"
|
|
5
|
+
},
|
|
6
|
+
{{/cap.isNodejs}}
|
|
7
|
+
"cds": {
|
|
8
|
+
"requires": {
|
|
9
|
+
{{#cap.for}}
|
|
10
|
+
"[{{cap.for}}]": {
|
|
11
|
+
"db": "sqlite"
|
|
12
|
+
}
|
|
13
|
+
{{/cap.for}}
|
|
14
|
+
{{^cap.for}}
|
|
15
|
+
"db": "sqlite"
|
|
16
|
+
{{/cap.for}}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const { join } = require('path')
|
|
2
|
+
const { readProject } = require('../../util/projectReader')
|
|
3
|
+
const { mergeJSON } = require('../../util/merge')
|
|
4
|
+
|
|
5
|
+
module.exports = class SQLiteTemplate extends require('../templateBase') {
|
|
6
|
+
|
|
7
|
+
async run() {
|
|
8
|
+
const projectDescriptor = await readProject(this.options)
|
|
9
|
+
await mergeJSON('package.json', join(__dirname, 'files', `package.json.hbs`), projectDescriptor)
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -12,14 +12,12 @@ module.exports = class TogglesTemplate extends require('../templateBase') {
|
|
|
12
12
|
const projectDescriptor = await readProject(this.options)
|
|
13
13
|
const { for: forProfile, isNodejs, isJava } = projectDescriptor.cap
|
|
14
14
|
if (isNodejs) {
|
|
15
|
-
const packageJSONPath = join(this.projectPath, 'package.json')
|
|
16
15
|
const cdsTemplateFile = forProfile ? 'cds.package.json.hbs' : 'cds.package.json'
|
|
17
|
-
await mergeJSON(
|
|
18
|
-
await sortDependencies(
|
|
16
|
+
await mergeJSON('package.json', join(__dirname, 'files', cdsTemplateFile), projectDescriptor)
|
|
17
|
+
await sortDependencies('package.json')
|
|
19
18
|
} else if (isJava) {
|
|
20
|
-
const cdsrcPath = join(this.projectPath, '.cdsrc.json')
|
|
21
19
|
const cdsTemplateFile = join(__dirname, 'files', forProfile ? 'cdsrc.json.hbs' : 'cdsrc.json')
|
|
22
|
-
await mergeJSON(
|
|
20
|
+
await mergeJSON('.cdsrc.json', cdsTemplateFile, projectDescriptor)
|
|
23
21
|
}
|
|
24
22
|
await this.runDependentMerging()
|
|
25
23
|
}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
modules:
|
|
3
3
|
- name: {{cap.appName}}-srv
|
|
4
|
-
type: {{cap.
|
|
4
|
+
type: {{cap.language}}
|
|
5
|
+
path: {{& cap.srvPath}}
|
|
5
6
|
requires:
|
|
6
7
|
- name: {{cap.appName}}-auth
|
|
7
8
|
|
|
8
|
-
{{#cap.isJava}}
|
|
9
9
|
{{#cap.isMultitenant}}
|
|
10
|
-
- name: {{cap.appName}}-mtx
|
|
10
|
+
- name: {{cap.appName}}-mtx
|
|
11
11
|
type: nodejs
|
|
12
|
-
path: mtx/sidecar
|
|
12
|
+
path: {{#cap.isNodejs}}gen/{{/cap.isNodejs}}mtx/sidecar
|
|
13
13
|
requires:
|
|
14
14
|
- name: {{cap.appName}}-auth
|
|
15
15
|
{{/cap.isMultitenant}}
|
|
16
|
-
{{/cap.isJava}}
|
|
17
16
|
|
|
18
17
|
resources:
|
|
19
18
|
- name: {{cap.appName}}-auth
|