cli.ts 1.0 KB

123456789101112131415161718192021222324252627282930
  1. import { writeFileSync } from 'node:fs';
  2. import { Command } from 'commander';
  3. import { generateOperationIds } from './generate-operation-ids';
  4. export const main = async (): Promise<void> => {
  5. // parse command line arguments
  6. const program = new Command();
  7. program
  8. .name('generate-operation-ids')
  9. .description('Generate operationId for OpenAPI specification')
  10. .argument('<input-file>', 'OpenAPI specification file')
  11. .option('-o, --out <output-file>', 'Output file (defaults to input file)')
  12. .option('--overwrite-existing', 'Overwrite existing operationId values')
  13. .parse();
  14. const { out: outputFile, overwriteExisting } = program.opts();
  15. const [inputFile] = program.args;
  16. const jsonStrings = await generateOperationIds(inputFile, {
  17. overwriteExisting,
  18. // biome-ignore lint/suspicious/noConsole: Allow to dump errors
  19. }).catch(console.error);
  20. if (jsonStrings != null) {
  21. writeFileSync(outputFile ?? inputFile, jsonStrings);
  22. }
  23. };
  24. if (import.meta.url === `file://${process.argv[1]}`) {
  25. main();
  26. }