cdk8s-cli 2.121.0 → 2.123.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.
- package/lib/cli/cmds/import.js +2 -1
- package/lib/import/codegen.d.ts +35 -0
- package/lib/import/codegen.js +139 -3
- package/lib/import/dispatch.js +6 -1
- package/lib/import/helm.d.ts +15 -0
- package/lib/import/helm.js +147 -0
- package/package.json +3 -3
package/lib/cli/cmds/import.js
CHANGED
|
@@ -20,6 +20,7 @@ class Command {
|
|
|
20
20
|
.example('cdk8s import jenkins.io_jenkins_crd.yaml', 'Imports constructs for the Jenkins custom resource definition from a file')
|
|
21
21
|
.example('cdk8s import mattermost:=mattermost_crd.yaml', 'Imports constructs for the mattermost cluster custom resource definition using a custom module name')
|
|
22
22
|
.example('cdk8s import github:crossplane/crossplane@0.14.0', 'Imports constructs for a GitHub repo using doc.crds.dev')
|
|
23
|
+
.example('cdk8s import helm:https://charts.bitnami.com/bitnami/mysql@9.10.10', 'Imports the specified version of helm chart')
|
|
23
24
|
.option('save', { type: 'boolean', required: false, default: true, desc: "Dont save the import URL in the 'imports' section of the cdk8s.yaml configuration file.", alias: 's' })
|
|
24
25
|
.option('output', { default: DEFAULT_OUTDIR, type: 'string', desc: 'Output directory', alias: 'o' })
|
|
25
26
|
.option('exclude', { type: 'array', desc: 'Do not import types that match these regular expressions. They will be represented as the "any" type (only for "k8s")' })
|
|
@@ -39,4 +40,4 @@ class Command {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
module.exports = new Command();
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHlDQUEwRDtBQUMxRCxvREFBdUQ7QUFDdkQsMENBQXVEO0FBQ3ZELHFDQUEwQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFjLEdBQUUsQ0FBQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6RCxNQUFNLE9BQU87SUFBYjtRQUNrQixZQUFPLEdBQUcsZUFBZSxDQUFDO1FBQzFCLGFBQVEsR0FBRywyREFBMkQsQ0FBQztRQUN2RSxZQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXhDLFlBQU8sR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDakQsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnTEFBZ0wsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDclAsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGlFQUFpRSx5QkFBbUIsRUFBRSxDQUFDO2FBQ25ILE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRSwwREFBMEQsQ0FBQzthQUN6RyxPQUFPLENBQUMseUJBQXlCLEVBQUUsa0RBQWtELENBQUM7YUFDdEYsT0FBTyxDQUFDLDBDQUEwQyxFQUFFLDJFQUEyRSxDQUFDO2FBQ2hJLE9BQU8sQ0FBQyw4Q0FBOEMsRUFBRSxxR0FBcUcsQ0FBQzthQUM5SixPQUFPLENBQUMsa0RBQWtELEVBQUUseURBQXlELENBQUM7YUFDdEgsT0FBTyxDQUFDLG9FQUFvRSxFQUFFLDZDQUE2QyxDQUFDO2FBRTVILE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUseUZBQXlGLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hMLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUNuRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsdUhBQXVILEVBQUUsQ0FBQzthQUNuSyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsK0tBQStLLEVBQUUsQ0FBQzthQUNqTyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBYzFKLENBQUM7SUFaUSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQVM7UUFDNUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzRSxNQUFNLE9BQU8sR0FBYSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0UsTUFBTSxLQUFLLEdBQWlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFZLENBQUMsQ0FBQztRQUVuRixNQUFNLElBQUEseUJBQWMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDN0IsZUFBZTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnU3luYywgSW1wb3J0U3BlYyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBpbXBvcnREaXNwYXRjaCB9IGZyb20gJy4uLy4uL2ltcG9ydC9kaXNwYXRjaCc7XG5pbXBvcnQgeyBERUZBVUxUX0FQSV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2s4cyc7XG5pbXBvcnQgeyBwYXJzZUltcG9ydHMgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgY29uZmlnID0gcmVhZENvbmZpZ1N5bmMoKTtcblxuY29uc3QgREVGQVVMVF9PVVRESVIgPSAnaW1wb3J0cyc7XG5jb25zdCBMQU5HVUFHRVMgPSBbJ3R5cGVzY3JpcHQnLCAncHl0aG9uJywgJ2phdmEnLCAnZ28nXTtcblxuY2xhc3MgQ29tbWFuZCBpbXBsZW1lbnRzIHlhcmdzLkNvbW1hbmRNb2R1bGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZCA9ICdpbXBvcnQgW1NQRUNdJztcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaWJlID0gJ0ltcG9ydHMgQVBJIG9iamVjdHMgdG8geW91ciBhcHAgYnkgZ2VuZXJhdGluZyBjb25zdHJ1Y3RzLic7XG4gIHB1YmxpYyByZWFkb25seSBhbGlhc2VzID0gWydnZW4nLCAnaW1wb3J0JywgJ2dlbmVyYXRlJ107XG5cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkZXIgPSAoYXJnczogeWFyZ3MuQXJndikgPT4gYXJnc1xuICAgIC5wb3NpdGlvbmFsKCdTUEVDJywgeyBkZWZhdWx0OiBjb25maWc/LmltcG9ydHMsIGRlc2M6ICdpbXBvcnQgc3BlYyB3aXRoIHRoZSBzeW50YXggW05BTUU6PV1TUEVDIHdoZXJlIE5BTUUgaXMgYW4gb3B0aW9uYWwgbW9kdWxlIG5hbWUgYW5kIHN1cHBvcnRlZCBTUEVDIGFyZTogazhzLCBjcmQueWFtbCwgaHR0cHM6Ly9kb21haW4vY3JkLnlhbWwsIGdpdGh1YjphY2NvdW50L3JlcG9bQFZFUlNJT05dKS4nLCBhcnJheTogdHJ1ZSB9KVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzJywgYEltcG9ydHMgS3ViZXJuZXRlcyBBUEkgb2JqZWN0cyB0byBpbXBvcnRzL2s4cy50cy4gRGVmYXVsdHMgdG8gJHtERUZBVUxUX0FQSV9WRVJTSU9OfWApXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHMgLS1uby1jbGFzcy1wcmVmaXgnLCAnSW1wb3J0cyBLdWJlcm5ldGVzIEFQSSBvYmplY3RzIHdpdGhvdXQgdGhlIFwiS3ViZVwiIHByZWZpeCcpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHNAMS4xMy4wJywgJ0ltcG9ydHMgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBLdWJlcm5ldGVzIEFQSScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBqZW5raW5zLmlvX2plbmtpbnNfY3JkLnlhbWwnLCAnSW1wb3J0cyBjb25zdHJ1Y3RzIGZvciB0aGUgSmVua2lucyBjdXN0b20gcmVzb3VyY2UgZGVmaW5pdGlvbiBmcm9tIGEgZmlsZScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBtYXR0ZXJtb3N0Oj1tYXR0ZXJtb3N0X2NyZC55YW1sJywgJ0ltcG9ydHMgY29uc3RydWN0cyBmb3IgdGhlIG1hdHRlcm1vc3QgY2x1c3RlciBjdXN0b20gcmVzb3VyY2UgZGVmaW5pdGlvbiB1c2luZyBhIGN1c3RvbSBtb2R1bGUgbmFtZScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBnaXRodWI6Y3Jvc3NwbGFuZS9jcm9zc3BsYW5lQDAuMTQuMCcsICdJbXBvcnRzIGNvbnN0cnVjdHMgZm9yIGEgR2l0SHViIHJlcG8gdXNpbmcgZG9jLmNyZHMuZGV2JylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGhlbG06aHR0cHM6Ly9jaGFydHMuYml0bmFtaS5jb20vYml0bmFtaS9teXNxbEA5LjEwLjEwJywgJ0ltcG9ydHMgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIG9mIGhlbG0gY2hhcnQnKVxuXG4gICAgLm9wdGlvbignc2F2ZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IHRydWUsIGRlc2M6IFwiRG9udCBzYXZlIHRoZSBpbXBvcnQgVVJMIGluIHRoZSAnaW1wb3J0cycgc2VjdGlvbiBvZiB0aGUgY2RrOHMueWFtbCBjb25maWd1cmF0aW9uIGZpbGUuXCIsIGFsaWFzOiAncycgfSlcbiAgICAub3B0aW9uKCdvdXRwdXQnLCB7IGRlZmF1bHQ6IERFRkFVTFRfT1VURElSLCB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ091dHB1dCBkaXJlY3RvcnknLCBhbGlhczogJ28nIH0pXG4gICAgLm9wdGlvbignZXhjbHVkZScsIHsgdHlwZTogJ2FycmF5JywgZGVzYzogJ0RvIG5vdCBpbXBvcnQgdHlwZXMgdGhhdCBtYXRjaCB0aGVzZSByZWd1bGFyIGV4cHJlc3Npb25zLiBUaGV5IHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFwiYW55XCIgdHlwZSAob25seSBmb3IgXCJrOHNcIiknIH0pXG4gICAgLm9wdGlvbignY2xhc3MtcHJlZml4JywgeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ0EgcHJlZml4IHRvIGFkZCB0byBhbGwgZ2VuZXJhdGVkIGNsYXNzIG5hbWVzLiBCeSBkZWZhdWx0LCB0aGlzIGlzIFwiS3ViZVwiIGZvciBcIms4c1wiIGltcG9ydHMgYW5kIGRpc2FibGVkIGZvciBDUkQgaW1wb3J0cy4gVXNlIC0tbm8tY2xhc3MtcHJlZml4IHRvIGRpc2FibGUuIE11c3QgYmUgUGFzY2FsQ2FzZScgfSlcbiAgICAub3B0aW9uKCdsYW5ndWFnZScsIHsgZGVmYXVsdDogY29uZmlnPy5sYW5ndWFnZSwgZGVtYW5kOiB0cnVlLCB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ091dHB1dCBwcm9ncmFtbWluZyBsYW5ndWFnZScsIGFsaWFzOiAnbCcsIGNob2ljZXM6IExBTkdVQUdFUyB9KTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWVQcmVmaXggPSBhcmd2LmNsYXNzUHJlZml4ID09PSBmYWxzZSA/ICcnIDogYXJndi5jbGFzc1ByZWZpeDtcbiAgICBjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoYXJndi5zcGVjKSA/IGFyZ3Yuc3BlYyA6IFthcmd2LnNwZWNdO1xuICAgIGNvbnN0IHNwZWNzOiBJbXBvcnRTcGVjW10gPSBpbXBvcnRzLmZpbHRlcihzcGVjID0+IHNwZWMgIT0gbnVsbCkubWFwKHBhcnNlSW1wb3J0cyk7XG5cbiAgICBhd2FpdCBpbXBvcnREaXNwYXRjaChzcGVjcywgYXJndiwge1xuICAgICAgb3V0ZGlyOiBhcmd2Lm91dHB1dCxcbiAgICAgIHRhcmdldExhbmd1YWdlOiBhcmd2Lmxhbmd1YWdlLFxuICAgICAgY2xhc3NOYW1lUHJlZml4LFxuICAgICAgc2F2ZTogYXJndi5zYXZlLFxuICAgIH0pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTtcbiJdfQ==
|
package/lib/import/codegen.d.ts
CHANGED
|
@@ -25,3 +25,38 @@ export declare function getTypeName(custom: boolean, kind: string, version: stri
|
|
|
25
25
|
export declare function getConstructTypeName(def: ApiObjectDefinition): string;
|
|
26
26
|
export declare function getPropsTypeName(def: ApiObjectDefinition): string;
|
|
27
27
|
export declare function generateConstruct(typegen: TypeGenerator, def: ApiObjectDefinition): void;
|
|
28
|
+
/**
|
|
29
|
+
* Emit imports for generated helm construct
|
|
30
|
+
* @param code CodeMaker istance
|
|
31
|
+
*/
|
|
32
|
+
export declare function emitHelmHeader(code: CodeMaker): void;
|
|
33
|
+
/**
|
|
34
|
+
* Helm Object Definition
|
|
35
|
+
*/
|
|
36
|
+
export interface HelmObjectDefinition {
|
|
37
|
+
/**
|
|
38
|
+
* `values.schema.json` for the helm chart
|
|
39
|
+
*/
|
|
40
|
+
readonly schema: JSONSchema4 | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Chart name
|
|
43
|
+
*/
|
|
44
|
+
readonly chartName: string;
|
|
45
|
+
/**
|
|
46
|
+
* Chart url
|
|
47
|
+
*/
|
|
48
|
+
readonly chartUrl: string;
|
|
49
|
+
/**
|
|
50
|
+
* Chart version
|
|
51
|
+
*/
|
|
52
|
+
readonly chartVersion: string;
|
|
53
|
+
/**
|
|
54
|
+
* Chart dependencies
|
|
55
|
+
*/
|
|
56
|
+
readonly chartDependencies: string[];
|
|
57
|
+
/**
|
|
58
|
+
* Fully qualified name for the construct
|
|
59
|
+
*/
|
|
60
|
+
readonly fqn?: string;
|
|
61
|
+
}
|
|
62
|
+
export declare function generateHelmConstruct(typegen: TypeGenerator, def: HelmObjectDefinition): void;
|
package/lib/import/codegen.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateConstruct = exports.getPropsTypeName = exports.getConstructTypeName = exports.getTypeName = exports.emitHeader = void 0;
|
|
3
|
+
exports.generateHelmConstruct = exports.emitHelmHeader = exports.generateConstruct = exports.getPropsTypeName = exports.getConstructTypeName = exports.getTypeName = exports.emitHeader = void 0;
|
|
4
4
|
const codemaker_1 = require("codemaker");
|
|
5
5
|
const json2jsii_1 = require("json2jsii");
|
|
6
6
|
const MANIFEST_STATIC_METHOD = 'manifest';
|
|
@@ -53,7 +53,7 @@ function generateConstruct(typegen, def) {
|
|
|
53
53
|
// `propsTypeName` could also be "any" if we can't parse the schema for some reason
|
|
54
54
|
const propsTypeName = emitPropsStruct();
|
|
55
55
|
const groupPrefix = def.group ? `${def.group}/` : '';
|
|
56
|
-
const hasRequired = (schema
|
|
56
|
+
const hasRequired = hasRequiredProps(schema);
|
|
57
57
|
const defaultProps = hasRequired ? '' : ' = {}';
|
|
58
58
|
emitConstruct();
|
|
59
59
|
function emitPropsStruct() {
|
|
@@ -158,4 +158,140 @@ function generateConstruct(typegen, def) {
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
exports.generateConstruct = generateConstruct;
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0Q7QUFJcEQseUNBQTBDO0FBRTFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztBQStCekI7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBZSxFQUFFLE1BQWU7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQ3hGO1NBQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDckU7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQVRELGdDQVNDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUN4RSxzRUFBc0U7SUFDdEUsdUZBQXVGO0lBQ3ZGLDJFQUEyRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQU5ELGtDQU1DO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBd0I7O0lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQUEsR0FBRyxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQUEs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LElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxhQUFhLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsYUFBYSxhQUFhLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBNUlELDhDQTRJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGVNYWtlciwgdG9QYXNjYWxDYXNlIH0gZnJvbSAnY29kZW1ha2VyJztcbi8vIHdlIGp1c3QgbmVlZCB0aGUgdHlwZXMgZnJvbSBqc29uLXNjaGVtYVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgSlNPTlNjaGVtYTQgfSBmcm9tICdqc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBUeXBlR2VuZXJhdG9yIH0gZnJvbSAnanNvbjJqc2lpJztcblxuY29uc3QgTUFOSUZFU1RfU1RBVElDX01FVEhPRCA9ICdtYW5pZmVzdCc7XG5jb25zdCBHVktfU1RBVElDID0gJ0dWSyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpT2JqZWN0RGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSBncm91cDogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZW1hOiBKU09OU2NoZW1hNDtcblxuICAvKipcbiAgICogSXMgdGhpcyBpcyBhIGN1c3RvbSByZXNvdXJjZSAoaW1wb3J0ZWQgZnJvbSBhIENSRCkgb3IgYSBjb3JlIEFQSSBvYmplY3Q/XG4gICAqL1xuICByZWFkb25seSBjdXN0b206IGJvb2xlYW47XG5cbiAgLypcbiAgICogSW5kaWNhdGVzIGlmIGEgcHJlZml4IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uc3RydWN0IGNsYXNzIG5hbWUuIEZvclxuICAgKiBleGFtcGxlLCBmb3IgbmF0aXZlIGs4cyBhcGkgb2JqZWN0cywgd2UgYWRkIGBLdWJlYCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgLypcbiAgICogSW5kaWNhdGVzIGlmIGEgc3VmZml4IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uc3RydWN0IGNsYXNzIG5hbWUuIEZvclxuICAgKiBleGFtcGxlLCBmb3IgbXVsdGktdmVyc2lvbmVkIGNyZHMsIHdlIGFkZCB0aGUgdmVyc2lvbiBhcyB0aGUgc3VmZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICByZWFkb25seSBzdWZmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW1pdHMgdGhlIGhlYWRlciBmb3IgYSBnZW5lcmF0ZWQgaW1wb3J0cyBmaWxlLlxuICpcbiAqIEBwYXJhbSBjdXN0b20gLSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgYmVpbmcgZW1pdHRlZCBmb3IgYSBjdXN0b20gcmVzb3VyY2VcbiAqIChpbXBvcnRlZCBmcm9tIGEgQ1JEKSBvciBhIGNvcmUgQVBJIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdEhlYWRlcihjb2RlOiBDb2RlTWFrZXIsIGN1c3RvbTogYm9vbGVhbikge1xuICBjb2RlLmxpbmUoJy8vIGdlbmVyYXRlZCBieSBjZGs4cycpO1xuICBpZiAoY3VzdG9tKSB7XG4gICAgY29kZS5saW5lKCdpbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSBcXCdjZGs4c1xcJzsnKTtcbiAgfSBlbHNlIHtcbiAgICBjb2RlLmxpbmUoJ2ltcG9ydCB7IEFwaU9iamVjdCwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gXFwnY2RrOHNcXCc7Jyk7XG4gIH1cbiAgY29kZS5saW5lKCdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7Jyk7XG4gIGNvZGUubGluZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZU5hbWUoY3VzdG9tOiBib29sZWFuLCBraW5kOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xuICAvLyBhZGQgYW4gQVBJIHZlcnNpb24gcG9zdGZpeCBvbmx5IGlmIHRoaXMgaXMgY29yZSBBUEkgKGBpbXBvcnQgazhzYCkuXG4gIC8vIFRPRE8gPSB3aGF0IGFib3V0IHRoZSByZXN0IG9mIHRoZSBuYW1lc3BhY2U/IHRoZSBzYW1lIHJlc291cmNlIGNhbiBleGlzdCBpbiBtdWx0aXBsZVxuICAvLyBhcGkgZ3JvdXBzIChJbmdyZXNzIGZvciBleGFtcGxlIGV4aXN0cyBpbiAnZXh0ZW5zaW9ucycgYW5kICduZXR3b3JraW5nJylcbiAgY29uc3QgcG9zdGZpeCA9IChjdXN0b20gfHwgdmVyc2lvbiA9PT0gJ3YxJykgPyAnJyA6IHRvUGFzY2FsQ2FzZSh2ZXJzaW9uKTtcbiAgcmV0dXJuIGAke2tpbmR9JHtwb3N0Zml4fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgcHJlZml4ID0gZGVmLnByZWZpeCA/PyAnJztcbiAgY29uc3Qgc3VmZml4ID0gZGVmLnN1ZmZpeCA/PyAnJztcbiAgcmV0dXJuIFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoYCR7cHJlZml4fSR7Z2V0VHlwZU5hbWUoZGVmLmN1c3RvbSwgZGVmLmtpbmQsIGRlZi52ZXJzaW9uKX0ke3N1ZmZpeH1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BzVHlwZU5hbWUoZGVmOiBBcGlPYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWYpO1xuICByZXR1cm4gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHtjb25zdHJ1Y3ROYW1lfVByb3BzYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNvbnN0cnVjdCh0eXBlZ2VuOiBUeXBlR2VuZXJhdG9yLCBkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgY29uc3RydWN0TmFtZSA9IGdldENvbnN0cnVjdFR5cGVOYW1lKGRlZik7XG5cbiAgaWYgKGRlZi5jdXN0b20pIHtcbiAgICB0eXBlZ2VuLmVtaXRDdXN0b21UeXBlKCdBcGlPYmplY3RNZXRhZGF0YScsICgpID0+IHt9KTtcbiAgfVxuXG4gIHR5cGVnZW4uZW1pdEN1c3RvbVR5cGUoY29uc3RydWN0TmFtZSwgY29kZSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gZGVmLnNjaGVtYTtcblxuICAgIC8vIGBwcm9wc1R5cGVOYW1lYCBjb3VsZCBhbHNvIGJlIFwiYW55XCIgaWYgd2UgY2FuJ3QgcGFyc2UgdGhlIHNjaGVtYSBmb3Igc29tZSByZWFzb25cbiAgICBjb25zdCBwcm9wc1R5cGVOYW1lID0gZW1pdFByb3BzU3RydWN0KCk7XG4gICAgY29uc3QgZ3JvdXBQcmVmaXggPSBkZWYuZ3JvdXAgPyBgJHtkZWYuZ3JvdXB9L2AgOiAnJztcbiAgICBjb25zdCBoYXNSZXF1aXJlZCA9IHNjaGVtYT8ucmVxdWlyZWQgJiYgQXJyYXkuaXNBcnJheShzY2hlbWEucmVxdWlyZWQpICYmIHNjaGVtYS5yZXF1aXJlZC5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGhhc1JlcXVpcmVkID8gJycgOiAnID0ge30nO1xuICAgIGVtaXRDb25zdHJ1Y3QoKTtcblxuICAgIGZ1bmN0aW9uIGVtaXRQcm9wc1N0cnVjdCgpIHtcbiAgICAgIGNvbnN0IHByb3BzU2NoZW1hID0gY3JlYXRlUHJvcHNTdHJ1Y3RTY2hlbWEoKTtcbiAgICAgIGNvbnN0IHByb3BzU3RydWN0TmFtZSA9IGdldFByb3BzVHlwZU5hbWUoZGVmKTtcbiAgICAgIHJldHVybiB0eXBlZ2VuLmVtaXRUeXBlKHByb3BzU3RydWN0TmFtZSwgcHJvcHNTY2hlbWEsIGRlZi5mcW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3BzU3RydWN0U2NoZW1hKCkge1xuICAgICAgY29uc3QgY29weTogSlNPTlNjaGVtYTQgPSB7IC4uLmRlZi5zY2hlbWEgfHwge30gfTtcbiAgICAgIGNvbnN0IHByb3BzID0gY29weS5wcm9wZXJ0aWVzID0gY29weS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgZGVsZXRlIHByb3BzLmFwaVZlcnNpb247XG4gICAgICBkZWxldGUgcHJvcHMua2luZDtcbiAgICAgIGRlbGV0ZSBwcm9wcy5zdGF0dXM7XG4gICAgICBkZWxldGUgY29weVsneC1rdWJlcm5ldGVzLWdyb3VwLXZlcnNpb24ta2luZCddO1xuXG4gICAgICBjb3B5LnJlcXVpcmVkID0gY29weS5yZXF1aXJlZCB8fCBbXTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29weS5yZXF1aXJlZCkpIHtcbiAgICAgICAgY29weS5yZXF1aXJlZCA9IGNvcHkucmVxdWlyZWQuZmlsdGVyKHggPT4geCAhPT0gJ2FwaVZlcnNpb24nICYmIHggIT09ICdraW5kJyAmJiB4ICE9PSAnc3RhdHVzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWYuY3VzdG9tKSB7XG4gICAgICAgIC8vIGFkZCBcIm1ldGFkYXRhXCIgZmllbGQgZm9yIGFsbCBDUkRzLCBvdmVycmlkaW5nIGFueSBleGlzdGluZyB0eXBpbmdzXG4gICAgICAgIGNvcHkucHJvcGVydGllcy5tZXRhZGF0YSA9IHsgJHJlZjogJyMvZGVmaW5pdGlvbnMvQXBpT2JqZWN0TWV0YWRhdGEnIH07XG4gICAgICB9XG5cbiAgICAgIC8vIHJlb3JkZXIgdG9wLWxldmVsIGtleXMgc28gdGhhdCB3ZSBoYXZlIFwibWV0YWRhdGFcIiBmaXJzdCBhbmQgdGhlbiBhbGwgdGhlIHJlc3RcbiAgICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3IgaW4gdGhlIEFwaU9iamVjdCdzIHRvSnNvbiBmdW5jdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL2NkazhzLXRlYW0vY2RrOHMtY29yZS9ibG9iLzU4ZmI4YzA4ODJkZGQ5NWE5YjlkZWRiNDEwN2UxMmY2MDE0NDNjZjQvc3JjL2FwaS1vYmplY3QudHMjTDE4NSlcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGsgb2YgWydtZXRhZGF0YScsIC4uLk9iamVjdC5rZXlzKGNvcHkucHJvcGVydGllcyldKSB7XG4gICAgICAgIGlmIChrIGluIGNvcHkucHJvcGVydGllcykge1xuICAgICAgICAgIHJlc3VsdFtrXSA9IGNvcHkucHJvcGVydGllc1trXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb3B5LnByb3BlcnRpZXMgPSByZXN1bHQ7XG4gICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0Q29uc3RydWN0KCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogJHtkZWYuc2NoZW1hPy5kZXNjcmlwdGlvbiA/PyAnJ31gKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZShgICogQHNjaGVtYSAke2RlZi5mcW59YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke2NvbnN0cnVjdE5hbWV9IGV4dGVuZHMgQXBpT2JqZWN0YCk7XG5cbiAgICAgIGVtaXRHVksoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdE1hbmlmZXN0RmFjdG9yeSgpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0SW5pdGlhbGl6ZXIoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdFRvSnNvbigpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0R1ZLKCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCIke2RlZi5mcW59XCJgKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyByZWFkb25seSAke0dWS19TVEFUSUN9OiBHcm91cFZlcnNpb25LaW5kID1gKTtcbiAgICAgIGNvZGUubGluZShgYXBpVmVyc2lvbjogJyR7Z3JvdXBQcmVmaXh9JHtkZWYudmVyc2lvbn0nLGApO1xuICAgICAgY29kZS5saW5lKGBraW5kOiAnJHtkZWYua2luZH0nLGApO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdEluaXRpYWxpemVyKCkge1xuXG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBEZWZpbmVzIGEgXCIke2RlZi5mcW59XCIgQVBJIG9iamVjdGApO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdCcpO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0Jyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wcycpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcblxuICAgICAgY29kZS5vcGVuQmxvY2soYHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHtwcm9wc1R5cGVOYW1lfSR7ZGVmYXVsdFByb3BzfSlgKTtcblxuICAgICAgY29kZS5vcGVuKCdzdXBlcihzY29wZSwgaWQsIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKCcuLi5wcm9wcywnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30pOycpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0TWFuaWZlc3RGYWN0b3J5KCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiJHtkZWYuZnFufVwiLmApO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS4nKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyAke01BTklGRVNUX1NUQVRJQ19NRVRIT0R9KHByb3BzOiAke3Byb3BzVHlwZU5hbWV9JHtkZWZhdWx0UHJvcHN9KTogYW55YCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZShgLi4udG9Kc29uXyR7cHJvcHNUeXBlTmFtZX0ocHJvcHMpLGApO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRUb0pzb24oKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLicpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKCdwdWJsaWMgdG9Kc29uKCk6IGFueScpO1xuICAgICAgY29kZS5saW5lKCdjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpOycpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZShgLi4udG9Kc29uXyR7cHJvcHNUeXBlTmFtZX0ocmVzb2x2ZWQpLGApO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
|
|
161
|
+
/**
|
|
162
|
+
* Emit imports for generated helm construct
|
|
163
|
+
* @param code CodeMaker istance
|
|
164
|
+
*/
|
|
165
|
+
function emitHelmHeader(code) {
|
|
166
|
+
code.line('// generated by cdk8s');
|
|
167
|
+
code.line('import { Helm, HelmProps } from \'cdk8s\';');
|
|
168
|
+
code.line('import { Construct } from \'constructs\';');
|
|
169
|
+
code.line();
|
|
170
|
+
}
|
|
171
|
+
exports.emitHelmHeader = emitHelmHeader;
|
|
172
|
+
function generateHelmConstruct(typegen, def) {
|
|
173
|
+
const noSpecialChars = def.chartName.replace(/([^\w ]|_)/g, '');
|
|
174
|
+
const chartName = json2jsii_1.TypeGenerator.normalizeTypeName(noSpecialChars);
|
|
175
|
+
const schema = def.schema;
|
|
176
|
+
const repoUrl = def.chartUrl;
|
|
177
|
+
const chartVersion = def.chartVersion;
|
|
178
|
+
// Create custom type
|
|
179
|
+
typegen.emitCustomType(chartName, code => {
|
|
180
|
+
const valuesInterface = `${chartName}Values`;
|
|
181
|
+
if (schema !== undefined) {
|
|
182
|
+
// Creating values interface
|
|
183
|
+
emitValuesInterface();
|
|
184
|
+
function emitValuesInterface() {
|
|
185
|
+
const copyOfSchema = schema ? addAdditionalValuesToProps(schema) : undefined;
|
|
186
|
+
if (copyOfSchema && copyOfSchema.properties) {
|
|
187
|
+
// Sub charts or dependencies
|
|
188
|
+
for (const dependency of def.chartDependencies) {
|
|
189
|
+
copyOfSchema.properties[dependency] = { type: 'object', additionalProperties: { type: 'object' } };
|
|
190
|
+
}
|
|
191
|
+
copyOfSchema.properties.global = { type: 'object', additionalProperties: { type: 'object' } };
|
|
192
|
+
copyOfSchema.properties.additionalValues = {
|
|
193
|
+
type: 'object',
|
|
194
|
+
description: 'Values that are not available in values.schema.json will not be code generated. You can add such values to this property.',
|
|
195
|
+
additionalProperties: { type: 'object' },
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
typegen.emitType(valuesInterface, copyOfSchema, def.fqn);
|
|
199
|
+
}
|
|
200
|
+
function addAdditionalValuesToProps(schma) {
|
|
201
|
+
const tempSchema = schma;
|
|
202
|
+
if (!tempSchema.properties) {
|
|
203
|
+
return tempSchema;
|
|
204
|
+
}
|
|
205
|
+
Object.values(tempSchema.properties).forEach((prop) => {
|
|
206
|
+
if (prop.type !== 'object') {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (prop.properties) {
|
|
210
|
+
prop.properties.additionalValues = {
|
|
211
|
+
type: 'object',
|
|
212
|
+
description: 'Values that are not available in values.schema.json will not be code generated. You can add such values to this property.',
|
|
213
|
+
additionalProperties: { type: 'object' },
|
|
214
|
+
};
|
|
215
|
+
addAdditionalValuesToProps(prop);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
return tempSchema;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Creating construct properties
|
|
222
|
+
emitPropsInterface();
|
|
223
|
+
code.line();
|
|
224
|
+
// Creating construct for helm chart
|
|
225
|
+
emitConstruct();
|
|
226
|
+
function emitPropsInterface() {
|
|
227
|
+
code.openBlock(`export interface ${chartName}Props`);
|
|
228
|
+
code.line('readonly namespace?: string;');
|
|
229
|
+
code.line('readonly releaseName?: string;');
|
|
230
|
+
code.line('readonly helmExecutable?: string;');
|
|
231
|
+
code.line('readonly helmFlags?: string[];');
|
|
232
|
+
if (schema === undefined) {
|
|
233
|
+
code.line('readonly values?: { [key: string]: any };');
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
const doValuesHaveReqProps = hasRequiredProps(schema) ? '' : '?';
|
|
237
|
+
code.line(`readonly values${doValuesHaveReqProps}: ${valuesInterface};`);
|
|
238
|
+
}
|
|
239
|
+
code.closeBlock();
|
|
240
|
+
}
|
|
241
|
+
function emitConstruct() {
|
|
242
|
+
code.openBlock(`export class ${chartName} extends Construct`);
|
|
243
|
+
emitInitializer();
|
|
244
|
+
code.line();
|
|
245
|
+
emitAdditionalValuesFlattenFunc();
|
|
246
|
+
code.closeBlock();
|
|
247
|
+
}
|
|
248
|
+
function emitInitializer() {
|
|
249
|
+
const propsDefinition = schema && hasRequiredProps(schema) ? `${chartName}Props` : `${chartName}Props = {}`;
|
|
250
|
+
code.openBlock(`public constructor(scope: Construct, id: string, props: ${propsDefinition})`);
|
|
251
|
+
code.line('super(scope, id)');
|
|
252
|
+
code.line('let updatedProps = {};');
|
|
253
|
+
code.line();
|
|
254
|
+
code.openBlock('if (props.values)');
|
|
255
|
+
code.line('const { additionalValues, ...valuesWithoutAdditionalValues } = props.values;');
|
|
256
|
+
code.open('updatedProps = {');
|
|
257
|
+
code.line('...props,');
|
|
258
|
+
code.open('values: {');
|
|
259
|
+
code.line('...this.flattenAdditionalValues(valuesWithoutAdditionalValues),');
|
|
260
|
+
code.line('...additionalValues,');
|
|
261
|
+
code.close('}');
|
|
262
|
+
code.close('};');
|
|
263
|
+
code.closeBlock();
|
|
264
|
+
code.line();
|
|
265
|
+
code.open('const finalProps: HelmProps = {');
|
|
266
|
+
code.line(`chart: \'${def.chartName}\',`);
|
|
267
|
+
code.line(`repo: \'${repoUrl}\',`);
|
|
268
|
+
code.line(`version: \'${chartVersion}\',`);
|
|
269
|
+
code.line('...(Object.keys(updatedProps).length !== 0 ? updatedProps : props),');
|
|
270
|
+
code.close('};');
|
|
271
|
+
code.line();
|
|
272
|
+
code.line('new Helm(scope, \'Helm\', finalProps)');
|
|
273
|
+
code.closeBlock();
|
|
274
|
+
}
|
|
275
|
+
function emitAdditionalValuesFlattenFunc() {
|
|
276
|
+
code.openBlock('private flattenAdditionalValues(props: { [key: string]: any }): { [key: string]: any }');
|
|
277
|
+
code.open('for (let prop in props) {');
|
|
278
|
+
code.open('if (typeof(props[prop]) === \'object\' && prop !== \'additionalValues\') {');
|
|
279
|
+
code.line('props[prop] = this.flattenAdditionalValues(props[prop]);');
|
|
280
|
+
code.close('}');
|
|
281
|
+
code.close('}');
|
|
282
|
+
code.line();
|
|
283
|
+
code.line('const { additionalValues, ...valuesWithoutAdditionalValues } = props;');
|
|
284
|
+
code.line();
|
|
285
|
+
code.open('return {');
|
|
286
|
+
code.line('...valuesWithoutAdditionalValues,');
|
|
287
|
+
code.line('...additionalValues,');
|
|
288
|
+
code.close('};');
|
|
289
|
+
code.closeBlock();
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
exports.generateHelmConstruct = generateHelmConstruct;
|
|
294
|
+
function hasRequiredProps(schema) {
|
|
295
|
+
return (schema === null || schema === void 0 ? void 0 : schema.required) && Array.isArray(schema.required) && schema.required.length > 0;
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0Q7QUFJcEQseUNBQTBDO0FBRTFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztBQStCekI7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBZSxFQUFFLE1BQWU7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQ3hGO1NBQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDckU7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQVRELGdDQVNDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUN4RSxzRUFBc0U7SUFDdEUsdUZBQXVGO0lBQ3ZGLDJFQUEyRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQU5ELGtDQU1DO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBd0I7O0lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQUEsR0FBRyxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQUEs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SSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdEpELHNEQXNKQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsTUFBbUI7SUFDM0MsT0FBTyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEtBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlTWFrZXIsIHRvUGFzY2FsQ2FzZSB9IGZyb20gJ2NvZGVtYWtlcic7XG4vLyB3ZSBqdXN0IG5lZWQgdGhlIHR5cGVzIGZyb20ganNvbi1zY2hlbWFcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IEpTT05TY2hlbWE0IH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgVHlwZUdlbmVyYXRvciB9IGZyb20gJ2pzb24yanNpaSc7XG5cbmNvbnN0IE1BTklGRVNUX1NUQVRJQ19NRVRIT0QgPSAnbWFuaWZlc3QnO1xuY29uc3QgR1ZLX1NUQVRJQyA9ICdHVksnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9iamVjdERlZmluaXRpb24ge1xuICByZWFkb25seSBmcW46IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JvdXA6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjaGVtYTogSlNPTlNjaGVtYTQ7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgaXMgYSBjdXN0b20gcmVzb3VyY2UgKGltcG9ydGVkIGZyb20gYSBDUkQpIG9yIGEgY29yZSBBUEkgb2JqZWN0P1xuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tOiBib29sZWFuO1xuXG4gIC8qXG4gICAqIEluZGljYXRlcyBpZiBhIHByZWZpeCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNvbnN0cnVjdCBjbGFzcyBuYW1lLiBGb3JcbiAgICogZXhhbXBsZSwgZm9yIG5hdGl2ZSBrOHMgYXBpIG9iamVjdHMsIHdlIGFkZCBgS3ViZWAgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qXG4gICAqIEluZGljYXRlcyBpZiBhIHN1ZmZpeCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNvbnN0cnVjdCBjbGFzcyBuYW1lLiBGb3JcbiAgICogZXhhbXBsZSwgZm9yIG11bHRpLXZlcnNpb25lZCBjcmRzLCB3ZSBhZGQgdGhlIHZlcnNpb24gYXMgdGhlIHN1ZmZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3VmZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVtaXRzIHRoZSBoZWFkZXIgZm9yIGEgZ2VuZXJhdGVkIGltcG9ydHMgZmlsZS5cbiAqXG4gKiBAcGFyYW0gY3VzdG9tIC0gd2hldGhlciB0aGUgaGVhZGVyIGlzIGJlaW5nIGVtaXR0ZWQgZm9yIGEgY3VzdG9tIHJlc291cmNlXG4gKiAoaW1wb3J0ZWQgZnJvbSBhIENSRCkgb3IgYSBjb3JlIEFQSSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRIZWFkZXIoY29kZTogQ29kZU1ha2VyLCBjdXN0b206IGJvb2xlYW4pIHtcbiAgY29kZS5saW5lKCcvLyBnZW5lcmF0ZWQgYnkgY2RrOHMnKTtcbiAgaWYgKGN1c3RvbSkge1xuICAgIGNvZGUubGluZSgnaW1wb3J0IHsgQXBpT2JqZWN0LCBBcGlPYmplY3RNZXRhZGF0YSwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gXFwnY2RrOHNcXCc7Jyk7XG4gIH0gZWxzZSB7XG4gICAgY29kZS5saW5lKCdpbXBvcnQgeyBBcGlPYmplY3QsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tIFxcJ2NkazhzXFwnOycpO1xuICB9XG4gIGNvZGUubGluZSgnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcXCdjb25zdHJ1Y3RzXFwnOycpO1xuICBjb2RlLmxpbmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVOYW1lKGN1c3RvbTogYm9vbGVhbiwga2luZDogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgLy8gYWRkIGFuIEFQSSB2ZXJzaW9uIHBvc3RmaXggb25seSBpZiB0aGlzIGlzIGNvcmUgQVBJIChgaW1wb3J0IGs4c2ApLlxuICAvLyBUT0RPID0gd2hhdCBhYm91dCB0aGUgcmVzdCBvZiB0aGUgbmFtZXNwYWNlPyB0aGUgc2FtZSByZXNvdXJjZSBjYW4gZXhpc3QgaW4gbXVsdGlwbGVcbiAgLy8gYXBpIGdyb3VwcyAoSW5ncmVzcyBmb3IgZXhhbXBsZSBleGlzdHMgaW4gJ2V4dGVuc2lvbnMnIGFuZCAnbmV0d29ya2luZycpXG4gIGNvbnN0IHBvc3RmaXggPSAoY3VzdG9tIHx8IHZlcnNpb24gPT09ICd2MScpID8gJycgOiB0b1Bhc2NhbENhc2UodmVyc2lvbik7XG4gIHJldHVybiBgJHtraW5kfSR7cG9zdGZpeH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uc3RydWN0VHlwZU5hbWUoZGVmOiBBcGlPYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IHByZWZpeCA9IGRlZi5wcmVmaXggPz8gJyc7XG4gIGNvbnN0IHN1ZmZpeCA9IGRlZi5zdWZmaXggPz8gJyc7XG4gIHJldHVybiBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKGAke3ByZWZpeH0ke2dldFR5cGVOYW1lKGRlZi5jdXN0b20sIGRlZi5raW5kLCBkZWYudmVyc2lvbil9JHtzdWZmaXh9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wc1R5cGVOYW1lKGRlZjogQXBpT2JqZWN0RGVmaW5pdGlvbikge1xuICBjb25zdCBjb25zdHJ1Y3ROYW1lID0gZ2V0Q29uc3RydWN0VHlwZU5hbWUoZGVmKTtcbiAgcmV0dXJuIFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoYCR7Y29uc3RydWN0TmFtZX1Qcm9wc2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDb25zdHJ1Y3QodHlwZWdlbjogVHlwZUdlbmVyYXRvciwgZGVmOiBBcGlPYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWYpO1xuXG4gIGlmIChkZWYuY3VzdG9tKSB7XG4gICAgdHlwZWdlbi5lbWl0Q3VzdG9tVHlwZSgnQXBpT2JqZWN0TWV0YWRhdGEnLCAoKSA9PiB7fSk7XG4gIH1cblxuICB0eXBlZ2VuLmVtaXRDdXN0b21UeXBlKGNvbnN0cnVjdE5hbWUsIGNvZGUgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IGRlZi5zY2hlbWE7XG5cbiAgICAvLyBgcHJvcHNUeXBlTmFtZWAgY291bGQgYWxzbyBiZSBcImFueVwiIGlmIHdlIGNhbid0IHBhcnNlIHRoZSBzY2hlbWEgZm9yIHNvbWUgcmVhc29uXG4gICAgY29uc3QgcHJvcHNUeXBlTmFtZSA9IGVtaXRQcm9wc1N0cnVjdCgpO1xuICAgIGNvbnN0IGdyb3VwUHJlZml4ID0gZGVmLmdyb3VwID8gYCR7ZGVmLmdyb3VwfS9gIDogJyc7XG4gICAgY29uc3QgaGFzUmVxdWlyZWQgPSBoYXNSZXF1aXJlZFByb3BzKHNjaGVtYSk7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0gaGFzUmVxdWlyZWQgPyAnJyA6ICcgPSB7fSc7XG4gICAgZW1pdENvbnN0cnVjdCgpO1xuXG4gICAgZnVuY3Rpb24gZW1pdFByb3BzU3RydWN0KCkge1xuICAgICAgY29uc3QgcHJvcHNTY2hlbWEgPSBjcmVhdGVQcm9wc1N0cnVjdFNjaGVtYSgpO1xuICAgICAgY29uc3QgcHJvcHNTdHJ1Y3ROYW1lID0gZ2V0UHJvcHNUeXBlTmFtZShkZWYpO1xuICAgICAgcmV0dXJuIHR5cGVnZW4uZW1pdFR5cGUocHJvcHNTdHJ1Y3ROYW1lLCBwcm9wc1NjaGVtYSwgZGVmLmZxbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlUHJvcHNTdHJ1Y3RTY2hlbWEoKSB7XG4gICAgICBjb25zdCBjb3B5OiBKU09OU2NoZW1hNCA9IHsgLi4uZGVmLnNjaGVtYSB8fCB7fSB9O1xuICAgICAgY29uc3QgcHJvcHMgPSBjb3B5LnByb3BlcnRpZXMgPSBjb3B5LnByb3BlcnRpZXMgfHwge307XG4gICAgICBkZWxldGUgcHJvcHMuYXBpVmVyc2lvbjtcbiAgICAgIGRlbGV0ZSBwcm9wcy5raW5kO1xuICAgICAgZGVsZXRlIHByb3BzLnN0YXR1cztcbiAgICAgIGRlbGV0ZSBjb3B5Wyd4LWt1YmVybmV0ZXMtZ3JvdXAtdmVyc2lvbi1raW5kJ107XG5cbiAgICAgIGNvcHkucmVxdWlyZWQgPSBjb3B5LnJlcXVpcmVkIHx8IFtdO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb3B5LnJlcXVpcmVkKSkge1xuICAgICAgICBjb3B5LnJlcXVpcmVkID0gY29weS5yZXF1aXJlZC5maWx0ZXIoeCA9PiB4ICE9PSAnYXBpVmVyc2lvbicgJiYgeCAhPT0gJ2tpbmQnICYmIHggIT09ICdzdGF0dXMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlZi5jdXN0b20pIHtcbiAgICAgICAgLy8gYWRkIFwibWV0YWRhdGFcIiBmaWVsZCBmb3IgYWxsIENSRHMsIG92ZXJyaWRpbmcgYW55IGV4aXN0aW5nIHR5cGluZ3NcbiAgICAgICAgY29weS5wcm9wZXJ0aWVzLm1ldGFkYXRhID0geyAkcmVmOiAnIy9kZWZpbml0aW9ucy9BcGlPYmplY3RNZXRhZGF0YScgfTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVvcmRlciB0b3AtbGV2ZWwga2V5cyBzbyB0aGF0IHdlIGhhdmUgXCJtZXRhZGF0YVwiIGZpcnN0IGFuZCB0aGVuIGFsbCB0aGUgcmVzdFxuICAgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBpbiB0aGUgQXBpT2JqZWN0J3MgdG9Kc29uIGZ1bmN0aW9uIChodHRwczovL2dpdGh1Yi5jb20vY2RrOHMtdGVhbS9jZGs4cy1jb3JlL2Jsb2IvNThmYjhjMDg4MmRkZDk1YTliOWRlZGI0MTA3ZTEyZjYwMTQ0M2NmNC9zcmMvYXBpLW9iamVjdC50cyNMMTg1KVxuICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgayBvZiBbJ21ldGFkYXRhJywgLi4uT2JqZWN0LmtleXMoY29weS5wcm9wZXJ0aWVzKV0pIHtcbiAgICAgICAgaWYgKGsgaW4gY29weS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgcmVzdWx0W2tdID0gY29weS5wcm9wZXJ0aWVzW2tdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvcHkucHJvcGVydGllcyA9IHJlc3VsdDtcbiAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRDb25zdHJ1Y3QoKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiAke2RlZi5zY2hlbWE/LmRlc2NyaXB0aW9uID8/ICcnfWApO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBAc2NoZW1hICR7ZGVmLmZxbn1gKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7Y29uc3RydWN0TmFtZX0gZXh0ZW5kcyBBcGlPYmplY3RgKTtcblxuICAgICAgZW1pdEdWSygpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0TWFuaWZlc3RGYWN0b3J5KCk7XG5cbiAgICAgIGNvZGUubGluZSgnJyk7XG5cbiAgICAgIGVtaXRJbml0aWFsaXplcigpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0VG9Kc29uKCk7XG5cbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRHVksoKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBSZXR1cm5zIHRoZSBhcGlWZXJzaW9uIGFuZCBraW5kIGZvciBcIiR7ZGVmLmZxbn1cImApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBwdWJsaWMgc3RhdGljIHJlYWRvbmx5ICR7R1ZLX1NUQVRJQ306IEdyb3VwVmVyc2lvbktpbmQgPWApO1xuICAgICAgY29kZS5saW5lKGBhcGlWZXJzaW9uOiAnJHtncm91cFByZWZpeH0ke2RlZi52ZXJzaW9ufScsYCk7XG4gICAgICBjb2RlLmxpbmUoYGtpbmQ6ICcke2RlZi5raW5kfScsYCk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0SW5pdGlhbGl6ZXIoKSB7XG5cbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIERlZmluZXMgYSBcIiR7ZGVmLmZxbn1cIiBBUEkgb2JqZWN0YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0Jyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3QnKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3Byb3BzVHlwZU5hbWV9JHtkZWZhdWx0UHJvcHN9KWApO1xuXG4gICAgICBjb2RlLm9wZW4oJ3N1cGVyKHNjb3BlLCBpZCwgeycpO1xuICAgICAgY29kZS5saW5lKGAuLi4ke2NvbnN0cnVjdE5hbWV9LiR7R1ZLX1NUQVRJQ30sYCk7XG4gICAgICBjb2RlLmxpbmUoJy4uLnByb3BzLCcpO1xuICAgICAgY29kZS5jbG9zZSgnfSk7Jyk7XG5cbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRNYW5pZmVzdEZhY3RvcnkoKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBSZW5kZXJzIGEgS3ViZXJuZXRlcyBtYW5pZmVzdCBmb3IgXCIke2RlZi5mcW59XCIuYCk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLicpO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHMnKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKGBwdWJsaWMgc3RhdGljICR7TUFOSUZFU1RfU1RBVElDX01FVEhPRH0ocHJvcHM6ICR7cHJvcHNUeXBlTmFtZX0ke2RlZmF1bHRQcm9wc30pOiBhbnlgKTtcbiAgICAgIGNvZGUub3BlbigncmV0dXJuIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKGAuLi50b0pzb25fJHtwcm9wc1R5cGVOYW1lfShwcm9wcyksYCk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdFRvSnNvbigpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5vcGVuQmxvY2soJ3B1YmxpYyB0b0pzb24oKTogYW55Jyk7XG4gICAgICBjb2RlLmxpbmUoJ2NvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7Jyk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbigncmV0dXJuIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKGAuLi50b0pzb25fJHtwcm9wc1R5cGVOYW1lfShyZXNvbHZlZCksYCk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBFbWl0IGltcG9ydHMgZm9yIGdlbmVyYXRlZCBoZWxtIGNvbnN0cnVjdFxuICogQHBhcmFtIGNvZGUgQ29kZU1ha2VyIGlzdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRIZWxtSGVhZGVyKGNvZGU6IENvZGVNYWtlcikge1xuICBjb2RlLmxpbmUoJy8vIGdlbmVyYXRlZCBieSBjZGs4cycpO1xuICBjb2RlLmxpbmUoJ2ltcG9ydCB7IEhlbG0sIEhlbG1Qcm9wcyB9IGZyb20gXFwnY2RrOHNcXCc7Jyk7XG4gIGNvZGUubGluZSgnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcXCdjb25zdHJ1Y3RzXFwnOycpO1xuICBjb2RlLmxpbmUoKTtcbn1cblxuLyoqXG4gKiBIZWxtIE9iamVjdCBEZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVsbU9iamVjdERlZmluaXRpb24ge1xuICAvKipcbiAgICogYHZhbHVlcy5zY2hlbWEuanNvbmAgZm9yIHRoZSBoZWxtIGNoYXJ0XG4gICAqL1xuICByZWFkb25seSBzY2hlbWE6IEpTT05TY2hlbWE0IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQ2hhcnQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaGFydCB1cmxcbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0VXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaGFydCB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBjaGFydFZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIENoYXJ0IGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnREZXBlbmRlbmNpZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogRnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IGZxbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGVsbUNvbnN0cnVjdCh0eXBlZ2VuOiBUeXBlR2VuZXJhdG9yLCBkZWY6IEhlbG1PYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IG5vU3BlY2lhbENoYXJzID0gZGVmLmNoYXJ0TmFtZS5yZXBsYWNlKC8oW15cXHcgXXxfKS9nLCAnJyk7XG4gIGNvbnN0IGNoYXJ0TmFtZSA9IFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUobm9TcGVjaWFsQ2hhcnMpO1xuICBjb25zdCBzY2hlbWEgPSBkZWYuc2NoZW1hO1xuICBjb25zdCByZXBvVXJsID0gZGVmLmNoYXJ0VXJsO1xuICBjb25zdCBjaGFydFZlcnNpb24gPSBkZWYuY2hhcnRWZXJzaW9uO1xuXG4gIC8vIENyZWF0ZSBjdXN0b20gdHlwZVxuICB0eXBlZ2VuLmVtaXRDdXN0b21UeXBlKGNoYXJ0TmFtZSwgY29kZSA9PiB7XG5cbiAgICBjb25zdCB2YWx1ZXNJbnRlcmZhY2UgPSBgJHtjaGFydE5hbWV9VmFsdWVzYDtcbiAgICBpZiAoc2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIENyZWF0aW5nIHZhbHVlcyBpbnRlcmZhY2VcbiAgICAgIGVtaXRWYWx1ZXNJbnRlcmZhY2UoKTtcblxuICAgICAgZnVuY3Rpb24gZW1pdFZhbHVlc0ludGVyZmFjZSgpIHtcblxuICAgICAgICBjb25zdCBjb3B5T2ZTY2hlbWEgPSBzY2hlbWEgPyBhZGRBZGRpdGlvbmFsVmFsdWVzVG9Qcm9wcyhzY2hlbWEpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChjb3B5T2ZTY2hlbWEgJiYgY29weU9mU2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAvLyBTdWIgY2hhcnRzIG9yIGRlcGVuZGVuY2llc1xuICAgICAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiBkZWYuY2hhcnREZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgIGNvcHlPZlNjaGVtYS5wcm9wZXJ0aWVzW2RlcGVuZGVuY3ldID0geyB0eXBlOiAnb2JqZWN0JywgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogJ29iamVjdCcgfSB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvcHlPZlNjaGVtYS5wcm9wZXJ0aWVzLmdsb2JhbCA9IHsgdHlwZTogJ29iamVjdCcsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6ICdvYmplY3QnIH0gfTtcbiAgICAgICAgICBjb3B5T2ZTY2hlbWEucHJvcGVydGllcy5hZGRpdGlvbmFsVmFsdWVzID0ge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1ZhbHVlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIGluIHZhbHVlcy5zY2hlbWEuanNvbiB3aWxsIG5vdCBiZSBjb2RlIGdlbmVyYXRlZC4gWW91IGNhbiBhZGQgc3VjaCB2YWx1ZXMgdG8gdGhpcyBwcm9wZXJ0eS4nLFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZWdlbi5lbWl0VHlwZSh2YWx1ZXNJbnRlcmZhY2UsIGNvcHlPZlNjaGVtYSwgZGVmLmZxbik7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGFkZEFkZGl0aW9uYWxWYWx1ZXNUb1Byb3BzKHNjaG1hOiBKU09OU2NoZW1hNCk6IEpTT05TY2hlbWE0IHtcbiAgICAgICAgY29uc3QgdGVtcFNjaGVtYSA9IHNjaG1hO1xuXG4gICAgICAgIGlmICghdGVtcFNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRlbXBTY2hlbWE7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QudmFsdWVzKHRlbXBTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgIGlmIChwcm9wLnR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHByb3AucHJvcGVydGllcykge1xuICAgICAgICAgICAgcHJvcC5wcm9wZXJ0aWVzLmFkZGl0aW9uYWxWYWx1ZXMgPSB7XG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1ZhbHVlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIGluIHZhbHVlcy5zY2hlbWEuanNvbiB3aWxsIG5vdCBiZSBjb2RlIGdlbmVyYXRlZC4gWW91IGNhbiBhZGQgc3VjaCB2YWx1ZXMgdG8gdGhpcyBwcm9wZXJ0eS4nLFxuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogeyB0eXBlOiAnb2JqZWN0JyB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgYWRkQWRkaXRpb25hbFZhbHVlc1RvUHJvcHMocHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGVtcFNjaGVtYTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDcmVhdGluZyBjb25zdHJ1Y3QgcHJvcGVydGllc1xuICAgIGVtaXRQcm9wc0ludGVyZmFjZSgpO1xuXG4gICAgY29kZS5saW5lKCk7XG5cbiAgICAvLyBDcmVhdGluZyBjb25zdHJ1Y3QgZm9yIGhlbG0gY2hhcnRcbiAgICBlbWl0Q29uc3RydWN0KCk7XG5cbiAgICBmdW5jdGlvbiBlbWl0UHJvcHNJbnRlcmZhY2UoKSB7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGludGVyZmFjZSAke2NoYXJ0TmFtZX1Qcm9wc2ApO1xuXG4gICAgICBjb2RlLmxpbmUoJ3JlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZzsnKTtcbiAgICAgIGNvZGUubGluZSgncmVhZG9ubHkgcmVsZWFzZU5hbWU/OiBzdHJpbmc7Jyk7XG4gICAgICBjb2RlLmxpbmUoJ3JlYWRvbmx5IGhlbG1FeGVjdXRhYmxlPzogc3RyaW5nOycpO1xuICAgICAgY29kZS5saW5lKCdyZWFkb25seSBoZWxtRmxhZ3M/OiBzdHJpbmdbXTsnKTtcblxuICAgICAgaWYgKHNjaGVtYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvZGUubGluZSgncmVhZG9ubHkgdmFsdWVzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRvVmFsdWVzSGF2ZVJlcVByb3BzID0gaGFzUmVxdWlyZWRQcm9wcyhzY2hlbWEpID8gJycgOiAnPyc7XG4gICAgICAgIGNvZGUubGluZShgcmVhZG9ubHkgdmFsdWVzJHtkb1ZhbHVlc0hhdmVSZXFQcm9wc306ICR7dmFsdWVzSW50ZXJmYWNlfTtgKTtcbiAgICAgIH1cblxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdENvbnN0cnVjdCgpIHtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHtjaGFydE5hbWV9IGV4dGVuZHMgQ29uc3RydWN0YCk7XG5cbiAgICAgIGVtaXRJbml0aWFsaXplcigpO1xuXG4gICAgICBjb2RlLmxpbmUoKTtcblxuICAgICAgZW1pdEFkZGl0aW9uYWxWYWx1ZXNGbGF0dGVuRnVuYygpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0SW5pdGlhbGl6ZXIoKSB7XG4gICAgICBjb25zdCBwcm9wc0RlZmluaXRpb24gPSBzY2hlbWEgJiYgaGFzUmVxdWlyZWRQcm9wcyhzY2hlbWEpID8gYCR7Y2hhcnROYW1lfVByb3BzYCA6IGAke2NoYXJ0TmFtZX1Qcm9wcyA9IHt9YDtcblxuICAgICAgY29kZS5vcGVuQmxvY2soYHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHtwcm9wc0RlZmluaXRpb259KWApO1xuICAgICAgY29kZS5saW5lKCdzdXBlcihzY29wZSwgaWQpJyk7XG5cbiAgICAgIGNvZGUubGluZSgnbGV0IHVwZGF0ZWRQcm9wcyA9IHt9OycpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLm9wZW5CbG9jaygnaWYgKHByb3BzLnZhbHVlcyknKTtcbiAgICAgIGNvZGUubGluZSgnY29uc3QgeyBhZGRpdGlvbmFsVmFsdWVzLCAuLi52YWx1ZXNXaXRob3V0QWRkaXRpb25hbFZhbHVlcyB9ID0gcHJvcHMudmFsdWVzOycpO1xuICAgICAgY29kZS5vcGVuKCd1cGRhdGVkUHJvcHMgPSB7Jyk7XG4gICAgICBjb2RlLmxpbmUoJy4uLnByb3BzLCcpO1xuICAgICAgY29kZS5vcGVuKCd2YWx1ZXM6IHsnKTtcbiAgICAgIGNvZGUubGluZSgnLi4udGhpcy5mbGF0dGVuQWRkaXRpb25hbFZhbHVlcyh2YWx1ZXNXaXRob3V0QWRkaXRpb25hbFZhbHVlcyksJyk7XG4gICAgICBjb2RlLmxpbmUoJy4uLmFkZGl0aW9uYWxWYWx1ZXMsJyk7XG4gICAgICBjb2RlLmNsb3NlKCd9Jyk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICBjb2RlLmxpbmUoKTtcblxuICAgICAgY29kZS5vcGVuKCdjb25zdCBmaW5hbFByb3BzOiBIZWxtUHJvcHMgPSB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYGNoYXJ0OiBcXCcke2RlZi5jaGFydE5hbWV9XFwnLGApO1xuICAgICAgY29kZS5saW5lKGByZXBvOiBcXCcke3JlcG9Vcmx9XFwnLGApO1xuICAgICAgY29kZS5saW5lKGB2ZXJzaW9uOiBcXCcke2NoYXJ0VmVyc2lvbn1cXCcsYCk7XG4gICAgICBjb2RlLmxpbmUoJy4uLihPYmplY3Qua2V5cyh1cGRhdGVkUHJvcHMpLmxlbmd0aCAhPT0gMCA/IHVwZGF0ZWRQcm9wcyA6IHByb3BzKSwnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ307Jyk7XG5cbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5saW5lKCduZXcgSGVsbShzY29wZSwgXFwnSGVsbVxcJywgZmluYWxQcm9wcyknKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRBZGRpdGlvbmFsVmFsdWVzRmxhdHRlbkZ1bmMoKSB7XG4gICAgICBjb2RlLm9wZW5CbG9jaygncHJpdmF0ZSBmbGF0dGVuQWRkaXRpb25hbFZhbHVlcyhwcm9wczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0nKTtcbiAgICAgIGNvZGUub3BlbignZm9yIChsZXQgcHJvcCBpbiBwcm9wcykgeycpO1xuICAgICAgY29kZS5vcGVuKCdpZiAodHlwZW9mKHByb3BzW3Byb3BdKSA9PT0gXFwnb2JqZWN0XFwnICYmIHByb3AgIT09IFxcJ2FkZGl0aW9uYWxWYWx1ZXNcXCcpIHsnKTtcbiAgICAgIGNvZGUubGluZSgncHJvcHNbcHJvcF0gPSB0aGlzLmZsYXR0ZW5BZGRpdGlvbmFsVmFsdWVzKHByb3BzW3Byb3BdKTsnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30nKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30nKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5saW5lKCdjb25zdCB7IGFkZGl0aW9uYWxWYWx1ZXMsIC4uLnZhbHVlc1dpdGhvdXRBZGRpdGlvbmFsVmFsdWVzIH0gPSBwcm9wczsnKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5vcGVuKCdyZXR1cm4geycpO1xuICAgICAgY29kZS5saW5lKCcuLi52YWx1ZXNXaXRob3V0QWRkaXRpb25hbFZhbHVlcywnKTtcbiAgICAgIGNvZGUubGluZSgnLi4uYWRkaXRpb25hbFZhbHVlcywnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ307Jyk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYXNSZXF1aXJlZFByb3BzKHNjaGVtYTogSlNPTlNjaGVtYTQpOmJvb2xlYW4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gc2NoZW1hPy5yZXF1aXJlZCAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmxlbmd0aCA+IDA7XG59Il19
|
package/lib/import/dispatch.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.matchImporter = exports.importDispatch = void 0;
|
|
4
4
|
const crd_1 = require("./crd");
|
|
5
5
|
const crds_dev_1 = require("./crds-dev");
|
|
6
|
+
const helm_1 = require("./helm");
|
|
6
7
|
const k8s_1 = require("./k8s");
|
|
7
8
|
const config_1 = require("../config");
|
|
8
9
|
const util_1 = require("../util");
|
|
@@ -31,6 +32,10 @@ async function matchImporter(importSpec, argv) {
|
|
|
31
32
|
if (k8s) {
|
|
32
33
|
return new k8s_1.ImportKubernetesApi(k8s);
|
|
33
34
|
}
|
|
35
|
+
const prefix = importSpec.source.split(':')[0];
|
|
36
|
+
if (prefix === 'helm') {
|
|
37
|
+
return helm_1.ImportHelm.fromSpec(importSpec);
|
|
38
|
+
}
|
|
34
39
|
// now check if its a crds.dev import
|
|
35
40
|
const crdsDevUrl = (0, crds_dev_1.matchCrdsDevUrl)(importSpec.source);
|
|
36
41
|
if (crdsDevUrl) {
|
|
@@ -40,4 +45,4 @@ async function matchImporter(importSpec, argv) {
|
|
|
40
45
|
return crd_1.ImportCustomResourceDefinition.fromSpec(importSpec);
|
|
41
46
|
}
|
|
42
47
|
exports.matchImporter = matchImporter;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0L2Rpc3BhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtCQUF1RDtBQUN2RCx5Q0FBNkM7QUFDN0MsaUNBQW9DO0FBQ3BDLCtCQUE0QztBQUM1QyxzQ0FBMEQ7QUFDMUQsa0NBQXVDO0FBRWhDLEtBQUssVUFBVSxjQUFjLENBQUMsT0FBcUIsRUFBRSxJQUFTLEVBQUUsT0FBc0I7O0lBQzNGLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxFQUFFO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsVUFBVSxHQUFHLENBQUMsQ0FBQztTQUN4RTtRQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUVyRSxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDcEIsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLGdCQUFnQjtZQUM3QyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLE1BQUEsT0FBTyxDQUFDLElBQUksbUNBQUksSUFBSSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsbUJBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbkksTUFBTSxJQUFBLDBCQUFpQixFQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO0tBQ0Y7QUFDSCxDQUFDO0FBcEJELHdDQW9CQztBQUVNLEtBQUssVUFBVSxhQUFhLENBQUMsVUFBc0IsRUFBRSxJQUFTO0lBRW5FLHFDQUFxQztJQUNyQyxNQUFNLEdBQUcsR0FBRyxNQUFNLHlCQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsSUFBSSxHQUFHLEVBQUU7UUFDUCxPQUFPLElBQUkseUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckM7SUFFRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvQyxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7UUFDckIsT0FBTyxpQkFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUN4QztJQUVELHFDQUFxQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFlLEVBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELElBQUksVUFBVSxFQUFFO1FBQ2QsT0FBTyxvQ0FBOEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7S0FDdkg7SUFFRCwwQkFBMEI7SUFDMUIsT0FBTyxvQ0FBOEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQXRCRCxzQ0FzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbXBvcnRCYXNlLCBJbXBvcnRPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4vY3JkJztcbmltcG9ydCB7IG1hdGNoQ3Jkc0RldlVybCB9IGZyb20gJy4vY3Jkcy1kZXYnO1xuaW1wb3J0IHsgSW1wb3J0SGVsbSB9IGZyb20gJy4vaGVsbSc7XG5pbXBvcnQgeyBJbXBvcnRLdWJlcm5ldGVzQXBpIH0gZnJvbSAnLi9rOHMnO1xuaW1wb3J0IHsgSW1wb3J0U3BlYywgYWRkSW1wb3J0VG9Db25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgUFJFRklYX0RFTElNIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnREaXNwYXRjaChpbXBvcnRzOiBJbXBvcnRTcGVjW10sIGFyZ3Y6IGFueSwgb3B0aW9uczogSW1wb3J0T3B0aW9ucykge1xuICBmb3IgKGNvbnN0IGltcG9ydFNwZWMgb2YgaW1wb3J0cykge1xuICAgIGNvbnN0IGltcG9ydGVyID0gYXdhaXQgbWF0Y2hJbXBvcnRlcihpbXBvcnRTcGVjLCBhcmd2KTtcblxuICAgIGlmICghaW1wb3J0ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5hYmxlIHRvIGRldGVybWluZSBpbXBvcnQgdHlwZSBmb3IgXCIke2ltcG9ydFNwZWN9XCJgKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKCdJbXBvcnRpbmcgcmVzb3VyY2VzLCB0aGlzIG1heSB0YWtlIGEgZmV3IG1vbWVudHMuLi4nKTtcblxuICAgIGF3YWl0IGltcG9ydGVyLmltcG9ydCh7XG4gICAgICBtb2R1bGVOYW1lUHJlZml4OiBpbXBvcnRTcGVjLm1vZHVsZU5hbWVQcmVmaXgsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuc2F2ZSA/PyB0cnVlKSB7XG4gICAgICBjb25zdCBzcGVjID0gaW1wb3J0U3BlYy5tb2R1bGVOYW1lUHJlZml4ID8gYCR7aW1wb3J0U3BlYy5tb2R1bGVOYW1lUHJlZml4fSR7UFJFRklYX0RFTElNfSR7aW1wb3J0U3BlYy5zb3VyY2V9YCA6IGltcG9ydFNwZWMuc291cmNlO1xuICAgICAgYXdhaXQgYWRkSW1wb3J0VG9Db25maWcoc3BlYyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYXRjaEltcG9ydGVyKGltcG9ydFNwZWM6IEltcG9ydFNwZWMsIGFyZ3Y6IGFueSk6IFByb21pc2U8SW1wb3J0QmFzZT4ge1xuXG4gIC8vIGZpcnN0IGNoZWNrIGlmIGl0cyBhIGBrOHNAYCBpbXBvcnRcbiAgY29uc3QgazhzID0gYXdhaXQgSW1wb3J0S3ViZXJuZXRlc0FwaS5tYXRjaChpbXBvcnRTcGVjLCBhcmd2KTtcbiAgaWYgKGs4cykge1xuICAgIHJldHVybiBuZXcgSW1wb3J0S3ViZXJuZXRlc0FwaShrOHMpO1xuICB9XG5cbiAgY29uc3QgcHJlZml4ID0gaW1wb3J0U3BlYy5zb3VyY2Uuc3BsaXQoJzonKVswXTtcblxuICBpZiAocHJlZml4ID09PSAnaGVsbScpIHtcbiAgICByZXR1cm4gSW1wb3J0SGVsbS5mcm9tU3BlYyhpbXBvcnRTcGVjKTtcbiAgfVxuXG4gIC8vIG5vdyBjaGVjayBpZiBpdHMgYSBjcmRzLmRldiBpbXBvcnRcbiAgY29uc3QgY3Jkc0RldlVybCA9IG1hdGNoQ3Jkc0RldlVybChpbXBvcnRTcGVjLnNvdXJjZSk7XG4gIGlmIChjcmRzRGV2VXJsKSB7XG4gICAgcmV0dXJuIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbi5mcm9tU3BlYyh7IHNvdXJjZTogY3Jkc0RldlVybCwgbW9kdWxlTmFtZVByZWZpeDogaW1wb3J0U3BlYy5tb2R1bGVOYW1lUHJlZml4IH0pO1xuICB9XG5cbiAgLy8gZGVmYXVsdCB0byBhIG5vcm1hbCBDUkRcbiAgcmV0dXJuIEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbi5mcm9tU3BlYyhpbXBvcnRTcGVjKTtcbn0iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CodeMaker } from 'codemaker';
|
|
2
|
+
import { ImportBase } from './base';
|
|
3
|
+
import { ImportSpec } from '../config';
|
|
4
|
+
export declare class ImportHelm extends ImportBase {
|
|
5
|
+
static fromSpec(importSpec: ImportSpec): Promise<ImportHelm>;
|
|
6
|
+
private readonly chartName;
|
|
7
|
+
private readonly chartUrl;
|
|
8
|
+
private readonly chartVersion;
|
|
9
|
+
private readonly chartSchemaPath;
|
|
10
|
+
private readonly chartDependencies;
|
|
11
|
+
private readonly schema;
|
|
12
|
+
private constructor();
|
|
13
|
+
get moduleNames(): string[];
|
|
14
|
+
protected generateTypeScript(code: CodeMaker): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ImportHelm = void 0;
|
|
27
|
+
const child_process_1 = require("child_process");
|
|
28
|
+
const fs = __importStar(require("fs"));
|
|
29
|
+
const os = __importStar(require("os"));
|
|
30
|
+
const path = __importStar(require("path"));
|
|
31
|
+
const cdk8s_1 = require("cdk8s");
|
|
32
|
+
const json2jsii_1 = require("json2jsii");
|
|
33
|
+
const semver = __importStar(require("semver"));
|
|
34
|
+
const base_1 = require("./base");
|
|
35
|
+
const codegen_1 = require("./codegen");
|
|
36
|
+
const MAX_HELM_BUFFER = 10 * 1024 * 1024;
|
|
37
|
+
const CHART_SCHEMA = 'values.schema.json';
|
|
38
|
+
const CHART_YAML = 'Chart.yaml';
|
|
39
|
+
class ImportHelm extends base_1.ImportBase {
|
|
40
|
+
static async fromSpec(importSpec) {
|
|
41
|
+
const { source } = importSpec;
|
|
42
|
+
return new ImportHelm(source);
|
|
43
|
+
}
|
|
44
|
+
constructor(source) {
|
|
45
|
+
super();
|
|
46
|
+
this.chartDependencies = [];
|
|
47
|
+
const [chartUrl, chartName, chartVersion] = extractHelmChartDetails(source);
|
|
48
|
+
this.chartName = chartName;
|
|
49
|
+
this.chartUrl = chartUrl;
|
|
50
|
+
this.chartVersion = chartVersion;
|
|
51
|
+
const tmpDir = pullHelmRepo(chartUrl, chartName, chartVersion);
|
|
52
|
+
const chartYamlFilePath = path.join(tmpDir, this.chartName, CHART_YAML);
|
|
53
|
+
const contents = cdk8s_1.Yaml.load(chartYamlFilePath);
|
|
54
|
+
if (contents.length === 1 && contents[0].dependencies) {
|
|
55
|
+
for (const dependency of contents[0].dependencies) {
|
|
56
|
+
this.chartDependencies.push(dependency.name);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const potentialSchemaPath = path.join(tmpDir, this.chartName, CHART_SCHEMA);
|
|
60
|
+
this.chartSchemaPath = fs.existsSync(potentialSchemaPath) ? potentialSchemaPath : undefined;
|
|
61
|
+
this.schema = this.chartSchemaPath ? JSON.parse(fs.readFileSync(this.chartSchemaPath, 'utf-8')) : undefined;
|
|
62
|
+
cleanup(tmpDir);
|
|
63
|
+
}
|
|
64
|
+
get moduleNames() {
|
|
65
|
+
return [this.chartName];
|
|
66
|
+
}
|
|
67
|
+
async generateTypeScript(code) {
|
|
68
|
+
var _a;
|
|
69
|
+
(0, codegen_1.emitHelmHeader)(code);
|
|
70
|
+
const types = new json2jsii_1.TypeGenerator({
|
|
71
|
+
definitions: (_a = this.schema) === null || _a === void 0 ? void 0 : _a.definitions,
|
|
72
|
+
toJson: false,
|
|
73
|
+
});
|
|
74
|
+
(0, codegen_1.generateHelmConstruct)(types, {
|
|
75
|
+
schema: this.schema,
|
|
76
|
+
chartName: this.chartName,
|
|
77
|
+
chartUrl: this.chartUrl,
|
|
78
|
+
chartVersion: this.chartVersion,
|
|
79
|
+
chartDependencies: this.chartDependencies,
|
|
80
|
+
fqn: this.chartName,
|
|
81
|
+
});
|
|
82
|
+
code.line(types.render());
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ImportHelm = ImportHelm;
|
|
86
|
+
/**
|
|
87
|
+
* Gets information about the helm chart from the helm url
|
|
88
|
+
* @param url
|
|
89
|
+
* @returns chartUrl, chartName and chartVersion
|
|
90
|
+
*/
|
|
91
|
+
function extractHelmChartDetails(url) {
|
|
92
|
+
const helmRegex = /^helm:([A-Za-z0-9_.-:\-]+)\/([A-Za-z0-9_.-:\-]+)\@([0-9]+)\.([0-9]+)\.([A-Za-z0-9-+]+)$/;
|
|
93
|
+
const helmDetails = helmRegex.exec(url);
|
|
94
|
+
if (!helmDetails) {
|
|
95
|
+
throw Error(`Invalid helm URL: ${url}. Must match the format: 'helm:<repo-url>/<chart-name>@<chart-version>'.`);
|
|
96
|
+
}
|
|
97
|
+
const chartUrl = helmDetails[1];
|
|
98
|
+
const chartName = helmDetails[2];
|
|
99
|
+
const major = helmDetails[3];
|
|
100
|
+
const minor = helmDetails[4];
|
|
101
|
+
const patch = helmDetails[5];
|
|
102
|
+
const chartVersion = `${major}.${minor}.${patch}`;
|
|
103
|
+
if (!semver.valid(chartVersion)) {
|
|
104
|
+
throw new Error(`Invalid chart version (${chartVersion}) in URL: ${url}. Must follow SemVer-2 (see https://semver.org/).`);
|
|
105
|
+
}
|
|
106
|
+
return [chartUrl, chartName, chartVersion];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Pulls the helm chart in a temporary directory
|
|
110
|
+
* @param chartUrl Chart url
|
|
111
|
+
* @param chartName Chart name
|
|
112
|
+
* @param chartVersion Chart version
|
|
113
|
+
* @returns Temporary directory path
|
|
114
|
+
*/
|
|
115
|
+
function pullHelmRepo(chartUrl, chartName, chartVersion) {
|
|
116
|
+
const workdir = fs.mkdtempSync(path.join(os.tmpdir(), 'cdk8s-helm-'));
|
|
117
|
+
const args = new Array();
|
|
118
|
+
args.push('pull');
|
|
119
|
+
args.push(chartName);
|
|
120
|
+
args.push('--repo', chartUrl);
|
|
121
|
+
args.push('--version', chartVersion);
|
|
122
|
+
args.push('--untar');
|
|
123
|
+
args.push('--untardir', workdir);
|
|
124
|
+
const command = 'helm';
|
|
125
|
+
const helm = (0, child_process_1.spawnSync)(command, args, {
|
|
126
|
+
maxBuffer: MAX_HELM_BUFFER,
|
|
127
|
+
});
|
|
128
|
+
if (helm.error) {
|
|
129
|
+
const err = helm.error.message;
|
|
130
|
+
if (err.includes('ENOENT')) {
|
|
131
|
+
throw new Error(`Unable to execute '${command}' to pull the Helm chart. Is helm installed on your system?`);
|
|
132
|
+
}
|
|
133
|
+
throw new Error(`Failed pulling helm chart from URL (${chartUrl}): ${err}`);
|
|
134
|
+
}
|
|
135
|
+
if (helm.status !== 0) {
|
|
136
|
+
throw new Error(helm.stderr.toString());
|
|
137
|
+
}
|
|
138
|
+
return workdir;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Cleanup temp directory created
|
|
142
|
+
* @param tmpDir Temporary directory path
|
|
143
|
+
*/
|
|
144
|
+
function cleanup(tmpDir) {
|
|
145
|
+
fs.rmSync(tmpDir, { recursive: true });
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvaGVsbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUEwQztBQUMxQyx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixpQ0FBNkI7QUFHN0IseUNBQTBDO0FBQzFDLCtDQUFpQztBQUNqQyxpQ0FBb0M7QUFDcEMsdUNBQWtFO0FBR2xFLE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3pDLE1BQU0sWUFBWSxHQUFHLG9CQUFvQixDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztBQUVoQyxNQUFhLFVBQVcsU0FBUSxpQkFBVTtJQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQjtRQUNqRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQVNELFlBQW9CLE1BQWM7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFKTyxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFNaEQsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFL0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJ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TSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsT0FBTyw2REFBNkQsQ0FBQyxDQUFDO1NBQzdHO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsUUFBUSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDN0U7SUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsT0FBTyxDQUFDLE1BQWM7SUFDN0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd25TeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgWWFtbCB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gJ2NvZGVtYWtlcic7XG5pbXBvcnQgdHlwZSB7IEpTT05TY2hlbWE0IH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgVHlwZUdlbmVyYXRvciB9IGZyb20gJ2pzb24yanNpaSc7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IEltcG9ydEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgZW1pdEhlbG1IZWFkZXIsIGdlbmVyYXRlSGVsbUNvbnN0cnVjdCB9IGZyb20gJy4vY29kZWdlbic7XG5pbXBvcnQgeyBJbXBvcnRTcGVjIH0gZnJvbSAnLi4vY29uZmlnJztcblxuY29uc3QgTUFYX0hFTE1fQlVGRkVSID0gMTAgKiAxMDI0ICogMTAyNDtcbmNvbnN0IENIQVJUX1NDSEVNQSA9ICd2YWx1ZXMuc2NoZW1hLmpzb24nO1xuY29uc3QgQ0hBUlRfWUFNTCA9ICdDaGFydC55YW1sJztcblxuZXhwb3J0IGNsYXNzIEltcG9ydEhlbG0gZXh0ZW5kcyBJbXBvcnRCYXNlIHtcbiAgcHVibGljIHN0YXRpYyBhc3luYyBmcm9tU3BlYyhpbXBvcnRTcGVjOiBJbXBvcnRTcGVjKTogUHJvbWlzZTxJbXBvcnRIZWxtPiB7XG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IGltcG9ydFNwZWM7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRIZWxtKHNvdXJjZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0VXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRWZXJzaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRTY2hlbWFQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnREZXBlbmRlbmNpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBKU09OU2NoZW1hNCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNvdXJjZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IFtjaGFydFVybCwgY2hhcnROYW1lLCBjaGFydFZlcnNpb25dID0gZXh0cmFjdEhlbG1DaGFydERldGFpbHMoc291cmNlKTtcblxuICAgIHRoaXMuY2hhcnROYW1lID0gY2hhcnROYW1lO1xuICAgIHRoaXMuY2hhcnRVcmwgPSBjaGFydFVybDtcbiAgICB0aGlzLmNoYXJ0VmVyc2lvbiA9IGNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCB0bXBEaXIgPSBwdWxsSGVsbVJlcG8oY2hhcnRVcmwsIGNoYXJ0TmFtZSwgY2hhcnRWZXJzaW9uKTtcblxuICAgIGNvbnN0IGNoYXJ0WWFtbEZpbGVQYXRoID0gcGF0aC5qb2luKHRtcERpciwgdGhpcy5jaGFydE5hbWUsIENIQVJUX1lBTUwpO1xuICAgIGNvbnN0IGNvbnRlbnRzID0gWWFtbC5sb2FkKGNoYXJ0WWFtbEZpbGVQYXRoKTtcblxuICAgIGlmIChjb250ZW50cy5sZW5ndGggPT09IDEgJiYgY29udGVudHNbMF0uZGVwZW5kZW5jaWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgY29udGVudHNbMF0uZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRoaXMuY2hhcnREZXBlbmRlbmNpZXMucHVzaChkZXBlbmRlbmN5Lm5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBvdGVudGlhbFNjaGVtYVBhdGggPSBwYXRoLmpvaW4odG1wRGlyLCB0aGlzLmNoYXJ0TmFtZSwgQ0hBUlRfU0NIRU1BKTtcbiAgICB0aGlzLmNoYXJ0U2NoZW1hUGF0aCA9IGZzLmV4aXN0c1N5bmMocG90ZW50aWFsU2NoZW1hUGF0aCkgPyBwb3RlbnRpYWxTY2hlbWFQYXRoIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2NoZW1hID0gdGhpcy5jaGFydFNjaGVtYVBhdGggPyBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyh0aGlzLmNoYXJ0U2NoZW1hUGF0aCwgJ3V0Zi04JykpIDogdW5kZWZpbmVkO1xuXG4gICAgY2xlYW51cCh0bXBEaXIpO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2R1bGVOYW1lcygpIHtcbiAgICByZXR1cm4gW3RoaXMuY2hhcnROYW1lXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZW5lcmF0ZVR5cGVTY3JpcHQoY29kZTogQ29kZU1ha2VyKSB7XG4gICAgZW1pdEhlbG1IZWFkZXIoY29kZSk7XG5cbiAgICBjb25zdCB0eXBlcyA9IG5ldyBUeXBlR2VuZXJhdG9yKHtcbiAgICAgIGRlZmluaXRpb25zOiB0aGlzLnNjaGVtYT8uZGVmaW5pdGlvbnMsXG4gICAgICB0b0pzb246IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgZ2VuZXJhdGVIZWxtQ29uc3RydWN0KHR5cGVzLCB7XG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgY2hhcnROYW1lOiB0aGlzLmNoYXJ0TmFtZSxcbiAgICAgIGNoYXJ0VXJsOiB0aGlzLmNoYXJ0VXJsLFxuICAgICAgY2hhcnRWZXJzaW9uOiB0aGlzLmNoYXJ0VmVyc2lvbixcbiAgICAgIGNoYXJ0RGVwZW5kZW5jaWVzOiB0aGlzLmNoYXJ0RGVwZW5kZW5jaWVzLFxuICAgICAgZnFuOiB0aGlzLmNoYXJ0TmFtZSxcbiAgICB9KTtcblxuICAgIGNvZGUubGluZSh0eXBlcy5yZW5kZXIoKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoZWxtIGNoYXJ0IGZyb20gdGhlIGhlbG0gdXJsXG4gKiBAcGFyYW0gdXJsXG4gKiBAcmV0dXJucyBjaGFydFVybCwgY2hhcnROYW1lIGFuZCBjaGFydFZlcnNpb25cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEhlbG1DaGFydERldGFpbHModXJsOiBzdHJpbmcpIHtcbiAgY29uc3QgaGVsbVJlZ2V4ID0gL15oZWxtOihbQS1aYS16MC05Xy4tOlxcLV0rKVxcLyhbQS1aYS16MC05Xy4tOlxcLV0rKVxcQChbMC05XSspXFwuKFswLTldKylcXC4oW0EtWmEtejAtOS0rXSspJC87XG4gIGNvbnN0IGhlbG1EZXRhaWxzID0gaGVsbVJlZ2V4LmV4ZWModXJsKTtcblxuICBpZiAoIWhlbG1EZXRhaWxzKSB7XG4gICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaGVsbSBVUkw6ICR7dXJsfS4gTXVzdCBtYXRjaCB0aGUgZm9ybWF0OiAnaGVsbTo8cmVwby11cmw+LzxjaGFydC1uYW1lPkA8Y2hhcnQtdmVyc2lvbj4nLmApO1xuICB9XG5cbiAgY29uc3QgY2hhcnRVcmwgPSBoZWxtRGV0YWlsc1sxXTtcbiAgY29uc3QgY2hhcnROYW1lID0gaGVsbURldGFpbHNbMl07XG4gIGNvbnN0IG1ham9yID0gaGVsbURldGFpbHNbM107XG4gIGNvbnN0IG1pbm9yID0gaGVsbURldGFpbHNbNF07XG4gIGNvbnN0IHBhdGNoID0gaGVsbURldGFpbHNbNV07XG5cbiAgY29uc3QgY2hhcnRWZXJzaW9uID0gYCR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9YDtcblxuICBpZiAoIXNlbXZlci52YWxpZChjaGFydFZlcnNpb24pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNoYXJ0IHZlcnNpb24gKCR7Y2hhcnRWZXJzaW9ufSkgaW4gVVJMOiAke3VybH0uIE11c3QgZm9sbG93IFNlbVZlci0yIChzZWUgaHR0cHM6Ly9zZW12ZXIub3JnLykuYCk7XG4gIH1cblxuICByZXR1cm4gW2NoYXJ0VXJsLCBjaGFydE5hbWUsIGNoYXJ0VmVyc2lvbl07XG59XG5cbi8qKlxuICogUHVsbHMgdGhlIGhlbG0gY2hhcnQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5XG4gKiBAcGFyYW0gY2hhcnRVcmwgQ2hhcnQgdXJsXG4gKiBAcGFyYW0gY2hhcnROYW1lIENoYXJ0IG5hbWVcbiAqIEBwYXJhbSBjaGFydFZlcnNpb24gQ2hhcnQgdmVyc2lvblxuICogQHJldHVybnMgVGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoXG4gKi9cbmZ1bmN0aW9uIHB1bGxIZWxtUmVwbyhjaGFydFVybDogc3RyaW5nLCBjaGFydE5hbWU6IHN0cmluZywgY2hhcnRWZXJzaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB3b3JrZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrOHMtaGVsbS0nKSk7XG5cbiAgY29uc3QgYXJncyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGFyZ3MucHVzaCgncHVsbCcpO1xuICBhcmdzLnB1c2goY2hhcnROYW1lKTtcbiAgYXJncy5wdXNoKCctLXJlcG8nLCBjaGFydFVybCk7XG4gIGFyZ3MucHVzaCgnLS12ZXJzaW9uJywgY2hhcnRWZXJzaW9uKTtcbiAgYXJncy5wdXNoKCctLXVudGFyJyk7XG4gIGFyZ3MucHVzaCgnLS11bnRhcmRpcicsIHdvcmtkaXIpO1xuXG4gIGNvbnN0IGNvbW1hbmQgPSAnaGVsbSc7XG5cbiAgY29uc3QgaGVsbSA9IHNwYXduU3luYyhjb21tYW5kLCBhcmdzLCB7XG4gICAgbWF4QnVmZmVyOiBNQVhfSEVMTV9CVUZGRVIsXG4gIH0pO1xuXG4gIGlmIChoZWxtLmVycm9yKSB7XG4gICAgY29uc3QgZXJyID0gaGVsbS5lcnJvci5tZXNzYWdlO1xuICAgIGlmIChlcnIuaW5jbHVkZXMoJ0VOT0VOVCcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBleGVjdXRlICcke2NvbW1hbmR9JyB0byBwdWxsIHRoZSBIZWxtIGNoYXJ0LiBJcyBoZWxtIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbT9gKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCBwdWxsaW5nIGhlbG0gY2hhcnQgZnJvbSBVUkwgKCR7Y2hhcnRVcmx9KTogJHtlcnJ9YCk7XG4gIH1cblxuICBpZiAoaGVsbS5zdGF0dXMgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoaGVsbS5zdGRlcnIudG9TdHJpbmcoKSk7XG4gIH1cblxuICByZXR1cm4gd29ya2Rpcjtcbn1cblxuLyoqXG4gKiBDbGVhbnVwIHRlbXAgZGlyZWN0b3J5IGNyZWF0ZWRcbiAqIEBwYXJhbSB0bXBEaXIgVGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoXG4gKi9cbmZ1bmN0aW9uIGNsZWFudXAodG1wRGlyOiBzdHJpbmcpIHtcbiAgZnMucm1TeW5jKHRtcERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG59Il19
|
package/package.json
CHANGED
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"dependencies": {
|
|
76
76
|
"@types/node": "^16",
|
|
77
77
|
"ajv": "^8.12.0",
|
|
78
|
-
"cdk8s": "^2.66.
|
|
79
|
-
"cdk8s-plus-25": "^2.22.
|
|
78
|
+
"cdk8s": "^2.66.3",
|
|
79
|
+
"cdk8s-plus-25": "^2.22.26",
|
|
80
80
|
"codemaker": "^1.89.0",
|
|
81
81
|
"colors": "1.4.0",
|
|
82
82
|
"constructs": "^10.2.70",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"node": ">= 16.20.0"
|
|
104
104
|
},
|
|
105
105
|
"license": "Apache-2.0",
|
|
106
|
-
"version": "2.
|
|
106
|
+
"version": "2.123.0",
|
|
107
107
|
"jest": {
|
|
108
108
|
"testMatch": [
|
|
109
109
|
"<rootDir>/src/**/__tests__/**/*.ts?(x)",
|