cli.js 955 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env node
  2. // CLI for querying safe-regex for safety analysis
  3. // Input: JSON-formatted file with an object with key 'pattern'
  4. // Output: STDOUT: JSON-formatted object with new key 'isSafe' and value 0 or 1
  5. // STDERR: Progress updates
  6. var safe = require('../'),
  7. fs = require('fs');
  8. if (process.argv.length != 3) {
  9. console.error(`Usage: ${process.argv[1]} pattern.json`);
  10. process.exit(1);
  11. }
  12. const file = process.argv[2];
  13. // Get pattern
  14. const cont = fs.readFileSync(file, 'utf-8');
  15. let pattern = JSON.parse(cont);
  16. // Can analyze? Is safe?
  17. let canAnalyze = 0;
  18. let isSafe = 0;
  19. try {
  20. isSafe = safe(pattern.pattern) ? 1 : 0;
  21. canAnalyze = 1;
  22. } catch (e) {
  23. canAnalyze = 0;
  24. isSafe = 'unknown';
  25. }
  26. pattern.canAnalyze = canAnalyze;
  27. pattern.isSafe = isSafe;
  28. // Emit.
  29. console.error(`Pattern /${pattern.pattern}/: canAnalyze ${pattern.canAnalyze} isSafe ${pattern.isSafe}`);
  30. console.log(JSON.stringify(pattern));
  31. process.exit(0);