UNPKG

@controlplane/cli

Version:

Control Plane Corporation CLI

214 lines 8.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cli = void 0; const yargs = require("yargs/yargs"); const generic_1 = require("../commands/generic"); const command_1 = require("./command"); const profile_1 = require("../commands/profile"); const format_1 = require("../format/format"); const version_1 = require("../util/version"); const agent_1 = require("../commands/agent"); const auditctx_1 = require("../commands/auditctx"); const cloudaccount_1 = require("../commands/cloudaccount"); const complete_1 = require("./complete"); const convert_1 = require("../commands/convert"); const domain_1 = require("../commands/domain"); const group_1 = require("../commands/group"); const gvc_1 = require("../commands/gvc"); const identity_1 = require("../commands/identity"); const image_1 = require("../commands/image"); const location_1 = require("../commands/location"); const logs_1 = require("../commands/logs"); const memcachecluster_1 = require("../commands/memcachecluster"); const misc_1 = require("./misc"); const mk8s_1 = require("../commands/mk8s"); const org_1 = require("../commands/org"); const policy_1 = require("../commands/policy"); const quota_1 = require("../commands/quota"); const rest_1 = require("../commands/rest"); const secret_1 = require("../commands/secret"); const serviceaccount_1 = require("../commands/serviceaccount"); const spicedbcluster_1 = require("../commands/spicedbcluster"); const task_1 = require("../commands/task"); const user_1 = require("../commands/user"); const volumeset_1 = require("../commands/volumeset"); const workload_1 = require("../commands/workload"); const logger_1 = require("../util/logger"); const client_1 = require("../session/client"); const account_1 = require("../commands/account"); const io_1 = require("../util/io"); const stack_1 = require("../commands/stack"); const helm_1 = require("../commands/helm"); const cp_1 = require("../commands/cp"); const ipset_1 = require("../commands/ipset"); const portforward_1 = require("../commands/portforward"); const operator_1 = require("../commands/operator"); class Cli { constructor(env) { this.env = env; this.env = env; } makeParser(spying, onFinish, afterHelpText, version) { const parser = yargs() .epilog(`© ${new Date().getFullYear()} Control Plane Corporation${afterHelpText ? `\n\n${afterHelpText}` : ''}`) .help() .strict() .version(version) .detectLocale(false) .wrap(require('yargs').terminalWidth()) .parserConfiguration({ 'sort-commands': true, 'strip-aliased': true, 'parse-numbers': false, 'populate--': true, }) .recommendCommands() .demandCommand() .scriptName('cpln') .onFinishCommand(onFinish); let spy; if (spying) { const root = { name: 'cpln', commands: [ { name: 'help', description: 'Show help', }, ], description: '', positional: [], options: [ { name: 'help', alias: ['h'], description: 'Show help', }, ], }; // install our model spy here parser['_command_stack'] = [root]; spy = new command_1.Spy(parser, root); spy.start(); } this.configure(parser); if (spy) { spy.restore(); } return parser; } configure(parser) { // add root commands here parser // generic .command(new profile_1.ProfileCmd().toYargs()) .command(new complete_1.CompletionCommand().toYargs()) .command(new misc_1.MiscCommand().toYargs()) .command(new rest_1.RestCmd().toYargs()) // cpln specific .command(new profile_1.Login().toYargs()) .command(new account_1.AccountCmd().toYargs()) .command(new org_1.OrgCmd().toYargs()) .command(new user_1.UserCmd().toYargs()) .command(new group_1.GroupCmd().toYargs()) .command(new stack_1.StackCmd().toYargs()) .command(new serviceaccount_1.ServiceaccountCmd().toYargs()) .command(new secret_1.SecretCmd().toYargs()) .command(new generic_1.Apply().toYargs()) .command(new convert_1.Convert().toYargs()) .command(new generic_1.DeleteFromFiles().toYargs()) .command(new quota_1.QuotaCmd().toYargs()) .command(new policy_1.PolicyCmd().toYargs()) .command(new cloudaccount_1.CloudaccountCmd().toYargs()) .command(new gvc_1.GvcCmd().toYargs()) .command(new workload_1.WorkloadCmd().toYargs()) .command(new identity_1.IdentityCmd().toYargs()) .command(new task_1.TaskCmd().toYargs()) .command(new domain_1.DomainCmd().toYargs()) .command(new agent_1.AgentCmd().toYargs()) .command(new image_1.ImageCmd().toYargs()) .command(new auditctx_1.AuditContext().toYargs()) .command(new logs_1.Logs().toYargs()) .command(new volumeset_1.VolumeSetCmd().toYargs()) .command(new location_1.LocationCmd().toYargs()) .command(new mk8s_1.Mk8sCmd().toYargs()) .command(new helm_1.HelmCmd().toYargs()) .command(new cp_1.CpCmd().toYargs()) .command(new ipset_1.IpSetCmd().toYargs()) .command(new portforward_1.PortForwardCmd().toYargs()) .command(new operator_1.OperatorCmd().toYargs()); if (process.env.CPLN_BETA) { parser // .command(new spicedbcluster_1.SpicedbClusterCmd().toYargs()) .command(new memcachecluster_1.MemcacheClusterCmd().toYargs()); } } async run(args) { const rootDir = (0, io_1.getRootDir)(); // Check for new version const newVersionMessage = await (0, version_1.checkForNewVersion)(rootDir); // Prepare parser parameters let onFinish = () => { }; let about = version_1.About; if (newVersionMessage) { onFinish = () => (0, format_1.write)(this.env.err, newVersionMessage); about = { ...about, message: newVersionMessage }; } // Stringify about to represent cpln version let version = JSON.stringify(about, null, 2); // Call parser const parser = this.makeParser(false, onFinish, newVersionMessage, JSON.stringify(about, null, 2)); // properties will be put in the args object const ctx = { _env: this.env, // pass down a parser factory for use by the completer _parser: () => this.makeParser(true, onFinish, newVersionMessage, version), }; let output; // try to set the verbose flag early parser.middleware((args) => { if (args.verbose || process.env.CPLN_DEBUG) { // bump the console level logger_1.logger.transports[0].level = 'debug'; } if (args.debug) { // bump the wire level client_1.wire.transports[0].level = 'debug'; } output = args.output || 'json'; }, true); parser.showHelpOnFail(false); const handler = (msg, error, yargs) => { if (error) { logger_1.logger.debug('Abnormal exit ', { error: error }); // Keep this block in sync with session.abort (0, format_1.write)(this.env.err, (0, format_1.format)(error, { output, _hints: { kind: 'error' } }) + '\n'); process.exit(1); } // bad command if (msg) { console.error(msg + '\n'); } if (yargs) { console.error(yargs.help()); } else { (0, format_1.write)(this.env.err, 'Unknown error\n'); } process.exit(127); }; parser.fail(handler); process.on('unhandledRejection', (reason) => { //logger.info('Unhandled rejection' + reason + reason.stack); handler('', reason); }); try { parser.parse(args, ctx); } catch (e) { handler('', e, undefined); } } } exports.Cli = Cli; //# sourceMappingURL=cli.js.map