cli.js 953 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. var fs = require('fs');
  3. var RuleCompiler = require('./rule-compiler.js');
  4. if (process.argv.length < 3) {
  5. console.log('Usage: node cli.js <rules script>');
  6. process.exit(1);
  7. }
  8. var rules = [];
  9. var caps = {};
  10. var tags = {};
  11. var err = RuleCompiler.compile(fs.readFileSync(process.argv[2]).toString(),rules,caps,tags);
  12. if (err) {
  13. console.error('ERROR parsing '+process.argv[2]+' line '+err[0]+' column '+err[1]+': '+err[2]);
  14. process.exit(1);
  15. } else {
  16. let capsArray = [];
  17. let capabilitiesByName = {};
  18. for(let n in caps) {
  19. capsArray.push(caps[n]);
  20. capabilitiesByName[n] = caps[n].id;
  21. }
  22. let tagsArray = [];
  23. for(let n in tags) {
  24. let t = tags[n];
  25. tagsArray.push({
  26. 'id': t.id,
  27. 'default': t['default']||null
  28. });
  29. }
  30. console.log(JSON.stringify({
  31. config: {
  32. rules: rules,
  33. capabilities: capsArray,
  34. tags: tagsArray
  35. },
  36. capabilitiesByName: capabilitiesByName,
  37. tagsByName: tags
  38. },null,1));
  39. process.exit(0);
  40. }