blob: 7e44aa769fe72098d9a5108197e88d50082401a8 [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
Josh Haberman3c4ce522016-04-11 15:53:25 -070045gulp.task('commonjs_testdeps', function (cb) {
46 exec('mkdir -p commonjs_out/test_node_modules && ./node_modules/google-closure-library/closure/bin/calcdeps.py -i commonjs/export_testdeps.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/testdeps_commonjs.js',
47 function (err, stdout, stderr) {
48 console.log(stdout);
49 console.log(stderr);
50 cb(err);
51 });
52});
53
54gulp.task('make_commonjs_out', ['dist', 'genproto_commonjs', 'commonjs_asserts', 'commonjs_testdeps'], function (cb) {
Josh Habermane9f31ee2016-02-04 10:29:27 -080055 // TODO(haberman): minify this more aggressively.
56 // Will require proper externs/exports.
murgatroid99a862b6b2016-02-24 13:44:57 -080057 var cmd = "mkdir -p commonjs_out/binary && mkdir -p commonjs_out/test_node_modules && ";
Josh Habermane9f31ee2016-02-04 10:29:27 -080058 function addTestFile(file) {
Josh Haberman59ea5002016-02-05 15:07:15 -080059 cmd += 'node commonjs/rewrite_tests_for_commonjs.js < ' + file +
Josh Habermane9f31ee2016-02-04 10:29:27 -080060 ' > commonjs_out/' + file + '&& ';
61 }
62
63 glob.sync('*_test.js').forEach(addTestFile);
64 glob.sync('binary/*_test.js').forEach(addTestFile);
65
66 exec(cmd +
Josh Haberman9e600362016-02-04 10:38:06 -080067 'cp commonjs/jasmine.json commonjs_out/jasmine.json && ' +
murgatroid99c9f8a1b2016-02-24 14:23:08 -080068 'cp google-protobuf.js commonjs_out/test_node_modules && ' +
69 'cp commonjs/import_test.js commonjs_out/import_test.js',
Josh Haberman55cc3aa2016-02-02 15:18:34 -080070 function (err, stdout, stderr) {
71 console.log(stdout);
72 console.log(stderr);
73 cb(err);
74 });
75});
76
77gulp.task('deps', ['genproto_closure'], function (cb) {
Josh Habermane9cf31e2015-12-21 15:18:17 -080078 exec('./node_modules/google-closure-library/closure/bin/build/depswriter.py *.js binary/*.js > deps.js',
79 function (err, stdout, stderr) {
80 console.log(stdout);
81 console.log(stderr);
82 cb(err);
83 });
Josh Haberman55cc3aa2016-02-02 15:18:34 -080084});
Josh Habermane9cf31e2015-12-21 15:18:17 -080085
Josh Haberman55cc3aa2016-02-02 15:18:34 -080086gulp.task('test_closure', ['genproto_closure', 'deps'], function (cb) {
Josh Habermane9cf31e2015-12-21 15:18:17 -080087 exec('JASMINE_CONFIG_PATH=jasmine.json ./node_modules/.bin/jasmine',
88 function (err, stdout, stderr) {
89 console.log(stdout);
90 console.log(stderr);
91 cb(err);
92 });
93});
Josh Haberman55cc3aa2016-02-02 15:18:34 -080094
Josh Habermane9f31ee2016-02-04 10:29:27 -080095gulp.task('test_commonjs', ['make_commonjs_out'], function (cb) {
murgatroid99a862b6b2016-02-24 13:44:57 -080096 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 -080097 function (err, stdout, stderr) {
98 console.log(stdout);
99 console.log(stderr);
100 cb(err);
101 });
102});
Josh Haberman35298f92016-02-04 17:01:33 -0800103
104gulp.task('test', ['test_closure', 'test_commonjs'], function(cb) {
105 cb();
106});