UNPKG

@pgsql/cli

Version:

Unified CLI for PostgreSQL AST parsing, deparsing, and code generation

60 lines (59 loc) 2.68 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.protoGenCommand = protoGenCommand; const pg_proto_parser_1 = require("pg-proto-parser"); const nested_obj_1 = __importDefault(require("nested-obj")); const chalk_1 = __importDefault(require("chalk")); const help_1 = require("../utils/help"); async function protoGenCommand(argv) { if (argv.help) { (0, help_1.showHelp)('proto-gen'); process.exit(0); } if (!argv.inFile || !argv.outDir) { console.error(chalk_1.default.red('Error: --inFile and --outDir are required')); (0, help_1.showHelp)('proto-gen'); process.exit(1); } try { const options = (0, pg_proto_parser_1.getOptionsWithDefaults)({ outDir: argv.outDir }); // Set options based on flags if (argv.enums) nested_obj_1.default.set(options, 'enums.enabled', true); if (argv['enums-json']) nested_obj_1.default.set(options, 'enums.json.enabled', true); if (argv.types) nested_obj_1.default.set(options, 'types.enabled', true); if (argv.utils) nested_obj_1.default.set(options, 'utils.enums.enabled', true); if (argv['ast-helpers']) nested_obj_1.default.set(options, 'utils.astHelpers.enabled', true); if (argv['wrapped-helpers']) nested_obj_1.default.set(options, 'utils.wrappedAstHelpers.enabled', true); if (argv.optional) nested_obj_1.default.set(options, 'types.optionalFields', true); if (argv['keep-case']) nested_obj_1.default.set(options, 'parser.keepCase', true); if (argv['remove-undefined']) nested_obj_1.default.set(options, 'enums.removeUndefinedAt0', true); // Additional options that might be useful if (argv['type-union']) nested_obj_1.default.set(options, 'enums.enumsAsTypeUnion', true); if (argv.header) nested_obj_1.default.set(options, 'includeHeader', true); console.log(chalk_1.default.blue('Parsing protobuf file...')); const parser = new pg_proto_parser_1.PgProtoParser(argv.inFile, options); console.log(chalk_1.default.blue('Generating TypeScript files...')); await parser.write(); console.log(chalk_1.default.green(`✓ Files generated in ${argv.outDir}`)); } catch (error) { console.error(chalk_1.default.red('Proto generation error:'), error.message || error); process.exit(1); } }