UNPKG

kubricate

Version:

A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.

62 lines • 2.2 kB
import c from 'ansis'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; import { MARK_INFO } from '../internal/constant.js'; import { ConsoleLogger } from '../internal/logger.js'; import { generateCommand } from './generate.js'; import { secretCommand } from './secret/index.js'; const errorHelper = (msg, yargs) => { if (msg?.includes('Unknown argument')) { const unknownArg = msg.match(/Unknown argument: (.+)/)?.[1]; console.error(c.red(`\nāœ– Error: Unknown option "${unknownArg}".\n`)); console.info(c.cyan(`${MARK_INFO} Check the help for a list of available options.\n`)); yargs.showHelp(); console.log('\n'); return `Unknown option "${unknownArg}"`; } // Fallback to default error handling if (msg) { console.error(msg); } else { console.error('Unknown error occurred'); } console.log('\n'); }; export function cliEntryPoint(argv, options) { return new Promise((resolve, reject) => { yargs(hideBin(argv)).scriptName(options.scriptName).usage('$0 <command>').version(options.version).option('root', { type: 'string', describe: 'Root directory' }).option('config', { type: 'string', describe: 'Config file path' }).option('verbose', { type: 'boolean', describe: 'Enable verbose output' }).option('silent', { type: 'boolean', describe: 'Suppress all output' }).option('dry-run', { type: 'boolean', describe: 'Dry run mode (Not Stable Yet)' }).middleware(argv => { let level = 'info'; if (argv.silent) level = 'silent';else if (argv.verbose) level = 'debug'; argv.logger = new ConsoleLogger(level); argv.version = options.version; }).command(generateCommand).command(secretCommand).help().alias('h', 'help').alias('v', 'version').demandCommand(1, '').fail((msg, err, yargs) => { if (!msg && !err) { errorHelper(msg, yargs); return resolve(); } if (msg) { return reject(new Error(errorHelper(msg, yargs))); } if (err) { errorHelper(msg, yargs); return reject(err); } }).strict().parse(); }); } //# sourceMappingURL=entrypoint.js.map