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