UNPKG

cdk8s-cli

Version:

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

45 lines 11.1 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') .example('cdk8s import helm:./my-local-chart', 'Imports a local helm chart from a relative path') .example('cdk8s import helm:/absolute/path/to/chart', 'Imports a local helm chart from an absolute path') .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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHlDQUEwRDtBQUMxRCxvREFBdUQ7QUFDdkQsMENBQXVEO0FBQ3ZELHFDQUEwQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFjLEdBQUUsQ0FBQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkUsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUMxQixhQUFRLEdBQUcsMkRBQTJELENBQUM7UUFDdkUsWUFBTyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV4QyxZQUFPLEdBQUcsQ0FBQyxJQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJO2FBQ2pELFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0xBQWdMLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3JQLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxpRUFBaUUseUJBQW1CLEVBQUUsQ0FBQzthQUNuSCxPQUFPLENBQUMsb0NBQW9DLEVBQUUsMERBQTBELENBQUM7YUFDekcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLGtEQUFrRCxDQUFDO2FBQ3RGLE9BQU8sQ0FBQywwQ0FBMEMsRUFBRSwyRUFBMkUsQ0FBQzthQUNoSSxPQUFPLENBQUMsOENBQThDLEVBQUUscUdBQXFHLENBQUM7YUFDOUosT0FBTyxDQUFDLGtEQUFrRCxFQUFFLHlEQUF5RCxDQUFDO2FBQ3RILE9BQU8sQ0FBQyxvRUFBb0UsRUFBRSw2Q0FBNkMsQ0FBQzthQUM1SCxPQUFPLENBQUMsb0NBQW9DLEVBQUUsaURBQWlELENBQUM7YUFDaEcsT0FBTyxDQUFDLDJDQUEyQyxFQUFFLGtEQUFrRCxDQUFDO2FBRXhHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUseUZBQXlGLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hMLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsSUFBSSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQzlILE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSx1SEFBdUgsRUFBRSxDQUFDO2FBQ25LLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSwrS0FBK0ssRUFBRSxDQUFDO2FBQ2pPLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFjMUosQ0FBQztJQVpRLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBUztRQUM1QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RSxNQUFNLEtBQUssR0FBaUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsbUJBQVksQ0FBQyxDQUFDO1FBRW5GLE1BQU0sSUFBQSx5QkFBYyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM3QixlQUFlO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IHJlYWRDb25maWdTeW5jLCBJbXBvcnRTcGVjIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IGltcG9ydERpc3BhdGNoIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2Rpc3BhdGNoJztcbmltcG9ydCB7IERFRkFVTFRfQVBJX1ZFUlNJT04gfSBmcm9tICcuLi8uLi9pbXBvcnQvazhzJztcbmltcG9ydCB7IHBhcnNlSW1wb3J0cyB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5jb25zdCBjb25maWcgPSByZWFkQ29uZmlnU3luYygpO1xuXG5jb25zdCBERUZBVUxUX09VVERJUiA9ICdpbXBvcnRzJztcbmNvbnN0IExBTkdVQUdFUyA9IFsnY3NoYXJwJywgJ3R5cGVzY3JpcHQnLCAncHl0aG9uJywgJ2phdmEnLCAnZ28nXTtcblxuY2xhc3MgQ29tbWFuZCBpbXBsZW1lbnRzIHlhcmdzLkNvbW1hbmRNb2R1bGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZCA9ICdpbXBvcnQgW1NQRUNdJztcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaWJlID0gJ0ltcG9ydHMgQVBJIG9iamVjdHMgdG8geW91ciBhcHAgYnkgZ2VuZXJhdGluZyBjb25zdHJ1Y3RzLic7XG4gIHB1YmxpYyByZWFkb25seSBhbGlhc2VzID0gWydnZW4nLCAnaW1wb3J0JywgJ2dlbmVyYXRlJ107XG5cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkZXIgPSAoYXJnczogeWFyZ3MuQXJndikgPT4gYXJnc1xuICAgIC5wb3NpdGlvbmFsKCdTUEVDJywgeyBkZWZhdWx0OiBjb25maWc/LmltcG9ydHMsIGRlc2M6ICdpbXBvcnQgc3BlYyB3aXRoIHRoZSBzeW50YXggW05BTUU6PV1TUEVDIHdoZXJlIE5BTUUgaXMgYW4gb3B0aW9uYWwgbW9kdWxlIG5hbWUgYW5kIHN1cHBvcnRlZCBTUEVDIGFyZTogazhzLCBjcmQueWFtbCwgaHR0cHM6Ly9kb21haW4vY3JkLnlhbWwsIGdpdGh1YjphY2NvdW50L3JlcG9bQFZFUlNJT05dKS4nLCBhcnJheTogdHJ1ZSB9KVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzJywgYEltcG9ydHMgS3ViZXJuZXRlcyBBUEkgb2JqZWN0cyB0byBpbXBvcnRzL2s4cy50cy4gRGVmYXVsdHMgdG8gJHtERUZBVUxUX0FQSV9WRVJTSU9OfWApXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHMgLS1uby1jbGFzcy1wcmVmaXgnLCAnSW1wb3J0cyBLdWJlcm5ldGVzIEFQSSBvYmplY3RzIHdpdGhvdXQgdGhlIFwiS3ViZVwiIHByZWZpeCcpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBrOHNAMS4xMy4wJywgJ0ltcG9ydHMgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBLdWJlcm5ldGVzIEFQSScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBqZW5raW5zLmlvX2plbmtpbnNfY3JkLnlhbWwnLCAnSW1wb3J0cyBjb25zdHJ1Y3RzIGZvciB0aGUgSmVua2lucyBjdXN0b20gcmVzb3VyY2UgZGVmaW5pdGlvbiBmcm9tIGEgZmlsZScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBtYXR0ZXJtb3N0Oj1tYXR0ZXJtb3N0X2NyZC55YW1sJywgJ0ltcG9ydHMgY29uc3RydWN0cyBmb3IgdGhlIG1hdHRlcm1vc3QgY2x1c3RlciBjdXN0b20gcmVzb3VyY2UgZGVmaW5pdGlvbiB1c2luZyBhIGN1c3RvbSBtb2R1bGUgbmFtZScpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBnaXRodWI6Y3Jvc3NwbGFuZS9jcm9zc3BsYW5lQDAuMTQuMCcsICdJbXBvcnRzIGNvbnN0cnVjdHMgZm9yIGEgR2l0SHViIHJlcG8gdXNpbmcgZG9jLmNyZHMuZGV2JylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGhlbG06aHR0cHM6Ly9jaGFydHMuYml0bmFtaS5jb20vYml0bmFtaS9teXNxbEA5LjEwLjEwJywgJ0ltcG9ydHMgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIG9mIGhlbG0gY2hhcnQnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgaGVsbTouL215LWxvY2FsLWNoYXJ0JywgJ0ltcG9ydHMgYSBsb2NhbCBoZWxtIGNoYXJ0IGZyb20gYSByZWxhdGl2ZSBwYXRoJylcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGhlbG06L2Fic29sdXRlL3BhdGgvdG8vY2hhcnQnLCAnSW1wb3J0cyBhIGxvY2FsIGhlbG0gY2hhcnQgZnJvbSBhbiBhYnNvbHV0ZSBwYXRoJylcblxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiB0cnVlLCBkZXNjOiBcIkRvbnQgc2F2ZSB0aGUgaW1wb3J0IFVSTCBpbiB0aGUgJ2ltcG9ydHMnIHNlY3Rpb24gb2YgdGhlIGNkazhzLnlhbWwgY29uZmlndXJhdGlvbiBmaWxlLlwiLCBhbGlhczogJ3MnIH0pXG4gICAgLm9wdGlvbignb3V0cHV0JywgeyBkZWZhdWx0OiBjb25maWc/LmltcG9ydERpcmVjdG9yeSA/PyBERUZBVUxUX09VVERJUiwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgZGlyZWN0b3J5JywgYWxpYXM6ICdvJyB9KVxuICAgIC5vcHRpb24oJ2V4Y2x1ZGUnLCB7IHR5cGU6ICdhcnJheScsIGRlc2M6ICdEbyBub3QgaW1wb3J0IHR5cGVzIHRoYXQgbWF0Y2ggdGhlc2UgcmVndWxhciBleHByZXNzaW9ucy4gVGhleSB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBcImFueVwiIHR5cGUgKG9ubHkgZm9yIFwiazhzXCIpJyB9KVxuICAgIC5vcHRpb24oJ2NsYXNzLXByZWZpeCcsIHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdBIHByZWZpeCB0byBhZGQgdG8gYWxsIGdlbmVyYXRlZCBjbGFzcyBuYW1lcy4gQnkgZGVmYXVsdCwgdGhpcyBpcyBcIkt1YmVcIiBmb3IgXCJrOHNcIiBpbXBvcnRzIGFuZCBkaXNhYmxlZCBmb3IgQ1JEIGltcG9ydHMuIFVzZSAtLW5vLWNsYXNzLXByZWZpeCB0byBkaXNhYmxlLiBNdXN0IGJlIFBhc2NhbENhc2UnIH0pXG4gICAgLm9wdGlvbignbGFuZ3VhZ2UnLCB7IGRlZmF1bHQ6IGNvbmZpZz8ubGFuZ3VhZ2UsIGRlbWFuZDogdHJ1ZSwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UnLCBhbGlhczogJ2wnLCBjaG9pY2VzOiBMQU5HVUFHRVMgfSk7XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZXIoYXJndjogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lUHJlZml4ID0gYXJndi5jbGFzc1ByZWZpeCA9PT0gZmFsc2UgPyAnJyA6IGFyZ3YuY2xhc3NQcmVmaXg7XG4gICAgY29uc3QgaW1wb3J0czogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KGFyZ3Yuc3BlYykgPyBhcmd2LnNwZWMgOiBbYXJndi5zcGVjXTtcbiAgICBjb25zdCBzcGVjczogSW1wb3J0U3BlY1tdID0gaW1wb3J0cy5maWx0ZXIoc3BlYyA9PiBzcGVjICE9IG51bGwpLm1hcChwYXJzZUltcG9ydHMpO1xuXG4gICAgYXdhaXQgaW1wb3J0RGlzcGF0Y2goc3BlY3MsIGFyZ3YsIHtcbiAgICAgIG91dGRpcjogYXJndi5vdXRwdXQsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogYXJndi5sYW5ndWFnZSxcbiAgICAgIGNsYXNzTmFtZVByZWZpeCxcbiAgICAgIHNhdmU6IGFyZ3Yuc2F2ZSxcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBDb21tYW5kKCk7XG4iXX0=