blob: 36fd9fda098d4577544763d9d293bddecc19f8c1 [file] [log] [blame]
Josh Habermane9cf31e2015-12-21 15:18:17 -08001var gulp = require('gulp');
2var exec = require('child_process').exec;
Josh Habermane9f31ee2016-02-04 10:29:27 -08003var glob = require('glob');
Josh Habermane9cf31e2015-12-21 15:18:17 -08004
Josh Haberman24c54242016-02-19 11:46:03 -08005var protoc = process.env.PROTOC || '../src/protoc';
6
Josh Haberman55cc3aa2016-02-02 15:18:34 -08007gulp.task('genproto_closure', function (cb) {
murgatroid99c9f8a1b2016-02-24 14:23:08 -08008 exec(protoc + ' --js_out=library=testproto_libs,binary:. -I ../src -I . *.proto ../src/google/protobuf/descriptor.proto',
Josh Habermane9cf31e2015-12-21 15:18:17 -08009 function (err, stdout, stderr) {
10 console.log(stdout);
11 console.log(stderr);
12 cb(err);
13 });
Josh Haberman55cc3aa2016-02-02 15:18:34 -080014});
Josh Habermane9cf31e2015-12-21 15:18:17 -080015
Josh Haberman55cc3aa2016-02-02 15:18:34 -080016gulp.task('genproto_commonjs', function (cb) {
murgatroid99c9f8a1b2016-02-24 14:23:08 -080017 exec('mkdir -p commonjs_out && ' + protoc + ' --js_out=import_style=commonjs,binary:commonjs_out -I ../src -I commonjs -I . *.proto commonjs/test*/*.proto ../src/google/protobuf/descriptor.proto',
Josh Haberman55cc3aa2016-02-02 15:18:34 -080018 function (err, stdout, stderr) {
19 console.log(stdout);
20 console.log(stderr);
21 cb(err);
22 });
23});
24
25gulp.task('dist', function (cb) {
26 // TODO(haberman): minify this more aggressively.
27 // Will require proper externs/exports.
Josh Haberman9e600362016-02-04 10:38:06 -080028 exec('./node_modules/google-closure-library/closure/bin/calcdeps.py -i message.js -i binary/reader.js -i binary/writer.js -i commonjs/export.js -p . -p node_modules/google-closure-library/closure -o compiled --compiler_jar node_modules/google-closure-compiler/compiler.jar > google-protobuf.js',
Josh Habermane9f31ee2016-02-04 10:29:27 -080029 function (err, stdout, stderr) {
30 console.log(stdout);
31 console.log(stderr);
32 cb(err);
33 });
34});
35
36gulp.task('commonjs_asserts', function (cb) {
murgatroid99a862b6b2016-02-24 13:44:57 -080037 exec('mkdir -p commonjs_out/test_node_modules && ./node_modules/google-closure-library/closure/bin/calcdeps.py -i commonjs/export_asserts.js -p . -p node_modules/google-closure-library/closure -o compiled --compiler_jar node_modules/google-closure-compiler/compiler.jar > commonjs_out/test_node_modules/closure_asserts_commonjs.js',
Josh Habermane9f31ee2016-02-04 10:29:27 -080038 function (err, stdout, stderr) {
39 console.log(stdout);
40 console.log(stderr);
41 cb(err);
42 });
43});
44
45gulp.task('make_commonjs_out', ['dist', 'genproto_commonjs', 'commonjs_asserts'], function (cb) {
46 // TODO(haberman): minify this more aggressively.
47 // Will require proper externs/exports.
murgatroid99a862b6b2016-02-24 13:44:57 -080048 var cmd = "mkdir -p commonjs_out/binary && mkdir -p commonjs_out/test_node_modules && ";
Josh Habermane9f31ee2016-02-04 10:29:27 -080049 function addTestFile(file) {
Josh Haberman59ea5002016-02-05 15:07:15 -080050 cmd += 'node commonjs/rewrite_tests_for_commonjs.js < ' + file +
Josh Habermane9f31ee2016-02-04 10:29:27 -080051 ' > commonjs_out/' + file + '&& ';
52 }
53
54 glob.sync('*_test.js').forEach(addTestFile);
55 glob.sync('binary/*_test.js').forEach(addTestFile);
56
57 exec(cmd +
Josh Haberman9e600362016-02-04 10:38:06 -080058 'cp commonjs/jasmine.json commonjs_out/jasmine.json && ' +
murgatroid99c9f8a1b2016-02-24 14:23:08 -080059 'cp google-protobuf.js commonjs_out/test_node_modules && ' +
60 'cp commonjs/import_test.js commonjs_out/import_test.js',
Josh Haberman55cc3aa2016-02-02 15:18:34 -080061 function (err, stdout, stderr) {
62 console.log(stdout);
63 console.log(stderr);
64 cb(err);
65 });
66});
67
68gulp.task('deps', ['genproto_closure'], function (cb) {
Josh Habermane9cf31e2015-12-21 15:18:17 -080069 exec('./node_modules/google-closure-library/closure/bin/build/depswriter.py *.js binary/*.js > deps.js',
70 function (err, stdout, stderr) {
71 console.log(stdout);
72 console.log(stderr);
73 cb(err);
74 });
Josh Haberman55cc3aa2016-02-02 15:18:34 -080075});
Josh Habermane9cf31e2015-12-21 15:18:17 -080076
Josh Haberman55cc3aa2016-02-02 15:18:34 -080077gulp.task('test_closure', ['genproto_closure', 'deps'], function (cb) {
Josh Habermane9cf31e2015-12-21 15:18:17 -080078 exec('JASMINE_CONFIG_PATH=jasmine.json ./node_modules/.bin/jasmine',
79 function (err, stdout, stderr) {
80 console.log(stdout);
81 console.log(stderr);
82 cb(err);
83 });
84});
Josh Haberman55cc3aa2016-02-02 15:18:34 -080085
Josh Habermane9f31ee2016-02-04 10:29:27 -080086gulp.task('test_commonjs', ['make_commonjs_out'], function (cb) {
murgatroid99a862b6b2016-02-24 13:44:57 -080087 exec('cd commonjs_out && JASMINE_CONFIG_PATH=jasmine.json NODE_PATH=test_node_modules ../node_modules/.bin/jasmine',
Josh Haberman55cc3aa2016-02-02 15:18:34 -080088 function (err, stdout, stderr) {
89 console.log(stdout);
90 console.log(stderr);
91 cb(err);
92 });
93});
Josh Haberman35298f92016-02-04 17:01:33 -080094
95gulp.task('test', ['test_closure', 'test_commonjs'], function(cb) {
96 cb();
97});