Run tests on Travis-CI.
[dygraphs.git] / gulpfile.js
CommitLineData
8db6393e
DV
1var gulp = require('gulp');
2var plugins = require('gulp-load-plugins')();
3var karma = require('karma').server;
8db6393e
DV
4var path = require('path');
5
6var dev = false;
7var src = {
8ab75052
DV
8 base: "src",
9 polyfills: {
10 base: "src/polyfills",
11 files: [
12 "console.js",
13 "dashed-canvas.js"
14 ]
15 },
16 main: {
8db6393e 17 base: "src",
8ab75052
DV
18 files: [
19 "dygraph-options.js",
20 "dygraph-layout.js",
21 "dygraph-canvas.js",
22 "dygraph.js",
23 "dygraph-utils.js",
24 "dygraph-gviz.js",
25 "dygraph-interaction-model.js",
26 "dygraph-tickers.js",
27 "dygraph-plugin-base.js"
28 ]
29 } ,
30 plugins: {
31 base: "src/plugins",
32 files: [
33 "annotations.js",
34 "axes.js",
35 "chart-labels.js",
36 "grid.js",
37 "legend.js",
38 "range-selector.js",
39 "../dygraph-plugin-install.js"
40 ]
41 },
42 // Only used by dynamic loader
43 devOptions: {
44 base: "src",
45 files: ["dygraph-options-reference.js"]
46 },
47 datahandlers: {
48 base: "src/datahandler",
49 files: [
50 "datahandler.js",
51 "default.js",
52 "default-fractions.js",
53 "bars.js",
54 "bars-error.js",
55 "bars-custom.js",
56 "bars-fractions.js"
57 ]
58 }
8db6393e
DV
59};
60
61// Convenience function to merge multiple arrays into one
62var mergePaths = function() {
8ab75052
DV
63 var paths = [];
64 var pathobj = null;
65 if (arguments.length > 0) {
66 for (var i = 0; i < arguments.length; i++) {
67 pathObj = arguments[i];
68 pathObj.files.map(function(filename) {
69 paths.push(path.join(pathObj.base, filename));
70 });
8db6393e 71 }
8ab75052
DV
72
73 return paths;
74 } else {
75 return [];
76 }
8db6393e
DV
77};
78
8ab75052 79var copyright = '/*! @license Copyright 2015 Dan Vanderkam (danvdk@gmail.com) MIT-licensed (http://opensource.org/licenses/MIT) */';
8db6393e 80
8ab75052 81/*
8db6393e
DV
82// Creates the dygraph-autoloader
83gulp.task('create-loader', function() {
8ab75052
DV
84 // Create string ready for javascript array
85 var files = mergePaths(src.lib, src.main, src.plugins, src.devOptions, src.datahandlers)
86 .map(function(filename) {
87 // Make the path relative to dist file and add quotes
88 return "'" + filename.replace(src.base, '../../' + src.base) + "'";
89 })
90 .join(",");
91
92 return gulp.src(src.base + '../dygraph/dygraph-autoloader.js')
93 .pipe(plugins.replace(/\/\* REPLACEME \*\//, files))
94 .pipe(gulp.dest('dist/scratch'));
8db6393e 95});
8ab75052 96*/
8db6393e
DV
97
98gulp.task('create-dev', function() {
8ab75052 99 var dest = 'dist';
ab847f37
DV
100 return gulp.src(mergePaths(src.polyfills, src.main, src.plugins, src.devOptions, src.datahandlers), {base: '.'})
101 .pipe(plugins.sourcemaps.init({debug:true}))
b0ce973b 102 .pipe(plugins.concat('dygraph-combined-dev.js'))
8ab75052 103 .pipe(plugins.header(copyright))
ab847f37 104 .pipe(plugins.sourcemaps.write('.')) // '.' = external sourcemap
8ab75052 105 .pipe(gulp.dest(dest));
8db6393e
DV
106});
107
108gulp.task('concat', function() {
8ab75052 109 var dest = 'dist';
b0ce973b 110 return gulp.src(mergePaths(src.polyfills, src.main, src.plugins, src.datahandlers), {base: '.'})
8ab75052 111 .pipe(plugins.sourcemaps.init())
b0ce973b 112 .pipe(plugins.concat('scratch'))
8ab75052
DV
113 .pipe(plugins.header(copyright))
114 .pipe(gulp.dest(dest))
115 .pipe(plugins.uglify({
116 compress: {
117 global_defs: { DEBUG: false }
118 },
119 warnings: false,
120 preserveComments: "none"
121 }))
122 .pipe(plugins.header(copyright))
b0ce973b 123 .pipe(plugins.rename('dygraph-combined.js'))
8ab75052
DV
124 .pipe(plugins.sourcemaps.write('.'))
125 .pipe(gulp.dest(dest));
8db6393e
DV
126
127});
128
8db6393e 129gulp.task('gwt-dist', ['concat'], function() {
8ab75052
DV
130 // Copy package structure to dist folder
131 gulp.src('gwt/**', {'base': '.'})
132 .pipe(gulp.dest('dist'));
133
b0ce973b 134 gulp.src('dygraph-combined.js')
8ab75052
DV
135 .pipe(gulp.dest('dist/gwt/org/danvk'));
136
137 // Generate jar
138 gulp.src('')
139 .pipe(plugins.shell([
3b3ae207 140 'bash -c "jar -cf dist/dygraph-gwt.jar -C dist/gwt org"'
8ab75052 141 ]))
8db6393e
DV
142});
143
144gulp.task('test', ['concat', 'create-dev'], function(done) {
8ab75052
DV
145 karma.start({
146 configFile: process.cwd() + '/auto_tests/karma.conf.js',
147 singleRun: true
148 }, done);
8db6393e
DV
149});
150
ab847f37
DV
151gulp.task('coveralls', ['test'], plugins.shell.task([
152 './scripts/transform-coverage.js ' +
b0ce973b 153 'dist/dygraph-combined-dev.js.map ' +
ab847f37
DV
154 'dist/coverage/report-lcov/lcov.info ' +
155 '| ./node_modules/.bin/coveralls'
156]));
157
8db6393e 158gulp.task('watch', function() {
8ab75052 159 gulp.watch('src/**', ['concat']);
8db6393e
DV
160});
161
162gulp.task('watch-test', function() {
8ab75052 163 gulp.watch(['src/**', 'auto_tests/tests/**'], ['test']);
8db6393e
DV
164});
165
b0ce973b 166gulp.task('dist', ['gwt-dist', 'concat', 'create-dev']);
ab847f37 167gulp.task('travis', ['test', 'coveralls']);
8db6393e 168gulp.task('default', ['test', 'dist']);