diff --git a/src/gulpfile.js b/src/gulpfile.js index 1773c906..be718a27 100644 --- a/src/gulpfile.js +++ b/src/gulpfile.js @@ -186,47 +186,89 @@ gulp.task('chat-styles', ['chat-styles-handlebars', 'chat-styles-js'], function( // Compile and concatenate handlebars files for all chat styles. gulp.task('chat-styles-handlebars', function() { - // TODO: Process all available styles, not only the default one. - var stylePath = config.chatStylesPath + '/default'; - - return gulp.src(stylePath + '/templates_src/client_side/**/*.handlebars') - .pipe(handlebars({ - // Use specific version of Handlebars.js - handlebars: handlebarsEngine - })) - .pipe(wrapHandlebarsTemplate()) - .pipe(concat('templates.js')) - .pipe(uglify({preserveComments: 'some'})) - .pipe(header(config.compiledTemplatesHeader)) - .pipe(gulp.dest(stylePath + '/templates_compiled/client_side')); + var promises = []; + fs.readdir(config.chatStylesPath, function(err, list){ + if(err) return done(err); + list.filter(function(path){ + return fs.lstatSync(config.chatStylesPath + "/" + path).isDirectory(); + }).map(function(dir){ + var defer = Q.defer(); + var pipeline = gulp.src(config.chatStylesPath + '/' + dir + '/templates_src/client_side/**/*.handlebars') + .pipe(handlebars({ + // Use specific version of Handlebars.js + handlebars: handlebarsEngine + })) + .pipe(wrapHandlebarsTemplate()) + .pipe(concat('templates.js')) + .pipe(uglify({preserveComments: 'some'})) + .pipe(header(config.compiledTemplatesHeader)) + .pipe(gulp.dest(config.chatStylesPath + '/' + dir + '/templates_compiled/client_side')); + pipeline.on('end',function(){ + defer.resolve(); + }); + promises.push(defer.promise); + }); + }); + return Q.all(promises); }); // Compile and concatenate js files for all chat styles. gulp.task('chat-styles-js', function() { - // TODO: Process all available styles, not only the default one. - var stylePath = config.chatStylesPath + '/default'; + var promises = []; + fs.readdir(config.chatStylesPath, function(err, list){ + if(err) return done(err); + list.filter(function(path){ + return fs.lstatSync(config.chatStylesPath + "/" + path).isDirectory(); + }).map(function(dir){ + var defer = Q.defer(); + var pipeline = gulp.src(config.chatStylesPath + '/' + dir + '/js/source/**/*.js') + .pipe(concat('scripts.js')) + .pipe(uglify({preserveComments: 'some'})) + .pipe(gulp.dest(config.chatStylesPath + '/' + dir + '/js/compiled')); + pipeline.on('end', function(){ + defer.resolve(); + }); + promises.push(defer.promise); + }); + }); - return gulp.src(stylePath + '/js/source/**/*.js') - .pipe(concat('scripts.js')) - .pipe(uglify({preserveComments: 'some'})) - .pipe(gulp.dest(stylePath + '/js/compiled')); + return Q.all(promises); }); // Performs all job related with pages styles. gulp.task('page-styles', function() { - // TODO: Process all available styles, not only the default one. - var stylePath = config.pageStylesPath + '/default'; + var promises = []; + fs.readdir(config.pageStylesPath, function(err, list){ + if(err) return done(err); + list.filter(function(path){ + return fs.lstatSync(config.pageStylesPath + "/" + path).isDirectory(); + }).map(function(dir){ + var defer = Q.defer(); + var pipeline = gulp.src(config.pageStylesPath + '/' + dir + '/templates_src/client_side/**/*.handlebars') + .pipe(handlebars({ + // Use specific version of Handlebars.js + handlebars: handlebarsEngine + })) + .pipe(wrapHandlebarsTemplate()) + .pipe(concat('templates.js')) + .pipe(uglify({preserveComments: 'some'})) + .pipe(header(config.compiledTemplatesHeader)) + .pipe(gulp.dest(config.pageStylesPath + '/' + dir + '/templates_compiled/client_side')); + pipeline.on('end', function(){ + defer.resolve(); + }); + promises.push(defer.promise); + }); + }); - return gulp.src(stylePath + '/templates_src/client_side/**/*.handlebars') - .pipe(handlebars({ - // Use specific version of Handlebars.js - handlebars: handlebarsEngine - })) - .pipe(wrapHandlebarsTemplate()) - .pipe(concat('templates.js')) - .pipe(uglify({preserveComments: 'some'})) - .pipe(header(config.compiledTemplatesHeader)) - .pipe(gulp.dest(stylePath + '/templates_compiled/client_side')); + return Q.all(promises); +}); + +// Watch styles +gulp.task('watch', [], function(){ + gulp.watch(config.pageStylesPath + '/**/*.handlebars', ['page-styles']); + gulp.watch(config.chatStylesPath + '/**/js/source/**/*.js', ['chat-styles-js']); + gulp.watch(config.chatStylesPath + '/**/*.handlebars', ['chat-styles-handlebars']); }); // Generate .pot files based on the sources diff --git a/src/package.json b/src/package.json index 584c1db3..0c4954e4 100644 --- a/src/package.json +++ b/src/package.json @@ -1,30 +1,31 @@ { - "devDependencies": { - "gulp": "~3.8.11", - "gulp-phpcs": "~0.6.0", - "gulp-uglify": "~1.2.0", - "gulp-concat": "~2.5.2", - "gulp-order": "~1.1.1", - "gulp-handlebars": "~4.0.0", - "gulp-define-module": "~0.1.3", - "gulp-header": "~1.2.2", - "gulp-zip": "~3.0.2", - "gulp-tar": "~1.4.0", - "gulp-gzip": "~1.1.0", - "gulp-chmod": "~1.2.0", - "gulp-xgettext": "~0.3.0", - "gulp-concat-po": "~0.1.1", - "gulp-rename": "~1.2.2", - "bower": "~1.4.1", - "handlebars": "~3.0.3", - "run-sequence": "~1.1.0", - "through2": "~0.6.5", - "pofile": "~0.2.12", - "lodash": "~3.9.3", - "strftime": "~0.9.2", - "del": "~1.2.0", - "event-stream": "~3.3.1", - "eslint": "~2.11.0", - "gulp-eslint": "~2.0.0" - } + "devDependencies": { + "bower": "~1.4.1", + "del": "~1.2.0", + "eslint": "~2.11.0", + "event-stream": "~3.3.1", + "gulp": "~3.8.11", + "gulp-chmod": "~1.2.0", + "gulp-concat": "~2.5.2", + "gulp-concat-po": "~0.1.1", + "gulp-define-module": "~0.1.3", + "gulp-eslint": "~2.0.0", + "gulp-gzip": "~1.1.0", + "gulp-handlebars": "~4.0.0", + "gulp-header": "~1.2.2", + "gulp-order": "~1.1.1", + "gulp-phpcs": "~0.6.0", + "gulp-rename": "~1.2.2", + "gulp-tar": "~1.4.0", + "gulp-uglify": "~1.2.0", + "gulp-xgettext": "~0.3.0", + "gulp-zip": "~3.0.2", + "handlebars": "~3.0.3", + "lodash": "~3.9.3", + "pofile": "~0.2.12", + "q": "^1.4.1", + "run-sequence": "~1.1.0", + "strftime": "~0.9.2", + "through2": "~0.6.5" + } }