@pgsql/cli
Version:
Unified CLI for PostgreSQL AST parsing, deparsing, and code generation
60 lines (59 loc) • 2.68 kB
JavaScript
;
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);
}
}