var fs = require('fs'); var gulp = require('gulp'); var jasmine = require('gulp-jasmine'); var uglify = require('gulp-uglify'); var concat = require('gulp-concat'); var sourcemaps = require('gulp-sourcemaps'); var runSequence = require('run-sequence'); var merge = require('merge-stream'); var gloablizationDir = 'src/globalization/'; var basefiles = ['src/core.js','src/sugarpak.js','src/parser.js','src/time.js']; var corefiles = [gloablizationDir+'en-US.js'].concat(basefiles); var globalizationFiles = fs.readdirSync(gloablizationDir); var coretests = [ 'test/core/index.js', 'test/date/index.js', 'test/date_and_time/index.js', 'test/date_math/index.js', 'test/dst/index.js', 'test/parseExact/index.js', 'test/partial/index.js', 'test/relative/index.js', 'test/relative_date_and_time/index.js', 'test/time/index.js', 'test/tostring/index.js' ]; var extendedtests = [ 'test/rememberthemilk/index.js', 'test/ruby_chronic/index.js', 'test/sugarpak/index.js', ]; gulp.task('coretest', function() { return gulp.src(corefiles.concat(coretests)) .pipe(jasmine()); }); gulp.task('extendedtest', function() { return gulp.src(corefiles.concat(extendedtests)) .pipe(jasmine()); }); gulp.task('buildCore', ['coretest'], function() { return gulp.src(corefiles) .pipe(sourcemaps.init()) .pipe(concat('date.js')) .pipe(uglify()) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./build')) }); gulp.task('buildGlobal', ['coretest'], function() { var tasks = globalizationFiles.map(function(culture){ var files = [gloablizationDir + culture].concat(basefiles); return pipeline(files, culture); }); return merge(tasks); }); function pipeline(files, culture) { return gulp.src(files) // .pipe(sourcemaps.init()) .pipe(concat(culture ? 'date-'+culture : 'date.js')) // .pipe(uglify()) // .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./build')) } gulp.task('test', function() { runSequence(['coretest'],['extendedtest']); }); gulp.task('default', ['buildCore','buildGlobal']);