UNPKG

cdk8s-cli

Version:

This is the command line tool for Cloud Development Kit (CDK) for Kubernetes (cdk8s).

43 lines 10.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const config_1 = require("../../config"); const dispatch_1 = require("../../import/dispatch"); const k8s_1 = require("../../import/k8s"); const util_1 = require("../../util"); const config = (0, config_1.readConfigSync)(); const DEFAULT_OUTDIR = 'imports'; const LANGUAGES = ['csharp', 'typescript', 'python', 'java', 'go']; class Command { constructor() { this.command = 'import [SPEC]'; this.describe = 'Imports API objects to your app by generating constructs.'; this.aliases = ['gen', 'import', 'generate']; this.builder = (args) => args .positional('SPEC', { default: config?.imports, desc: 'import spec with the syntax [NAME:=]SPEC where NAME is an optional module name and supported SPEC are: k8s, crd.yaml, https://domain/crd.yaml, github:account/repo[@VERSION]).', array: true }) .example('cdk8s import k8s', `Imports Kubernetes API objects to imports/k8s.ts. Defaults to ${k8s_1.DEFAULT_API_VERSION}`) .example('cdk8s import k8s --no-class-prefix', 'Imports Kubernetes API objects without the "Kube" prefix') .example('cdk8s import k8s@1.13.0', 'Imports a specific version of the Kubernetes API') .example('cdk8s import jenkins.io_jenkins_crd.yaml', 'Imports constructs for the Jenkins custom resource definition from a file') .example('cdk8s import mattermost:=mattermost_crd.yaml', 'Imports constructs for the mattermost cluster custom resource definition using a custom module name') .example('cdk8s import github:crossplane/crossplane@0.14.0', 'Imports constructs for a GitHub repo using doc.crds.dev') .example('cdk8s import helm:https://charts.bitnami.com/bitnami/mysql@9.10.10', 'Imports the specified version of helm chart') .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' }) .option('output', { default: config?.importDirectory ?? DEFAULT_OUTDIR, type: 'string', desc: 'Output directory', alias: 'o' }) .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")' }) .option('class-prefix', { type: 'string', desc: 'A prefix to add to all generated class names. By default, this is "Kube" for "k8s" imports and disabled for CRD imports. Use --no-class-prefix to disable. Must be PascalCase' }) .option('language', { default: config?.language, demand: true, type: 'string', desc: 'Output programming language', alias: 'l', choices: LANGUAGES }); } async handler(argv) { const classNamePrefix = argv.classPrefix === false ? '' : argv.classPrefix; const imports = Array.isArray(argv.spec) ? argv.spec : [argv.spec]; const specs = imports.filter(spec => spec != null).map(util_1.parseImports); await (0, dispatch_1.importDispatch)(specs, argv, { outdir: argv.output, targetLanguage: argv.language, classNamePrefix, save: argv.save, }); } } module.exports = new Command(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHlDQUEwRDtBQUMxRCxvREFBdUQ7QUFDdkQsMENBQXVEO0FBQ3ZELHFDQUEwQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFjLEdBQUUsQ0FBQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkUsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUMxQixhQUFRLEdBQUcsMkRBQTJELENBQUM7UUFDdkUsWUFBTyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV4QyxZQUFPLEdBQUcsQ0FBQyxJQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJO2FBQ2pELFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0xBQWdMLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3JQLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxpRUFBaUUseUJBQW1CLEVBQUUsQ0FBQzthQUNuSCxPQUFPLENBQUMsb0NBQW9DLEVBQUUsMERBQTBELENBQUM7YUFDekcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLGtEQUFrRCxDQUFDO2FBQ3RGLE9BQU8sQ0FBQywwQ0FBMEMsRUFBRSwyRUFBMkUsQ0FBQzthQUNoSSxPQUFPLENBQUMsOENBQThDLEVBQUUscUdBQXFHLENBQUM7YUFDOUosT0FBTyxDQUFDLGtEQUFrRCxFQUFFLHlEQUF5RCxDQUFDO2FBQ3RILE9BQU8sQ0FBQyxvRUFBb0UsRUFBRSw2Q0FBNkMsQ0FBQzthQUU1SCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHlGQUF5RixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUNoTCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUM5SCxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsdUhBQXVILEVBQUUsQ0FBQzthQUNuSyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsK0tBQStLLEVBQUUsQ0FBQzthQUNqTyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBYzFKLENBQUM7SUFaUSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQVM7UUFDNUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzRSxNQUFNLE9BQU8sR0FBYSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0UsTUFBTSxLQUFLLEdBQWlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFZLENBQUMsQ0FBQztRQUVuRixNQUFNLElBQUEseUJBQWMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDN0IsZUFBZTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnU3luYywgSW1wb3J0U3BlYyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBpbXBvcnREaXNwYXRjaCB9IGZyb20gJy4uLy4uL2ltcG9ydC9kaXNwYXRjaCc7XG5pbXBvcnQgeyBERUZBVUxUX0FQSV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2s4cyc7XG5pbXBvcnQgeyBwYXJzZUltcG9ydHMgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgY29uZmlnID0gcmVhZENvbmZpZ1N5bmMoKTtcblxuY29uc3QgREVGQVVMVF9PVVRESVIgPSAnaW1wb3J0cyc7XG5jb25zdCBMQU5HVUFHRVMgPSBbJ2NzaGFycCcsICd0eXBlc2NyaXB0JywgJ3B5dGhvbicsICdqYXZhJywgJ2dvJ107XG5cbmNsYXNzIENvbW1hbmQgaW1wbGVtZW50cyB5YXJncy5Db21tYW5kTW9kdWxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSAnaW1wb3J0IFtTUEVDXSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdJbXBvcnRzIEFQSSBvYmplY3RzIHRvIHlvdXIgYXBwIGJ5IGdlbmVyYXRpbmcgY29uc3RydWN0cy4nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNlcyA9IFsnZ2VuJywgJ2ltcG9ydCcsICdnZW5lcmF0ZSddO1xuXG4gIHB1YmxpYyByZWFkb25seSBidWlsZGVyID0gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IGFyZ3NcbiAgICAucG9zaXRpb25hbCgnU1BFQycsIHsgZGVmYXVsdDogY29uZmlnPy5pbXBvcnRzLCBkZXNjOiAnaW1wb3J0IHNwZWMgd2l0aCB0aGUgc3ludGF4IFtOQU1FOj1dU1BFQyB3aGVyZSBOQU1FIGlzIGFuIG9wdGlvbmFsIG1vZHVsZSBuYW1lIGFuZCBzdXBwb3J0ZWQgU1BFQyBhcmU6IGs4cywgY3JkLnlhbWwsIGh0dHBzOi8vZG9tYWluL2NyZC55YW1sLCBnaXRodWI6YWNjb3VudC9yZXBvW0BWRVJTSU9OXSkuJywgYXJyYXk6IHRydWUgfSlcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGs4cycsIGBJbXBvcnRzIEt1YmVybmV0ZXMgQVBJIG9iamVjdHMgdG8gaW1wb3J0cy9rOHMudHMuIERlZmF1bHRzIHRvICR7REVGQVVMVF9BUElfVkVSU0lPTn1gKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzIC0tbm8tY2xhc3MtcHJlZml4JywgJ0ltcG9ydHMgS3ViZXJuZXRlcyBBUEkgb2JqZWN0cyB3aXRob3V0IHRoZSBcIkt1YmVcIiBwcmVmaXgnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzQDEuMTMuMCcsICdJbXBvcnRzIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgS3ViZXJuZXRlcyBBUEknKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgamVua2lucy5pb19qZW5raW5zX2NyZC55YW1sJywgJ0ltcG9ydHMgY29uc3RydWN0cyBmb3IgdGhlIEplbmtpbnMgY3VzdG9tIHJlc291cmNlIGRlZmluaXRpb24gZnJvbSBhIGZpbGUnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgbWF0dGVybW9zdDo9bWF0dGVybW9zdF9jcmQueWFtbCcsICdJbXBvcnRzIGNvbnN0cnVjdHMgZm9yIHRoZSBtYXR0ZXJtb3N0IGNsdXN0ZXIgY3VzdG9tIHJlc291cmNlIGRlZmluaXRpb24gdXNpbmcgYSBjdXN0b20gbW9kdWxlIG5hbWUnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgZ2l0aHViOmNyb3NzcGxhbmUvY3Jvc3NwbGFuZUAwLjE0LjAnLCAnSW1wb3J0cyBjb25zdHJ1Y3RzIGZvciBhIEdpdEh1YiByZXBvIHVzaW5nIGRvYy5jcmRzLmRldicpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBoZWxtOmh0dHBzOi8vY2hhcnRzLmJpdG5hbWkuY29tL2JpdG5hbWkvbXlzcWxAOS4xMC4xMCcsICdJbXBvcnRzIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvZiBoZWxtIGNoYXJ0JylcblxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiB0cnVlLCBkZXNjOiBcIkRvbnQgc2F2ZSB0aGUgaW1wb3J0IFVSTCBpbiB0aGUgJ2ltcG9ydHMnIHNlY3Rpb24gb2YgdGhlIGNkazhzLnlhbWwgY29uZmlndXJhdGlvbiBmaWxlLlwiLCBhbGlhczogJ3MnIH0pXG4gICAgLm9wdGlvbignb3V0cHV0JywgeyBkZWZhdWx0OiBjb25maWc/LmltcG9ydERpcmVjdG9yeSA/PyBERUZBVUxUX09VVERJUiwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgZGlyZWN0b3J5JywgYWxpYXM6ICdvJyB9KVxuICAgIC5vcHRpb24oJ2V4Y2x1ZGUnLCB7IHR5cGU6ICdhcnJheScsIGRlc2M6ICdEbyBub3QgaW1wb3J0IHR5cGVzIHRoYXQgbWF0Y2ggdGhlc2UgcmVndWxhciBleHByZXNzaW9ucy4gVGhleSB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBcImFueVwiIHR5cGUgKG9ubHkgZm9yIFwiazhzXCIpJyB9KVxuICAgIC5vcHRpb24oJ2NsYXNzLXByZWZpeCcsIHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdBIHByZWZpeCB0byBhZGQgdG8gYWxsIGdlbmVyYXRlZCBjbGFzcyBuYW1lcy4gQnkgZGVmYXVsdCwgdGhpcyBpcyBcIkt1YmVcIiBmb3IgXCJrOHNcIiBpbXBvcnRzIGFuZCBkaXNhYmxlZCBmb3IgQ1JEIGltcG9ydHMuIFVzZSAtLW5vLWNsYXNzLXByZWZpeCB0byBkaXNhYmxlLiBNdXN0IGJlIFBhc2NhbENhc2UnIH0pXG4gICAgLm9wdGlvbignbGFuZ3VhZ2UnLCB7IGRlZmF1bHQ6IGNvbmZpZz8ubGFuZ3VhZ2UsIGRlbWFuZDogdHJ1ZSwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UnLCBhbGlhczogJ2wnLCBjaG9pY2VzOiBMQU5HVUFHRVMgfSk7XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZXIoYXJndjogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lUHJlZml4ID0gYXJndi5jbGFzc1ByZWZpeCA9PT0gZmFsc2UgPyAnJyA6IGFyZ3YuY2xhc3NQcmVmaXg7XG4gICAgY29uc3QgaW1wb3J0czogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KGFyZ3Yuc3BlYykgPyBhcmd2LnNwZWMgOiBbYXJndi5zcGVjXTtcbiAgICBjb25zdCBzcGVjczogSW1wb3J0U3BlY1tdID0gaW1wb3J0cy5maWx0ZXIoc3BlYyA9PiBzcGVjICE9IG51bGwpLm1hcChwYXJzZUltcG9ydHMpO1xuXG4gICAgYXdhaXQgaW1wb3J0RGlzcGF0Y2goc3BlY3MsIGFyZ3YsIHtcbiAgICAgIG91dGRpcjogYXJndi5vdXRwdXQsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogYXJndi5sYW5ndWFnZSxcbiAgICAgIGNsYXNzTmFtZVByZWZpeCxcbiAgICAgIHNhdmU6IGFyZ3Yuc2F2ZSxcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBDb21tYW5kKCk7XG4iXX0=