1. #!/usr/bin/env node
  2. const { program } = require('commander');
  3. const timeout = require('timeout');
  4. program
  5. .option('-t, --timeout <ms>', 'Timeout in milliseconds', parseInt)
  6. .option('-o, --output <file>', 'Output file', String)
  7. .option('-d, --data <json>', 'Data to mirror (JSON)', String);
  8. program.parse(process.argv);
  9. const options = program.opts();
  10. async function mirrorData(data, outputFile) {
  11. // Simulate data processing with a timeout
  12. await new Promise((resolve, reject) => {
  13. const timeoutHandle = timeout(5000, () => {
  14. reject(new Error('Data processing timed out'));
  15. });
  16. // Simulate some work
  17. setTimeout(() => {
  18. console.log('Mirroring data...');
  19. resolve(data);
  20. timeoutHandle.close();
  21. }, 3000);
  22. });
  23. if (outputFile) {
  24. console.log(`Data written to ${outputFile}`);
  25. //Write the data to the file
  26. //fs.writeFileSync(outputFile, JSON.stringify(data, null, 2)); //requires fs module
  27. }
  28. }
  29. if (options.data) {
  30. try {
  31. const data = JSON.parse(options.data);
  32. await mirrorData(data, options.output);
  33. } catch (error) {
  34. console.error(`Error: ${error.message}`);
  35. }
  36. } else {
  37. console.log('No data provided. Use -d or --data to specify.');
  38. }

Add your comment