'use strict';

var gulp   = require('gulp');
var jshint = require('gulp-jshint');<% if (jscsModule) { %>
var jscs = require('gulp-jscs');<% } %><% if (istanbulModule) { %>
var istanbul = require('gulp-istanbul');<% } %>
var mocha  = require('gulp-mocha');
<% if (releaseModule) { %>var bump   = require('gulp-bump');<% } %>

var paths = {
  lint: ['./gulpfile.js', './lib/**/*.js'],
  tests: ['./test/**/*.js', '!test/{temp,temp/**}']<% if (istanbulModule) { %>,
  source: ['./lib/*.js']<% } %>
};

gulp.task('lint', function () {
  return gulp.src(paths.lint)
    .pipe(jshint('.jshintrc'))<% if (jscsModule) { %>
    .pipe(jscs())<% } %>
    .pipe(jshint.reporter('jshint-stylish'));
});<% if (istanbulModule) { %>

gulp.task('istanbul', function (cb) {
  gulp.src(paths.source)
    .pipe(istanbul()) // Covering files
    .on('end', function () {
      gulp.src(paths.tests)
        .pipe(mocha())
        .pipe(istanbul.writeReports()) // Creating the reports after tests runned
        .on('end', cb);
    });
});<% } else { %>

gulp.task('mocha', function () {
  gulp.src(paths.tests)
    .pipe(mocha({ reporter: 'list' }));
});<% } %><% if (releaseModule) { %>

gulp.task('bump', ['test'], function () {
  var bumpType = process.env.BUMP || 'patch'; // major.minor.patch

  return gulp.src(['./package.json'])
    .pipe(bump({ type: bumpType }))
    .pipe(gulp.dest('./'));
});<% } %>

gulp.task('test', ['lint', <% if (istanbulModule) { %>'istanbul'<% } else { %>'mocha'<% } %>]);
<% if (releaseModule) { %>gulp.task('release', ['bump']);<% } %>

@@ -376,16 +376,98 @@
 *.js'%5D,%0A
+  watch: %5B'./gulpfile.js', './lib/**', './test/**/*.js', '!test/%7Btemp,temp/**%7D'%5D,%0A
   tests:
@@ -1464,24 +1464,119 @@
 %7D);%3C%25 %7D %25%3E%0A%0A
+gulp.task('watch', function () %7B%0A  gulp.run('test');%0A  gulp.watch(paths.watch, %5B'test'%5D);%0A%7D);%0A%0A
 gulp.task('t

add generated watch task