2 var path = require('path');
3 var dargs = require('dargs');
4 var async = require('async');
5 var chalk = require('chalk');
6 var spawn = require('cross-spawn');
7 var grunt = require('grunt');
9 module.exports = function (files, options, cb) {
12 var filesToCheck = files.filter(function (src) {
13 return path.basename(src)[0] !== '_' && grunt.file.exists(src);
16 async.eachLimit(filesToCheck, options.concurrencyCount, function (src, next) {
20 var passedArgs = dargs(options, {
21 includes: ['loadPath'],
25 if (options.bundleExec) {
27 args = ['exec', 'sass', '--check', src];
30 args = ['--check', src];
33 args = args.concat(passedArgs);
35 grunt.verbose.writeln('Command: ' + bin + ' ' + args.join(' '));
37 grunt.verbose.writeln('Checking file ' + chalk.cyan(src) + ' syntax.');
38 spawn(bin, args, {stdio: 'inherit'})
39 .on('error', grunt.warn)
40 .on('close', function (code) {
43 grunt.log.error('Checking file ' + chalk.cyan(src) + ' - ' + chalk.red('failed') + '.');
45 grunt.verbose.ok('Checking file ' + chalk.cyan(src) + ' - ' + chalk.green('passed') + '.');
52 grunt.warn('Sass check failed for ' + failCount + ' files.');
54 grunt.log.ok('All ' + chalk.cyan(filesToCheck.length) + ' files passed.');