@pgsql/cli
Version:
Unified CLI for PostgreSQL AST parsing, deparsing, and code generation
43 lines (42 loc) • 1.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.protoFetchCommand = protoFetchCommand;
const chalk_1 = __importDefault(require("chalk"));
const help_1 = require("../utils/help");
const helpers_1 = require("./proto-fetch/helpers");
async function protoFetchCommand(argv) {
if (argv.help) {
(0, help_1.showHelp)('proto-fetch');
process.exit(0);
}
const url = argv.url;
const inFile = argv.inFile;
const outFile = argv.outFile;
const replacePkg = argv['replace-pkg'] || 'protobufjs/minimal';
const withPkg = argv['with-pkg'] || '@launchql/protobufjs/minimal';
if (!inFile || !outFile) {
console.error(chalk_1.default.red('Error: --inFile and --outFile are required'));
(0, help_1.showHelp)('proto-fetch');
process.exit(1);
}
try {
if (url) {
console.log(chalk_1.default.blue(`Downloading proto file from ${url}...`));
await (0, helpers_1.downloadProtoFile)(url, inFile);
console.log(chalk_1.default.green(`✓ Proto file saved to ${inFile}`));
}
console.log(chalk_1.default.blue('Generating JavaScript from proto file...'));
await (0, helpers_1.generateProtoJS)(inFile, outFile);
console.log(chalk_1.default.blue(`Replacing package references...`));
await (0, helpers_1.replaceTextInProtoJS)(outFile, replacePkg, withPkg);
console.log(chalk_1.default.green(`✓ All operations completed successfully`));
console.log(chalk_1.default.green(`✓ Generated file: ${outFile}`));
}
catch (error) {
console.error(chalk_1.default.red('Proto fetch error:'), error.message || error);
process.exit(1);
}
}