cli.js 996 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. let dfl = t['default'];
  26. tagsArray.push({
  27. 'id': t.id,
  28. 'default': (((dfl)||(dfl === 0)) ? dfl : null)
  29. });
  30. }
  31. console.log(JSON.stringify({
  32. config: {
  33. rules: rules,
  34. capabilities: capsArray,
  35. tags: tagsArray
  36. },
  37. capabilitiesByName: capabilitiesByName,
  38. tagsByName: tags
  39. },null,1));
  40. process.exit(0);
  41. }