cli.ts 1008 B

1234567891011121314151617181920212223242526272829
  1. import { writeFileSync } from '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. // eslint-disable-next-line no-console
  17. const jsonStrings = await generateOperationIds(inputFile, { overwriteExisting }).catch(console.error);
  18. if (jsonStrings != null) {
  19. writeFileSync(outputFile ?? inputFile, jsonStrings);
  20. }
  21. };
  22. if (import.meta.url === `file://${process.argv[1]}`) {
  23. main();
  24. }