@kumori/kdsl 0.0.15 → 0.0.17
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/dist/build/deployment_spec.d.ts +1133 -19642
- package/dist/build/deployment_spec.js +14 -13
- package/dist/build/deployment_spec.js.map +1 -1
- package/dist/build/helpers/builtin.js +7 -9
- package/dist/build/helpers/builtin.js.map +1 -1
- package/dist/build/helpers/component.d.ts +2 -2
- package/dist/build/helpers/component.js +28 -28
- package/dist/build/helpers/component.js.map +1 -1
- package/dist/build/helpers/connector.js +4 -5
- package/dist/build/helpers/connector.js.map +1 -1
- package/dist/build/helpers/deployment.d.ts +96 -96
- package/dist/build/helpers/deployment.js +8 -9
- package/dist/build/helpers/deployment.js.map +1 -1
- package/dist/build/helpers/resource.d.ts +4 -4
- package/dist/build/helpers/service.d.ts +1 -1
- package/dist/build/helpers/service.js +31 -33
- package/dist/build/helpers/service.js.map +1 -1
- package/dist/build/helpers/utils.d.ts +8 -0
- package/dist/build/helpers/utils.js +23 -1
- package/dist/build/helpers/utils.js.map +1 -1
- package/dist/build/main.js +51 -2
- package/dist/build/main.js.map +1 -1
- package/dist/build/solution.js +2 -3
- package/dist/build/solution.js.map +1 -1
- package/dist/check/main.js +1 -1
- package/dist/check/main.js.map +1 -1
- package/dist/deployment/gen/deployment-template.kumori +33 -0
- package/dist/deployment/gen/main.d.ts +15 -0
- package/dist/deployment/gen/main.js +158 -0
- package/dist/deployment/gen/main.js.map +1 -0
- package/dist/deployment/gen/types.d.ts +27 -0
- package/dist/deployment/gen/types.js +2 -0
- package/dist/deployment/gen/types.js.map +1 -0
- package/dist/deployment/main.d.ts +8 -0
- package/dist/deployment/main.js +17 -0
- package/dist/deployment/main.js.map +1 -0
- package/dist/index/create/main.js +38 -16
- package/dist/index/create/main.js.map +1 -1
- package/dist/lib/build.js +42 -28
- package/dist/lib/build.js.map +1 -1
- package/dist/lib/check.js +45 -15
- package/dist/lib/check.js.map +1 -1
- package/dist/lib/clean.js +39 -1
- package/dist/lib/deployment.d.ts +35 -0
- package/dist/lib/deployment.js +31 -0
- package/dist/lib/deployment.js.map +1 -0
- package/dist/lib/index-cmd.js +60 -57
- package/dist/lib/index-cmd.js.map +1 -1
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +54 -117
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/mod.js +144 -70
- package/dist/lib/mod.js.map +1 -1
- package/dist/lib/registry.d.ts +19 -4
- package/dist/lib/registry.js +67 -1
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/types.d.ts +5 -0
- package/dist/main.js +7 -1
- package/dist/main.js.map +1 -1
- package/dist/mod/dependency/main.js +17 -10
- package/dist/mod/dependency/main.js.map +1 -1
- package/dist/mod/download/functions.js +5 -5
- package/dist/mod/download/functions.js.map +1 -1
- package/dist/mod/download/main.js +12 -2
- package/dist/mod/download/main.js.map +1 -1
- package/dist/mod/init/main.js +1 -1
- package/dist/mod/init/main.js.map +1 -1
- package/dist/mod/jsonschema/gen/main.js +14 -7
- package/dist/mod/jsonschema/gen/main.js.map +1 -1
- package/dist/mod/jsonschema/get/main.js +10 -2
- package/dist/mod/jsonschema/get/main.js.map +1 -1
- package/dist/mod/update/main.js +3 -4
- package/dist/mod/update/main.js.map +1 -1
- package/dist/registry/add.d.ts +1 -1
- package/dist/registry/add.js +12 -7
- package/dist/registry/add.js.map +1 -1
- package/dist/util/err-format.js +1 -2
- package/dist/util/err-format.js.map +1 -1
- package/dist/version.js +1 -2
- package/dist/version.js.map +1 -1
- package/out/deployment/gen/deployment-template.kumori +33 -0
- package/out/deployment-template.kumori +33 -0
- package/out/main.cjs +378 -209
- package/package.json +21 -15
- package/out/lib/build.cjs +0 -29
- package/out/lib/check.cjs +0 -16
- package/out/lib/clean.cjs +0 -2
- package/out/lib/index-cmd.cjs +0 -58
- package/out/lib/index.cjs +0 -118
- package/out/lib/mod.cjs +0 -71
- package/out/lib/registry.cjs +0 -2
|
@@ -15,7 +15,7 @@ import { basename } from "path";
|
|
|
15
15
|
*/
|
|
16
16
|
export function ComponentImageToSolutionJSON(image) {
|
|
17
17
|
if (typeof image === "string") {
|
|
18
|
-
return Result.orElse(Result.map(ParseOCIString(image), (v) =>
|
|
18
|
+
return Result.orElse(Result.map(ParseOCIString(image), (v) => ({ tag: v.tag, hub: { name: v.hub, secret: typeof image === "string" ? "" : image.hub?.secret ?? "" } })), err => { throw new Error(err); });
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
21
|
return image;
|
|
@@ -52,4 +52,26 @@ export function ReferenceUpdater(KumoriModules, node) {
|
|
|
52
52
|
}
|
|
53
53
|
return updates;
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Constructs a reference path string from a given Reference object.
|
|
57
|
+
* The path is formed by concatenating the domain and module properties.
|
|
58
|
+
*
|
|
59
|
+
* @param ref - The Reference object containing domain and module information.
|
|
60
|
+
* @returns A string representing the reference path in the format "domain/module".
|
|
61
|
+
*/
|
|
62
|
+
export function GetReferencePath(ref) {
|
|
63
|
+
let path = "";
|
|
64
|
+
if (ref.domain !== "") {
|
|
65
|
+
path += `${ref.domain}`;
|
|
66
|
+
if (ref.module !== "") {
|
|
67
|
+
path += `/${ref.module}`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
if (ref.module !== "") {
|
|
72
|
+
path += ref.module;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return path;
|
|
76
|
+
}
|
|
55
77
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/build/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAI/B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAqB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,GAAG,CACN,cAAc,CAAC,KAAK,CAAC,EACrB,CAAC,CAA+B,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/build/helpers/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/build/main.js
CHANGED
|
@@ -14,6 +14,7 @@ import path from "node:path";
|
|
|
14
14
|
import { Check } from "../check/main.js";
|
|
15
15
|
import { promises as nodefs } from "node:fs";
|
|
16
16
|
import { RegistryManager } from "@kumori/kdsl-lsp/module/registry/manager.js";
|
|
17
|
+
import { GetReferencePath } from "./helpers/utils.js";
|
|
17
18
|
export function Register(cmd, log) {
|
|
18
19
|
const c = cmd.command('build')
|
|
19
20
|
.argument('[package]', `package containing the target deployment, defaults to current directory`, '.')
|
|
@@ -62,7 +63,7 @@ export async function BuildImpl(log, svcs, pkgStr, target) {
|
|
|
62
63
|
log.error(err);
|
|
63
64
|
return Err([err]);
|
|
64
65
|
}
|
|
65
|
-
const locctx =
|
|
66
|
+
const locctx = { FS: fs, ...ctx.value };
|
|
66
67
|
const missing = await MissingDependencies(locctx);
|
|
67
68
|
if (missing.size > 0) {
|
|
68
69
|
const errs = [`error: missing modules`];
|
|
@@ -79,6 +80,7 @@ export async function BuildImpl(log, svcs, pkgStr, target) {
|
|
|
79
80
|
}
|
|
80
81
|
const checkResult = await Check(log, svcs, ctx.value);
|
|
81
82
|
if (Result.isErr(checkResult)) {
|
|
83
|
+
log.error(`failed to check modules ${checkResult.err.join("\n")}`);
|
|
82
84
|
return checkResult;
|
|
83
85
|
}
|
|
84
86
|
const pkgUri = UriUtils.joinPath(ctx.value.Current.Root, pkgStr);
|
|
@@ -116,6 +118,53 @@ export async function BuildImpl(log, svcs, pkgStr, target) {
|
|
|
116
118
|
const solutionPath = path.join(pkgUri.fsPath, 'solution.json');
|
|
117
119
|
await nodefs.writeFile(solutionPath, solutionResult.value, 'utf-8');
|
|
118
120
|
log.info(`solution.json written to ${solutionPath}`);
|
|
121
|
+
// Generate the config JSON
|
|
122
|
+
// The config JSON is essentially the representation in JSON of the deployment artifact
|
|
123
|
+
const configContent = JSON.parse(solutionResult.value);
|
|
124
|
+
// Find the name of the deployment from the AST. In the manifest, we specified a name, we have to use that.
|
|
125
|
+
// To do that, we look for the StructEntry with key "name" in the deployment.
|
|
126
|
+
const configDeploymentName = deployment.body.stmt.find(s => s.$type === 'StructEntry' && s.key === 'name');
|
|
127
|
+
// This is just for type safety
|
|
128
|
+
assert(configDeploymentName && configDeploymentName.$type === 'StructEntry' && configDeploymentName.value.$type === 'StringLiteralExpression');
|
|
129
|
+
const configDeployment = configContent.deployments[configDeploymentName.value.value];
|
|
130
|
+
// Remove the description and spec fields from the artifact, as it's not needed in deployment-config.json
|
|
131
|
+
if (configDeployment && configDeployment.artifact) {
|
|
132
|
+
delete configDeployment.artifact.description;
|
|
133
|
+
delete configDeployment.artifact.spec;
|
|
134
|
+
}
|
|
135
|
+
// To enable better support for converting back from a JSON config to a deployment artifact,
|
|
136
|
+
// we write additional fields to the artifact.ref section. In particular, we add the package
|
|
137
|
+
// and rewrite the artifact name
|
|
138
|
+
// First, find the artifact declared in the deployment
|
|
139
|
+
const configDeploymentArtifact = deployment.body.stmt.find(s => s.$type === 'StructEntry' && s.key === 'artifact');
|
|
140
|
+
assert(configDeploymentArtifact && configDeploymentArtifact.$type === 'StructEntry');
|
|
141
|
+
assert(configDeploymentArtifact.value.$type === 'IdentifierExpression');
|
|
142
|
+
// Now, the package field needs to contain the route to the artifact within the module
|
|
143
|
+
// and the name of the package, if exists.
|
|
144
|
+
// We would get something like: "kumori.examples/module/path/to/artifact"
|
|
145
|
+
assert(configDeploymentArtifact.value.value.ref);
|
|
146
|
+
const artifactRef = configDeployment.artifact.ref;
|
|
147
|
+
const artifactRefPath = GetReferencePath(artifactRef);
|
|
148
|
+
// We not have the artifact module path. Now, let's find in the deployment's imports
|
|
149
|
+
// the import that matches this module path.
|
|
150
|
+
// We would get something like: "kumori.examples/module/path/to/artifact/service"
|
|
151
|
+
const artifactImport = deployment.$container.imports.find(imp => imp.target.$refText.includes(artifactRefPath))?.target.$refText;
|
|
152
|
+
// Finally, remove the artifact reference path from the artifact import, and we will be left with
|
|
153
|
+
// the actual path within the module.
|
|
154
|
+
// We would be left with just "service" (that's why we add 1 to the substring, to remove the trailing slash)
|
|
155
|
+
const artifactPath = artifactImport?.substring(artifactRefPath.length + 1);
|
|
156
|
+
// Now, set the package and name fields in the configDeployment.artifact.ref
|
|
157
|
+
configDeployment.artifact.ref.package = artifactPath ? artifactPath + "/" + configDeploymentArtifact.value.value.$refText : "";
|
|
158
|
+
if (configDeploymentArtifact.value.next) {
|
|
159
|
+
assert(configDeploymentArtifact.value.next.$type === 'IdentifierExpression');
|
|
160
|
+
configDeployment.artifact.ref.name = configDeploymentArtifact.value.next.value.$refText;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
configDeployment.artifact.ref.name = configDeploymentArtifact.value.value.$refText;
|
|
164
|
+
}
|
|
165
|
+
const configPath = path.join(pkgUri.fsPath, 'deployment-config.json');
|
|
166
|
+
await nodefs.writeFile(configPath, JSON.stringify(configDeployment, null, 2), 'utf-8');
|
|
167
|
+
log.info(`deployment-config.json written to ${configPath}`);
|
|
119
168
|
return Ok(undefined);
|
|
120
169
|
}
|
|
121
170
|
async function MissingDependencies(ctx, missing = new Set()) {
|
|
@@ -130,7 +179,7 @@ async function MissingDependencies(ctx, missing = new Set()) {
|
|
|
130
179
|
}
|
|
131
180
|
const mod = await ModuleContext.Move(ctx, ctx.FS, descriptor.value.Root);
|
|
132
181
|
assert(Result.isOk(mod));
|
|
133
|
-
const subctx =
|
|
182
|
+
const subctx = { ...ctx, ...mod.value };
|
|
134
183
|
await MissingDependencies(subctx, missing);
|
|
135
184
|
}
|
|
136
185
|
return missing;
|
package/dist/build/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/build/main.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/build/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAkB,MAAM,qCAAqC,CAAC;AAE3F,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAA4B,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAC1G,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAExE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,GAAc;IACjD,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;SACzB,QAAQ,CAAC,WAAW,EAAE,yEAAyE,EAAE,GAAG,CAAC;SACrG,QAAQ,CAAC,aAAa,EAAE,qEAAqE,EAAE,GAAG,CAAC;SACnG,WAAW,CAAC,WAAW,CAAC;SACxB,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,CAAA;AACZ,CAAC;AAGD,MAAM,OAAO,GAAG,6CAA6C,CAAA;AAC7D,MAAM,WAAW,GAAG;;;;;;;;;;;;;CAanB,CAAC,IAAI,EAAE,CAAA;AAGR,MAAM,UAAU,MAAM,CAAC,GAAc;IACjC,OAAO,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAiB,EAAE;QACvD,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;QACrC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAA;QAE7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAEzD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,qCAAqC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,GAAc,EACd,IAAoB,EACpB,MAAc,EACd,MAAc;IAEd,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAA;IAEnD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACnE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,GAAG,EAAE,CAAA;QAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,MAAM,MAAM,GAA6B,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAA;IAEjE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACjD,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAA;QACvC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAClB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAK,GAAG,EAAE,CAAA;YACtB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,+BAA+B,CAAA;QAChD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IACrD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClE,OAAO,WAAW,CAAA;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAE7D,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,sCAAsC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;QACrE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY;SACjD,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;SAC9C,OAAO,EAAE,CAAA;IAEd,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,mCAAmC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;QAClE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,kCAAkC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;QACjE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAA;IACnC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,6BAA6B,WAAW,CAAC,WAAW,aAAa,WAAW,CAAC,IAAI,EAAE,CAAA;QAC/F,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,CAAC;IAED,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACpE,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,OAAO,cAAc,CAAA;IACzB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpE,GAAG,CAAC,IAAI,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IAErD,2BAA2B;IAC3B,uFAAuF;IACvF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAEvD,2GAA2G;IAC3G,6EAA6E;IAC7E,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IAE3G,+BAA+B;IAC/B,MAAM,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,KAAK,KAAK,aAAa,IAAI,oBAAoB,CAAC,KAAK,CAAC,KAAK,KAAK,yBAAyB,CAAC,CAAC;IAC/I,MAAM,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErF,yGAAyG;IACzG,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAChD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,4FAA4F;IAC5F,4FAA4F;IAC5F,gCAAgC;IAEhC,sDAAsD;IACtD,MAAM,wBAAwB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;IACnH,MAAM,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,KAAK,KAAK,aAAa,CAAC,CAAA;IACpF,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,KAAK,sBAAsB,CAAC,CAAA;IAEvE,sFAAsF;IACtF,0CAA0C;IAC1C,yEAAyE;IACzE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,WAAW,GAAc,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAA;IAC5D,MAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEtD,oFAAoF;IACpF,4CAA4C;IAC5C,iFAAiF;IACjF,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAEhI,iGAAiG;IACjG,qCAAqC;IACrC,4GAA4G;IAC5G,MAAM,YAAY,GAAG,cAAc,EAAE,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAE1E,4EAA4E;IAC5E,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9H,IAAI,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,sBAAsB,CAAC,CAAA;QAC5E,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5F,CAAC;SAAM,CAAC;QACJ,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IACvF,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACtE,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvF,GAAG,CAAC,IAAI,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;IAE5D,OAAO,EAAE,CAAO,SAAS,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,GAA6B,EAAE,UAAU,IAAI,GAAG,EAAU;IACzF,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAE1C,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/D,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;YAC1C,SAAQ;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACxB,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAA;QACvC,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,eAAe,EAAE,QAAQ,EAAE,CAAA"}
|
package/dist/build/solution.js
CHANGED
|
@@ -25,7 +25,6 @@ export function GenerateSolution(log, svcs, deployment) {
|
|
|
25
25
|
* @returns Result with the generated solution as a JSON string, or string[] of errors
|
|
26
26
|
*/
|
|
27
27
|
export function GenerateSolutionResult(log, svcs, deployment) {
|
|
28
|
-
var _a, _b;
|
|
29
28
|
const types = svcs.validation.KumoriTypeSystem;
|
|
30
29
|
const [{ Value: dep }, errs] = types.Eval(svcs.validation.KumoriValidations.ctx(), deployment);
|
|
31
30
|
if (errs.length !== 0) {
|
|
@@ -33,7 +32,7 @@ export function GenerateSolutionResult(log, svcs, deployment) {
|
|
|
33
32
|
for (const err of errs) {
|
|
34
33
|
const node = err.node;
|
|
35
34
|
const doc = AstUtils.getDocument(node);
|
|
36
|
-
const pos =
|
|
35
|
+
const pos = node.$cstNode?.range.start || { line: 0, character: 0 };
|
|
37
36
|
const msg = `${doc.uri.fsPath}:${pos.line}:${pos.character}: type error: ${err.message}`;
|
|
38
37
|
log.error(msg);
|
|
39
38
|
errorMessages.push(msg);
|
|
@@ -47,7 +46,7 @@ export function GenerateSolutionResult(log, svcs, deployment) {
|
|
|
47
46
|
for (const err of result.err) {
|
|
48
47
|
const node = err.node;
|
|
49
48
|
const doc = AstUtils.getDocument(node);
|
|
50
|
-
const pos =
|
|
49
|
+
const pos = node.$cstNode?.range.start || { line: 0, character: 0 };
|
|
51
50
|
const msg = `${doc.uri.fsPath}:${pos.line}:${pos.character}: json conversion error: ${err.message}`;
|
|
52
51
|
log.error(msg);
|
|
53
52
|
errorMessages.push(msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solution.js","sourceRoot":"","sources":["../../src/build/solution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4DAA4D,CAAA;AAGvF,OAAO,EAAE,MAAM,EAAE,MAAM,iDAAiD,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAA;AAG3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAc,EAAE,IAAoB,EAAE,UAA8B;IACjG,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IAE5D,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAA;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAClC,GAAc,EACd,IAAoB,EACpB,UAA8B
|
|
1
|
+
{"version":3,"file":"solution.js","sourceRoot":"","sources":["../../src/build/solution.ts"],"names":[],"mappings":"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"}
|
package/dist/check/main.js
CHANGED
|
@@ -27,7 +27,7 @@ export function Action(log) {
|
|
|
27
27
|
const svcs = createKumoriServices(NodeFileSystem).Kumori;
|
|
28
28
|
const fs = svcs.shared.workspace.FileSystemProvider;
|
|
29
29
|
const ErrHandler = (v) => DefaultErrHandler(log, v);
|
|
30
|
-
const ctx = ErrHandler(Result.mapErr(await ModuleContext(fs, URI.file(path.resolve(target
|
|
30
|
+
const ctx = ErrHandler(Result.mapErr(await ModuleContext(fs, URI.file(path.resolve(target ?? "."))), (err) => [err]));
|
|
31
31
|
ErrHandler(await Check(log, svcs, ctx));
|
|
32
32
|
};
|
|
33
33
|
}
|
package/dist/check/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/check/main.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,qCAAqC,CAAA;AAE5C,OAAO,EAAyC,GAAG,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAE7E,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,GAAc;IACnD,MAAM,CAAC,GAAG,GAAG;SACV,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,aAAa,EAAE,sCAAsC,CAAC;SAC/D,WAAW,CAAC,WAAW,CAAC;SACxB,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACtB,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,OAAO,GAAG,iCAAiC,CAAA;AACjD,MAAM,WAAW,GAAG;CACnB,CAAC,IAAI,EAAE,CAAA;AAGR,MAAM,UAAU,MAAM,CAAC,GAAc;IACnC,OAAO,KAAK,EAAE,MAAM,EAAiB,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;QACrC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAA;QAE7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAA;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAA;QACnD,MAAM,UAAU,GAAG,CAAI,CAAsB,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAE3E,MAAM,GAAG,GAAG,UAAU,CACpB,MAAM,CAAC,MAAM,CACX,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/check/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import (
|
|
2
|
+
{{#each imports}}
|
|
3
|
+
"{{this}}"
|
|
4
|
+
{{/each}}
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
deployment {
|
|
8
|
+
name "{{name}}"
|
|
9
|
+
artifact {{artifact}}
|
|
10
|
+
resilience {{resilience}}
|
|
11
|
+
|
|
12
|
+
config {
|
|
13
|
+
{{#each config}}
|
|
14
|
+
{{this}}
|
|
15
|
+
{{/each}}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
resource {
|
|
19
|
+
{{#each resources}}
|
|
20
|
+
{{this}}
|
|
21
|
+
{{/each}}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
{{#if scale}}
|
|
25
|
+
scale {
|
|
26
|
+
{{#each scale}}
|
|
27
|
+
{{this}}
|
|
28
|
+
{{/each}}
|
|
29
|
+
}
|
|
30
|
+
{{else}}
|
|
31
|
+
scale {{scaleValue}}
|
|
32
|
+
{{/if}}
|
|
33
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result } from "@kumori/kdsl-lsp/util/result.js";
|
|
2
|
+
import { Command } from "@commander-js/extra-typings";
|
|
3
|
+
import { CommanderActionParams } from "../../util.js";
|
|
4
|
+
import { KumoriServices } from "@kumori/kdsl-lsp/language/kumori.js";
|
|
5
|
+
import { ILogLayer } from "loglayer";
|
|
6
|
+
export declare const Description: string;
|
|
7
|
+
declare const _default: {
|
|
8
|
+
Register: typeof Register;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
11
|
+
export declare function Register(cmd: Command, log: ILogLayer): Command<[string, string], {}, {}>;
|
|
12
|
+
export type Exec = CommanderActionParams<ReturnType<typeof Register>>;
|
|
13
|
+
export type Params = Parameters<Exec>;
|
|
14
|
+
export declare function Action(log: ILogLayer): Exec;
|
|
15
|
+
export declare function GenDeployment(log: ILogLayer, svcs: KumoriServices, input: string, output: string): Promise<Result<void, string[]>>;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Err, Ok } from "@kumori/kdsl-lsp/util/result.js";
|
|
2
|
+
import { NodeFileSystem } from "langium/node";
|
|
3
|
+
import { URI } from "langium";
|
|
4
|
+
import { createKumoriServices, } from "@kumori/kdsl-lsp/language/kumori.js";
|
|
5
|
+
import Handlebars from "handlebars";
|
|
6
|
+
import * as files from "node:fs";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
const Summary = `generates a deployment based on a deployment config JSON`;
|
|
9
|
+
export const Description = `
|
|
10
|
+
After running the command kdsl build, which generates a deployment-config.json file containing
|
|
11
|
+
the JSON representation of a particular deployment, this command can be used to generate the corresponding
|
|
12
|
+
deployment artifact in Kumori DSL syntax.
|
|
13
|
+
|
|
14
|
+
Sometimes it is really useful to apply patches directly to the JSON representation of a deployment,
|
|
15
|
+
and then regenerate the Kumori DSL source code for that deployment. This command facilitates that process.
|
|
16
|
+
|
|
17
|
+
This command attempts to search for a deployment-config.json file in the current working directory,
|
|
18
|
+
and generates a deployment artifact file named generated-deployment.kumori in the same directory.
|
|
19
|
+
|
|
20
|
+
Additionally, you can specify a different path to where the deployment-config.json file is located as well
|
|
21
|
+
as a different output path for the generated Kumori DSL file.
|
|
22
|
+
|
|
23
|
+
Examples:
|
|
24
|
+
kdsl deployment gen
|
|
25
|
+
kdsl deployment gen path/to/deployment-config.json
|
|
26
|
+
kdsl deployment gen path/to/deployment-config.json path/to/output/generated-deployment.kumori
|
|
27
|
+
`.trim();
|
|
28
|
+
export default { Register };
|
|
29
|
+
export function Register(cmd, log) {
|
|
30
|
+
const c = cmd
|
|
31
|
+
.command("generate")
|
|
32
|
+
.alias("gen")
|
|
33
|
+
.argument("[input]", `path to deployment-config.json file`, "deployment-config.json")
|
|
34
|
+
.argument("[output]", `path to output generated Kumori DSL file`, "generated-deployment.kumori")
|
|
35
|
+
.summary(Summary)
|
|
36
|
+
.description(Description)
|
|
37
|
+
.helpOption(true)
|
|
38
|
+
.action(Action(log));
|
|
39
|
+
return c;
|
|
40
|
+
}
|
|
41
|
+
export function Action(log) {
|
|
42
|
+
return async (input = "deployment-config.json", output = "generated-deployment.kumori") => {
|
|
43
|
+
const svcs = createKumoriServices(NodeFileSystem).Kumori;
|
|
44
|
+
await GenDeployment(log, svcs, input, output);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export async function GenDeployment(log, svcs, input, output) {
|
|
48
|
+
// Read the input file
|
|
49
|
+
const fs = svcs.shared.workspace.FileSystemProvider;
|
|
50
|
+
let inputFile = "";
|
|
51
|
+
try {
|
|
52
|
+
const inputFilePath = path.resolve(input);
|
|
53
|
+
inputFile = fs.readFileSync(URI.file(inputFilePath));
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
log.error(`Input file not found: ${input} error: ${e}`);
|
|
57
|
+
return Err([`Input file not found: ${input} error: ${e}`]);
|
|
58
|
+
}
|
|
59
|
+
// Parse the JSON
|
|
60
|
+
let deploymentJson;
|
|
61
|
+
try {
|
|
62
|
+
deploymentJson = JSON.parse(inputFile);
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
log.error(`Failed to parse JSON from input file: ${input} error: ${e}`);
|
|
66
|
+
return Err([`Failed to parse JSON from input file: ${input} error: ${e}`]);
|
|
67
|
+
}
|
|
68
|
+
const name = deploymentJson.name;
|
|
69
|
+
const resilience = deploymentJson.config.resilience;
|
|
70
|
+
// Build the import path for our artifact. If package is empty, we skip it.
|
|
71
|
+
// Otherwise, we import everything up until the last slash of the package, which is the actual route
|
|
72
|
+
// to the artifact within the module
|
|
73
|
+
let artifactImport = undefined;
|
|
74
|
+
const lastSlash = deploymentJson.artifact.ref.package.lastIndexOf("/");
|
|
75
|
+
if (deploymentJson.artifact.ref.package !== "") {
|
|
76
|
+
artifactImport =
|
|
77
|
+
deploymentJson.artifact.ref.domain +
|
|
78
|
+
"/" +
|
|
79
|
+
deploymentJson.artifact.ref.module +
|
|
80
|
+
"/" +
|
|
81
|
+
deploymentJson.artifact.ref.package.substring(0, lastSlash);
|
|
82
|
+
}
|
|
83
|
+
const imports = artifactImport ? [artifactImport] : [];
|
|
84
|
+
// Build the artifact name <package>.<name>
|
|
85
|
+
// Again, if the package is empty, we just need to use the name
|
|
86
|
+
const artifact = deploymentJson.artifact.ref.package !== ""
|
|
87
|
+
? deploymentJson.artifact.ref.package.substring(lastSlash + 1) +
|
|
88
|
+
"." +
|
|
89
|
+
deploymentJson.artifact.ref.name
|
|
90
|
+
: deploymentJson.artifact.ref.name;
|
|
91
|
+
const resources = [];
|
|
92
|
+
Object.entries(deploymentJson.config.resource).forEach(([key, value]) => {
|
|
93
|
+
const resourceName = Object.entries(Object(value))[0][1];
|
|
94
|
+
// First letter always uppercase for the resource type
|
|
95
|
+
const resourceType = Object.entries(Object(value))[0][0].charAt(0).toUpperCase() +
|
|
96
|
+
Object.entries(Object(value))[0][0].slice(1);
|
|
97
|
+
const resource = `${key} kumori.${resourceType}("${resourceName}")`;
|
|
98
|
+
resources.push(resource);
|
|
99
|
+
});
|
|
100
|
+
// Make sure to import "kumori" as well if we have resources
|
|
101
|
+
if (Object.keys(deploymentJson.config.resource).length > 0) {
|
|
102
|
+
if (!imports.includes("kumori")) {
|
|
103
|
+
imports.push("kumori");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const config = [];
|
|
107
|
+
Object.entries(deploymentJson.config.parameter).forEach(([key, value]) => {
|
|
108
|
+
const formattedValue = typeof value === "string" ? `"${value}"` : value;
|
|
109
|
+
config.push(`${key} ${formattedValue}`);
|
|
110
|
+
// If the value starts with "<something>.", we must import that as well
|
|
111
|
+
const splitValue = String(value).split(".");
|
|
112
|
+
if (splitValue.length == 2 && splitValue[1] != "") {
|
|
113
|
+
const importName = splitValue[0];
|
|
114
|
+
if (!imports.includes(importName)) {
|
|
115
|
+
imports.push(importName);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
const scale = [];
|
|
120
|
+
let scaleValue = -1;
|
|
121
|
+
// We do not include inbound roles, they are always 1
|
|
122
|
+
// If the artifact is a component, we can define the scale as just a number
|
|
123
|
+
if (deploymentJson.artifact.ref.kind === "component") {
|
|
124
|
+
scaleValue = Object(deploymentJson.config.scale).hsize;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
Object.entries(deploymentJson.config.scale.detail)
|
|
128
|
+
.filter(([key]) => key !== "Inbound")
|
|
129
|
+
.forEach(([key, value]) => {
|
|
130
|
+
scale.push(`${key} ${Object(value).hsize}`);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// Call handlebars to generate the output file
|
|
134
|
+
const templateFile = fs.readFileSync(URI.file(new URL("./deployment-template.kumori", import.meta.url).pathname));
|
|
135
|
+
const template = Handlebars.compile(templateFile, { noEscape: true });
|
|
136
|
+
const outputFile = template({
|
|
137
|
+
name,
|
|
138
|
+
artifact,
|
|
139
|
+
resilience,
|
|
140
|
+
imports,
|
|
141
|
+
config,
|
|
142
|
+
scale,
|
|
143
|
+
scaleValue,
|
|
144
|
+
resources,
|
|
145
|
+
});
|
|
146
|
+
// Write the output file
|
|
147
|
+
try {
|
|
148
|
+
const outputFilePath = path.resolve(output);
|
|
149
|
+
files.writeFileSync(outputFilePath, outputFile);
|
|
150
|
+
log.info(`Generated deployment artifact at: ${output}`);
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
log.error(`Failed to write output file: ${output} error: ${e}`);
|
|
154
|
+
return Err([`Failed to write output file: ${output} error: ${e}`]);
|
|
155
|
+
}
|
|
156
|
+
return Ok(undefined);
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/deployment/gen/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type DeploymentJson = {
|
|
2
|
+
name: string;
|
|
3
|
+
config: {
|
|
4
|
+
parameter: Record<string, {
|
|
5
|
+
[k: string]: unknown;
|
|
6
|
+
}>;
|
|
7
|
+
resource: Record<string, {
|
|
8
|
+
[k: string]: unknown;
|
|
9
|
+
}>;
|
|
10
|
+
resilience: number;
|
|
11
|
+
scale: {
|
|
12
|
+
detail: Record<string, {
|
|
13
|
+
hsize: number;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
artifact: {
|
|
18
|
+
ref: {
|
|
19
|
+
version: [number, number, number];
|
|
20
|
+
kind: "service" | "component" | string;
|
|
21
|
+
domain: string;
|
|
22
|
+
module: string;
|
|
23
|
+
name: string;
|
|
24
|
+
package: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deployment/gen/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from "@commander-js/extra-typings";
|
|
2
|
+
import { ILogLayer } from "loglayer";
|
|
3
|
+
declare const _default: {
|
|
4
|
+
Register: typeof Register;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
7
|
+
export declare function Register(cmd: Command, log: ILogLayer): Command<[], {}, {}>;
|
|
8
|
+
export declare const Description: string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import gen from "./gen/main.js";
|
|
2
|
+
export default { Register };
|
|
3
|
+
export function Register(cmd, log) {
|
|
4
|
+
const program = cmd
|
|
5
|
+
.command("deployment")
|
|
6
|
+
.summary(Summary)
|
|
7
|
+
.description(Description)
|
|
8
|
+
.helpCommand(false)
|
|
9
|
+
.helpOption(false);
|
|
10
|
+
gen.Register(program, log);
|
|
11
|
+
return program;
|
|
12
|
+
}
|
|
13
|
+
const Summary = `deployment operations`;
|
|
14
|
+
export const Description = `
|
|
15
|
+
Provides access to operations on deployments.
|
|
16
|
+
`.trim();
|
|
17
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/deployment/main.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,eAAe,CAAA;AAE/B,eAAe,EAAE,QAAQ,EAAE,CAAA;AAC3B,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,GAAc;IACnD,MAAM,OAAO,GAAG,GAAG;SAChB,OAAO,CAAC,YAAY,CAAC;SACrB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,WAAW,CAAC;SACxB,WAAW,CAAC,KAAK,CAAC;SAClB,UAAU,CAAC,KAAK,CAAC,CAAA;IAEpB,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAE1B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,OAAO,GAAG,uBAAuB,CAAA;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG;;CAE1B,CAAC,IAAI,EAAE,CAAA"}
|