@@ -12,7 +12,6 @@ var madge = require('madge');
1212var merge = require ( 'merge' ) ;
1313var merge2 = require ( 'merge2' ) ;
1414var path = require ( 'path' ) ;
15- var Q = require ( 'q' ) ;
1615
1716var gulpTraceur = require ( './tools/transpiler/gulp-traceur' ) ;
1817var clean = require ( './tools/build/clean' ) ;
@@ -35,11 +34,19 @@ var bundler = require('./tools/build/bundle');
3534var replace = require ( 'gulp-replace' ) ;
3635var insert = require ( 'gulp-insert' ) ;
3736
38- // dynamic require in build.broccoli.tools so we can bootstrap TypeScript compilation
39- function missingDynamicBroccoli ( ) {
40- throw new Error ( 'ERROR: build.broccoli.tools task should have been run before using broccoli' ) ;
37+
38+ // dynamic require in build.tools so we can bootstrap TypeScript compilation
39+ function throwToolsBuildMissingError ( ) {
40+ throw new Error ( 'ERROR: build.tools task should have been run before using angularBuilder' ) ;
4141}
42- var getBroccoli = missingDynamicBroccoli ;
42+
43+ var angularBuilder = {
44+ rebuildBrowserDevTree : throwToolsBuildMissingError ,
45+ rebuildBrowserProdTree : throwToolsBuildMissingError ,
46+ rebuildNodeTree : throwToolsBuildMissingError ,
47+ rebuildDartTree : throwToolsBuildMissingError ,
48+ cleanup : function ( ) { }
49+ } ;
4350
4451// Note: when DART_SDK is not found, all gulp tasks ending with `.dart` will be skipped.
4552
@@ -240,7 +247,7 @@ gulp.task('build/clean.docs', clean(gulp, gulpPlugins, {
240247// transpile
241248
242249gulp . task ( 'build/tree.dart' , [ 'build.broccoli.tools' ] , function ( ) {
243- return getBroccoli ( ) . forDartTree ( ) . buildOnce ( ) ;
250+ return angularBuilder . rebuildDartTree ( ) ;
244251} ) ;
245252
246253// ------------
@@ -255,13 +262,6 @@ gulp.task('build/pubspec.dart', pubget.subDir(gulp, gulpPlugins, {
255262 command : DART_SDK . PUB
256263} ) ) ;
257264
258- // ------------
259- // linknodemodules
260-
261- gulp . task ( 'build/linknodemodules.js.cjs' , linknodemodules ( gulp , gulpPlugins , {
262- dir : CONFIG . dest . js . cjs
263- } ) ) ;
264-
265265// ------------
266266// dartanalyzer
267267
@@ -464,44 +464,19 @@ gulp.task('test.unit.dart/ci', function (done) {
464464 karma . start ( { configFile : __dirname + '/karma-dart.conf.js' ,
465465 singleRun : true , reporters : [ 'dots' ] , browsers : getBrowsersFromCLI ( ) } , done ) ;
466466} ) ;
467- gulp . task ( 'test.unit.cjs/ci' , function ( ) {
468- return gulp . src ( CONFIG . test . js . cjs ) . pipe ( jasmine ( { includeStackTrace : true , timeout : 1000 } ) ) ;
469- } ) ;
470- gulp . task ( 'test.unit.cjs' , [ 'build.js.cjs' ] , function ( ) {
471- //Run tests once
472- runSequence ( 'test.unit.cjs/ci' , function ( ) { } ) ;
473- } ) ;
474467
475- function runNodeJasmineTests ( ) {
476- var doneDeferred = Q . defer ( ) ;
477- var jasmineProcess = fork ( './tools/traceur-jasmine' , [ 'dist/js/cjs/angular2/test/**/*_spec.js' ] , {
478- stdio : 'inherit'
479- } ) ;
480468
481- jasmineProcess . on ( 'close' , function ( code ) {
482- doneDeferred . resolve ( ) ;
469+ gulp . task ( 'test.unit.cjs/ci' , function ( done ) {
470+ fork ( './tools/traceur-jasmine' , [ 'dist/js/cjs/angular2/test/**/*_spec.js' ] , {
471+ stdio : 'inherit'
472+ } ) . on ( 'close' , function ( exitCode ) {
473+ done ( exitCode ) ;
483474 } ) ;
484-
485- return doneDeferred . promise ;
486- }
487-
488- gulp . task ( 'test.unit.cjs/ci' , runNodeJasmineTests ) ;
489-
490- gulp . task ( 'test.unit.cjs' , [ 'build.broccoli.tools' ] , function ( done ) {
491- //Run tests once
492- var nodeBroccoliBuilder = getBroccoli ( ) . forNodeTree ( ) ;
475+ } ) ;
493476
494477
495- nodeBroccoliBuilder . doBuild ( ) . then ( function ( ) {
496- gulp . start ( 'build/linknodemodules.js.cjs' ) ;
497- return runNodeJasmineTests ( ) ;
498- } ) . then ( function ( ) {
499- //Watcher to transpile file changed
500- gulp . watch ( 'modules/**' , function ( event ) {
501- console . log ( "fs changes detected" , event ) ;
502- nodeBroccoliBuilder . doBuild ( ) . then ( runNodeJasmineTests ) ;
503- } ) ;
504- } ) ;
478+ gulp . task ( 'test.unit.cjs' , [ 'test.unit.cjs/ci' ] , function ( ) {
479+ gulp . watch ( 'modules/**' , [ 'test.unit.cjs/ci' ] ) ;
505480} ) ;
506481
507482
@@ -636,12 +611,9 @@ gulp.task('build.broccoli.tools', function() {
636611} ) ;
637612
638613gulp . task ( 'broccoli.js.dev' , [ 'build.broccoli.tools' ] , function ( ) {
639- return getBroccoli ( ) . forDevTree ( ) . buildOnce ( ) ;
614+ return angularBuilder . rebuildBrowserDevTree ( ) ;
640615} ) ;
641616
642- gulp . task ( 'broccoli.js.prod' , [ 'build.broccoli.tools' ] , function ( ) {
643- return getBroccoli ( ) . forProdTree ( ) . buildOnce ( ) ;
644- } ) ;
645617
646618gulp . task ( 'build.js.dev' , function ( done ) {
647619 runSequence (
@@ -652,19 +624,27 @@ gulp.task('build.js.dev', function(done) {
652624 ) ;
653625} ) ;
654626
655- gulp . task ( 'build.js.prod' , [ 'broccoli.js.prod' ] ) ;
656-
657- gulp . task ( 'broccoli.js.cjs' , [ 'build.broccoli.tools' ] , function ( ) {
658- return getBroccoli ( ) . forNodeTree ( ) . buildOnce ( ) ;
627+ gulp . task ( 'build.js.prod' , [ 'build.broccoli.tools' ] , function ( ) {
628+ return angularBuilder . rebuildBrowserProdTree ( ) ;
659629} ) ;
660- gulp . task ( 'build.js.cjs' , function ( done ) {
661- runSequence (
662- 'broccoli.js.cjs' ,
663- 'build/linknodemodules.js.cjs' ,
664- done
665- ) ;
630+
631+
632+ var firstBuildJsCjs = true ;
633+
634+ gulp . task ( 'build.js.cjs' , [ 'build.broccoli.tools' ] , function ( ) {
635+ return angularBuilder . rebuildNodeTree ( ) . then ( function ( ) {
636+ if ( firstBuildJsCjs ) {
637+ firstBuildJsCjs = false ;
638+ console . log ( 'creating node_modules symlink hack' ) ;
639+ // linknodemodules is all sync
640+ linknodemodules ( gulp , gulpPlugins , {
641+ dir : CONFIG . dest . js . cjs
642+ } ) ( ) ;
643+ }
644+ } ) ;
666645} ) ;
667646
647+
668648var bundleConfig = {
669649 paths : {
670650 "*" : "dist/js/prod/es6/*.es6" ,
@@ -789,3 +769,20 @@ gulp.task('build/css.dart', function() {
789769} ) ;
790770
791771gulp . task ( 'build.material' , [ 'build.js.dev' , 'build/css.js.dev' ] ) ;
772+
773+
774+ gulp . task ( 'cleanup.builder' , function ( ) {
775+ angularBuilder . cleanup ( ) ;
776+ } ) ;
777+
778+
779+ // register cleanup listener for ctrl+c/kill used to quit any persistent task (autotest or serve tasks)
780+ process . on ( 'SIGINT' , function ( ) {
781+ gulp . start ( 'cleanup.builder' ) ;
782+ process . exit ( ) ;
783+ } ) ;
784+
785+ // register cleanup listener for all non-persistent tasks
786+ process . on ( 'beforeExit' , function ( ) {
787+ gulp . start ( 'cleanup.builder' ) ;
788+ } ) ;
0 commit comments