Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. #!/usr/bin/env node
  2.  
  3. var fs = require('fs');
  4. var path = require('path');
  5. var jshint = require('jshint').JSHINT;
  6. var async = require('async');
  7.  
  8. var recursiveFolderSearch = true;
  9. var foldersToProcess = [
  10. 'js'
  11. ];
  12.  
  13. foldersToProcess.forEach(function (folder) {
  14. processFiles("www/" + folder);
  15. });
  16.  
  17. function processFiles(dir, callback) {
  18. var errorCount = 0;
  19. fs.readdir(dir, function (err, list) {
  20. if (err) {
  21. console.error('Directory Error: ' + err);
  22. return;
  23. }
  24. async.eachSeries(list, function (file, innercallback) {
  25. file = dir + '/' + file;
  26. fs.stat(file, function (err, stat) {
  27. if (!stat.isDirectory()) {
  28. if (path.extname(file) === ".js") {
  29. lintFile(file, function (hasError) {
  30. if (hasError) {
  31. errorCount++;
  32. }
  33. innercallback();
  34. });
  35. } else {
  36. innercallback();
  37. }
  38. } else {
  39. if (stat.isDirectory() && recursiveFolderSearch) {
  40. processFiles(file, callback);
  41. } else {
  42. innercallback();
  43. }
  44. innercallback();
  45. }
  46. });
  47. }, function (error) {
  48. if (errorCount > 0) {
  49. console.error('Get ' + errorCount + ' error(s) by JSHint.');
  50. process.exit(1);
  51. }
  52. });
  53. });
  54. }
  55.  
  56. function lintFile(file, callback) {
  57. console.log("Linting " + file);
  58. fs.readFile(file, function (err, data) {
  59. if (err) {
  60. console.log('Error: ' + err);
  61. return;
  62. }
  63. if (jshint(data.toString())) {
  64. //console.log('File ' + file + ' has no errors.');
  65. //console.log('-----------------------------------------');
  66. callback(false);
  67. } else {
  68. console.log('Errors in file ' + file);
  69. var out = jshint.data(),
  70. errors = out.errors;
  71. for (var j = 0; j < errors.length; j++) {
  72. console.log(errors[j].line + ':' + errors[j].character + ' -> ' + errors[j].reason + ' -> ' +
  73. errors[j].evidence);
  74. }
  75. console.log('-----------------------------------------');
  76. callback(true);
  77. }
  78. });
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement