UNPKG

csa-cli-plugin

Version:

### In Beta

78 lines (70 loc) 2.45 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _cliEngineHeroku = require('cli-engine-heroku'); function capitalize(str) { return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); } class HpmGenerator extends _cliEngineHeroku.Command { async run() { let name = this.argv[0] || this.flags.app; let app = { addons: await this.heroku.get(`/apps/${name}/addons`), dynos: await this.heroku.get(`/apps/${name}/dynos`), info: await this.heroku.get(`/apps/${name}`), buildpacks: await this.heroku.get(`/apps/${name}/buildpack-installations`) }; try { let webDynos = []; let workerDynos = []; if (app.dynos.length > 0) { webDynos = app.dynos.filter(function (dyno) { return dyno.type.indexOf('web') !== -1; }); workerDynos = app.dynos.filter(function (dyno) { return dyno.type.indexOf('web') === -1; }); } let runtime = ` - Runtime: ${capitalize(app.info.stack.name)}\n`; let addons = app.addons.map(a => a.plan.name).sort(); let buildpack = ``; let addonList = ``; let web = ``; let worker = ``; if (webDynos.length === 0) { web = `No Web Dynos\n`; } else { web = `- ${webDynos.length} ${webDynos[0].size} Web Dynos\n`; } if (workerDynos.length === 0) { worker = `No Worker Dynos\n`; } else { worker = `- ${workerDynos.length} ${workerDynos[0].size} Worker Dynos\n`; } for (let i in app.buildpacks) { let obj = app.buildpacks[i]; buildpack += ' - Buildpack: ' + capitalize(obj.buildpack.name) + '\n'; } for (let i in addons) { let str = addons[i].replace(/-/g, ' ').replace(/:/g, ' '); str = capitalize(str); addonList += '- ' + str + '\n'; } let output = `CONFIGURATION\n${web}${runtime}${buildpack}${worker}${addonList}`; this.out.log(output); } catch (err) { this.out.log(err, 'error obtaining app configuration'); } } } exports.default = HpmGenerator; HpmGenerator.topic = 'hpm'; HpmGenerator.command = 'assessment'; HpmGenerator.description = 'generates resources for app assessment'; HpmGenerator.args = [{ name: 'app', optional: true }]; HpmGenerator.flags = { app: _cliEngineHeroku.flags.app({ required: false }) };