flagExt.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var fs = require('fs');
  2. var conf = require('../../../constants.js');
  3. function find_extensions(folder, ext, ret)
  4. {
  5. try {
  6. fs.accessSync(folder, fs.constants.R_OK);
  7. } catch (err) {
  8. return;
  9. }
  10. if(fs.statSync(folder).isDirectory() && folder.indexOf('node_modules') == -1 && (fs.statSync(folder)["mode"] & 4))
  11. {
  12. fs.readdirSync(folder).forEach(file => {
  13. var tmp;
  14. if(Number.parseInt(folder.lastIndexOf('/') + 1) === folder.length)
  15. tmp = folder + file;
  16. else
  17. tmp = folder + '/' + file;
  18. if(fs.statSync(tmp).isDirectory())
  19. find_extensions(tmp, ext, ret);
  20. else
  21. {
  22. var p = true;
  23. for(var i = 0; i < ext.length;i++)
  24. if(ext[i].test(file))
  25. p = false;
  26. if(p)
  27. ret.push(folder + '/' + file);
  28. }
  29. });
  30. }
  31. }
  32. module.exports.make_available_extension = function make_available_extension(opts, ret)
  33. {
  34. if(typeof opts == 'object' && typeof ret == 'object')
  35. {
  36. var mas = opts.ext.split(',');
  37. for(var i = 0;i < mas.length;i++)
  38. mas[i] = '.' + mas[i];
  39. var res = [];
  40. for(var i = 0;i < mas.length;i++)
  41. res[i] = new RegExp(mas[i] + '$');
  42. find_extensions(process.cwd(), res, ret);
  43. }
  44. }