UNPKG

cdk8s-cli

Version:

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

125 lines • 16.9 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const path = __importStar(require("path")); const fs = __importStar(require("fs-extra")); const pacmak = __importStar(require("jsii-pacmak")); const pacmakv = __importStar(require("jsii-pacmak/lib/targets/version-utils")); const sscaff_1 = require("sscaff"); const pkgroot = path.join(__dirname, '..', '..', '..'); const pkg = fs.readJsonSync(path.join(pkgroot, 'package.json')); const constructsVersion = pkg.dependencies.constructs.replace('^', ''); const templatesDir = path.join(pkgroot, 'templates'); const availableTemplates = fs.readdirSync(templatesDir).filter(x => !x.startsWith('.')); class Command { constructor() { this.command = 'init TYPE'; this.describe = 'Create a new cdk8s project from a template.'; this.builder = (args) => args .positional('TYPE', { demandOption: true, desc: 'Project type' }) .showHelpOnFail(false) .choices('TYPE', availableTemplates); } async handler(argv) { var _a, _b; if (fs.readdirSync('.').filter(f => !f.startsWith('.')).length > 0) { console.error('Cannot initialize a project in a non-empty directory'); process.exit(1); } console.error(`Initializing a project from the ${argv.type} template`); const templatePath = path.join(templatesDir, argv.type); const deps = await determineDeps(); try { await (0, sscaff_1.sscaff)(templatePath, '.', deps); } catch (er) { const e = er; throw new Error(`error during project initialization: ${e.stack}\nSTDOUT:\n${(_a = e.stdout) === null || _a === void 0 ? void 0 : _a.toString()}\nSTDERR:\n${(_b = e.stderr) === null || _b === void 0 ? void 0 : _b.toString()}`); } } } async function determineDeps() { const cdk8s = new ModuleVersion('cdk8s', { jsii: true }); const cdk8sPlus = new ModuleVersion('cdk8s-plus-28', { jsii: true }); const cdk8sCli = new ModuleVersion('cdk8s-cli'); const jsii = new ModuleVersion('jsii-pacmak'); const cdk8sTarball = process.env.CDK8S_TARBALL; const cdk8sTarballEscaped = cdk8sTarball ? (cdk8sTarball.replace(/\\/g, '\\\\')) : undefined; return { pypi_cdk8s: cdk8s.pypiDependency, pypi_cdk8s_plus: cdk8sPlus.pypiDependency, mvn_cdk8s: cdk8s.mavenDependency, mvn_cdk8s_plus: cdk8sPlus.mavenDependency, cdk8s_core_version: cdk8s.version, cdk8s_plus_version: cdk8sPlus.version, constructs_version: constructsVersion, jsii_version: jsii.version, cdk8s_cli_spec: cdk8sTarballEscaped !== null && cdk8sTarballEscaped !== void 0 ? cdk8sTarballEscaped : `^${cdk8sCli.version}`, }; } class ModuleVersion { constructor(moduleName, options = {}) { var _a; this.moduleName = moduleName; this.version = this.resolveVersion(moduleName); this.npmVersion = this.version; this.pypiVersion = pacmakv.toReleaseVersion(this.version, pacmak.TargetName.PYTHON); this.mavenVersion = pacmakv.toReleaseVersion(this.version, pacmak.TargetName.JAVA); this.jsii = (_a = options.jsii) !== null && _a !== void 0 ? _a : false; } get npmTarballFile() { if (this.jsii) { return `${this.moduleName}@${this.version}.jsii.tgz`; } else { return `${this.moduleName}-v${this.version}.tgz`; } } get pypiWheelFile() { const [major, minor, patch, pre] = this.pypiVersion.split('.'); return `${this.moduleName.replace(/-/g, '_')}-${major}.${minor}.${patch}${pre !== null && pre !== void 0 ? pre : ''}-py3-none-any.whl`; } get javaJarFile() { return `org/cdk8s/${this.moduleName}/${this.mavenVersion}/${this.moduleName}-${this.mavenVersion}.jar`; } get npmDependency() { return `${this.moduleName}@^${this.npmVersion}`; } get pypiDependency() { return `${this.moduleName}~=${this.pypiVersion}`; } get mavenDependency() { return this.mavenVersion; } resolveVersion(module) { if (module === 'cdk8s-cli') { module = '../../../'; } // eslint-disable-next-line @typescript-eslint/no-require-imports return require(`${module}/package.json`).version; } } module.exports = new Command(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLG9EQUFzQztBQUN0QywrRUFBaUU7QUFDakUsbUNBQWdDO0FBR2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFdkQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUV2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNyRCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEYsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixhQUFRLEdBQUcsNkNBQTZDLENBQUM7UUFDekQsWUFBTyxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSTthQUNqRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7YUFDaEUsY0FBYyxDQUFDLEtBQUssQ0FBQzthQUNyQixPQUFP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SyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjO1FBQ25DLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUMxQixNQUFNLEdBQUcsV0FBVyxDQUFDO1NBQ3RCO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLEdBQUcsTUFBTSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBR0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHBhY21hayBmcm9tICdqc2lpLXBhY21hayc7XG5pbXBvcnQgKiBhcyBwYWNtYWt2IGZyb20gJ2pzaWktcGFjbWFrL2xpYi90YXJnZXRzL3ZlcnNpb24tdXRpbHMnO1xuaW1wb3J0IHsgc3NjYWZmIH0gZnJvbSAnc3NjYWZmJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcblxuY29uc3QgcGtncm9vdCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicpO1xuXG5jb25zdCBwa2cgPSBmcy5yZWFkSnNvblN5bmMocGF0aC5qb2luKHBrZ3Jvb3QsICdwYWNrYWdlLmpzb24nKSk7XG5jb25zdCBjb25zdHJ1Y3RzVmVyc2lvbiA9IHBrZy5kZXBlbmRlbmNpZXMuY29uc3RydWN0cy5yZXBsYWNlKCdeJywgJycpO1xuXG5jb25zdCB0ZW1wbGF0ZXNEaXIgPSBwYXRoLmpvaW4ocGtncm9vdCwgJ3RlbXBsYXRlcycpO1xuY29uc3QgYXZhaWxhYmxlVGVtcGxhdGVzID0gZnMucmVhZGRpclN5bmModGVtcGxhdGVzRGlyKS5maWx0ZXIoeCA9PiAheC5zdGFydHNXaXRoKCcuJykpO1xuXG5jbGFzcyBDb21tYW5kIGltcGxlbWVudHMgeWFyZ3MuQ29tbWFuZE1vZHVsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gJ2luaXQgVFlQRSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdDcmVhdGUgYSBuZXcgY2RrOHMgcHJvamVjdCBmcm9tIGEgdGVtcGxhdGUuJztcbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkZXIgPSAoYXJnczogeWFyZ3MuQXJndikgPT4gYXJnc1xuICAgIC5wb3NpdGlvbmFsKCdUWVBFJywgeyBkZW1hbmRPcHRpb246IHRydWUsIGRlc2M6ICdQcm9qZWN0IHR5cGUnIH0pXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgIC5jaG9pY2VzKCdUWVBFJywgYXZhaWxhYmxlVGVtcGxhdGVzKTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcbiAgICBpZiAoZnMucmVhZGRpclN5bmMoJy4nKS5maWx0ZXIoZiA9PiAhZi5zdGFydHNXaXRoKCcuJykpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBpbml0aWFsaXplIGEgcHJvamVjdCBpbiBhIG5vbi1lbXB0eSBkaXJlY3RvcnknKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGBJbml0aWFsaXppbmcgYSBwcm9qZWN0IGZyb20gdGhlICR7YXJndi50eXBlfSB0ZW1wbGF0ZWApO1xuICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbih0ZW1wbGF0ZXNEaXIsIGFyZ3YudHlwZSk7XG4gICAgY29uc3QgZGVwczogYW55ID0gYXdhaXQgZGV0ZXJtaW5lRGVwcygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNzY2FmZih0ZW1wbGF0ZVBhdGgsICcuJywgZGVwcyk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGNvbnN0IGUgPSBlciBhcyBhbnk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yIGR1cmluZyBwcm9qZWN0IGluaXRpYWxpemF0aW9uOiAke2Uuc3RhY2t9XFxuU1RET1VUOlxcbiR7ZS5zdGRvdXQ/LnRvU3RyaW5nKCl9XFxuU1RERVJSOlxcbiR7ZS5zdGRlcnI/LnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVybWluZURlcHMoKTogUHJvbWlzZTxEZXBzPiB7XG4gIGNvbnN0IGNkazhzID0gbmV3IE1vZHVsZVZlcnNpb24oJ2NkazhzJywgeyBqc2lpOiB0cnVlIH0pO1xuICBjb25zdCBjZGs4c1BsdXMgPSBuZXcgTW9kdWxlVmVyc2lvbignY2RrOHMtcGx1cy0yOCcsIHsganNpaTogdHJ1ZSB9KTtcbiAgY29uc3QgY2RrOHNDbGkgPSBuZXcgTW9kdWxlVmVyc2lvbignY2RrOHMtY2xpJyk7XG4gIGNvbnN0IGpzaWkgPSBuZXcgTW9kdWxlVmVyc2lvbignanNpaS1wYWNtYWsnKTtcblxuICBjb25zdCBjZGs4c1RhcmJhbGwgPSBwcm9jZXNzLmVudi5DREs4U19UQVJCQUxMO1xuICBjb25zdCBjZGs4c1RhcmJhbGxFc2NhcGVkID0gY2RrOHNUYXJiYWxsID8gKGNkazhzVGFyYmFsbC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHB5cGlfY2RrOHM6IGNkazhzLnB5cGlEZXBlbmRlbmN5LFxuICAgIHB5cGlfY2RrOHNfcGx1czogY2RrOHNQbHVzLnB5cGlEZXBlbmRlbmN5LFxuICAgIG12bl9jZGs4czogY2RrOHMubWF2ZW5EZXBlbmRlbmN5LFxuICAgIG12bl9jZGs4c19wbHVzOiBjZGs4c1BsdXMubWF2ZW5EZXBlbmRlbmN5LFxuICAgIGNkazhzX2NvcmVfdmVyc2lvbjogY2RrOHMudmVyc2lvbixcbiAgICBjZGs4c19wbHVzX3ZlcnNpb246IGNkazhzUGx1cy52ZXJzaW9uLFxuICAgIGNvbnN0cnVjdHNfdmVyc2lvbjogY29uc3RydWN0c1ZlcnNpb24sXG4gICAganNpaV92ZXJzaW9uOiBqc2lpLnZlcnNpb24sXG4gICAgY2RrOHNfY2xpX3NwZWM6IGNkazhzVGFyYmFsbEVzY2FwZWQgPz8gYF4ke2NkazhzQ2xpLnZlcnNpb259YCxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIERlcHMge1xuICBjZGs4c19jbGlfc3BlYzogc3RyaW5nO1xuICBweXBpX2NkazhzOiBzdHJpbmc7XG4gIHB5cGlfY2RrOHNfcGx1czogc3RyaW5nO1xuICBtdm5fY2RrOHM6IHN0cmluZztcbiAgbXZuX2NkazhzX3BsdXM6IHN0cmluZztcbiAgY2RrOHNfY29yZV92ZXJzaW9uOiBzdHJpbmc7XG4gIGNkazhzX3BsdXNfdmVyc2lvbjogc3RyaW5nO1xuICBjb25zdHJ1Y3RzX3ZlcnNpb246IHN0cmluZztcbiAganNpaV92ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmNsYXNzIE1vZHVsZVZlcnNpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcHlwaVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5wbVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG1hdmVuVmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkganNpaTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1vZHVsZU5hbWU6IHN0cmluZywgb3B0aW9uczogeyBqc2lpPzogYm9vbGVhbiB9ID0geyB9KSB7XG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5yZXNvbHZlVmVyc2lvbihtb2R1bGVOYW1lKTtcbiAgICB0aGlzLm5wbVZlcnNpb24gPSB0aGlzLnZlcnNpb247XG4gICAgdGhpcy5weXBpVmVyc2lvbiA9IHBhY21ha3YudG9SZWxlYXNlVmVyc2lvbih0aGlzLnZlcnNpb24sIHBhY21hay5UYXJnZXROYW1lLlBZVEhPTik7XG4gICAgdGhpcy5tYXZlblZlcnNpb24gPSBwYWNtYWt2LnRvUmVsZWFzZVZlcnNpb24odGhpcy52ZXJzaW9uLCBwYWNtYWsuVGFyZ2V0TmFtZS5KQVZBKTtcbiAgICB0aGlzLmpzaWkgPSBvcHRpb25zLmpzaWkgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5wbVRhcmJhbGxGaWxlKCkge1xuICAgIGlmICh0aGlzLmpzaWkpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9QCR7dGhpcy52ZXJzaW9ufS5qc2lpLnRnemA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9LXYke3RoaXMudmVyc2lvbn0udGd6YDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB5cGlXaGVlbEZpbGUoKSB7XG4gICAgY29uc3QgW21ham9yLCBtaW5vciwgcGF0Y2gsIHByZV0gPSB0aGlzLnB5cGlWZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kdWxlTmFtZS5yZXBsYWNlKC8tL2csICdfJyl9LSR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9JHtwcmUgPz8gJyd9LXB5My1ub25lLWFueS53aGxgO1xuICB9XG5cbiAgcHVibGljIGdldCBqYXZhSmFyRmlsZSgpIHtcbiAgICByZXR1cm4gYG9yZy9jZGs4cy8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLm1hdmVuVmVyc2lvbn0vJHt0aGlzLm1vZHVsZU5hbWV9LSR7dGhpcy5tYXZlblZlcnNpb259LmphcmA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5wbURlcGVuZGVuY3koKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kdWxlTmFtZX1AXiR7dGhpcy5ucG1WZXJzaW9ufWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB5cGlEZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9fj0ke3RoaXMucHlwaVZlcnNpb259YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF2ZW5EZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiB0aGlzLm1hdmVuVmVyc2lvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVZlcnNpb24obW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtb2R1bGUgPT09ICdjZGs4cy1jbGknKSB7XG4gICAgICBtb2R1bGUgPSAnLi4vLi4vLi4vJztcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgIHJldHVybiByZXF1aXJlKGAke21vZHVsZX0vcGFja2FnZS5qc29uYCkudmVyc2lvbjtcbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTtcbiJdfQ==