Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- var fs = require('fs');
- var path = require('path');
- var jshint = require('jshint').JSHINT;
- var async = require('async');
- var recursiveFolderSearch = true;
- var foldersToProcess = [
- 'js'
- ];
- foldersToProcess.forEach(function (folder) {
- processFiles("www/" + folder);
- });
- function processFiles(dir, callback) {
- var errorCount = 0;
- fs.readdir(dir, function (err, list) {
- if (err) {
- console.error('Directory Error: ' + err);
- return;
- }
- async.eachSeries(list, function (file, innercallback) {
- file = dir + '/' + file;
- fs.stat(file, function (err, stat) {
- if (!stat.isDirectory()) {
- if (path.extname(file) === ".js") {
- lintFile(file, function (hasError) {
- if (hasError) {
- errorCount++;
- }
- innercallback();
- });
- } else {
- innercallback();
- }
- } else {
- if (stat.isDirectory() && recursiveFolderSearch) {
- processFiles(file, callback);
- } else {
- innercallback();
- }
- innercallback();
- }
- });
- }, function (error) {
- if (errorCount > 0) {
- console.error('Get ' + errorCount + ' error(s) by JSHint.');
- process.exit(1);
- }
- });
- });
- }
- function lintFile(file, callback) {
- console.log("Linting " + file);
- fs.readFile(file, function (err, data) {
- if (err) {
- console.log('Error: ' + err);
- return;
- }
- if (jshint(data.toString())) {
- //console.log('File ' + file + ' has no errors.');
- //console.log('-----------------------------------------');
- callback(false);
- } else {
- console.log('Errors in file ' + file);
- var out = jshint.data(),
- errors = out.errors;
- for (var j = 0; j < errors.length; j++) {
- console.log(errors[j].line + ':' + errors[j].character + ' -> ' + errors[j].reason + ' -> ' +
- errors[j].evidence);
- }
- console.log('-----------------------------------------');
- callback(true);
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement