@@ -9,6 +9,7 @@ var runSequence = require('run-sequence');
99var glob = require ( 'glob' ) ;
1010var ejs = require ( 'gulp-ejs' ) ;
1111var path = require ( 'path' ) ;
12+ var through2 = require ( 'through2' ) ;
1213
1314// import js2dart build tasks
1415var js2dartTasks = require ( './tools/js2dart/gulp-tasks' ) ;
@@ -38,10 +39,10 @@ var traceur = require('./tools/js2dart/gulp-traceur');
3839// rtts-assert and traceur runtime
3940
4041gulp . task ( 'jsRuntime/build' , function ( ) {
41- return jsRuntime ( false ) ;
42+ return createJsRuntimeTask ( false ) ;
4243} ) ;
4344
44- function jsRuntime ( isWatch ) {
45+ function createJsRuntimeTask ( isWatch ) {
4546 var srcFn = isWatch ? watch : gulp . src . bind ( gulp ) ;
4647 var rttsAssert = srcFn ( 'tools/rtts-assert/src/assert.js' )
4748 . pipe ( traceur ( js2es5Options ) )
@@ -60,11 +61,20 @@ var sourceTypeConfigs = {
6061 } ,
6162 transpileSrc : [ 'modules/**/*.js' ] ,
6263 htmlSrc : [ 'modules/*/src/**/*.html' ] ,
63- // TODO: execute pub get after a yaml changed and was copied over to 'build' folder
6464 copySrc : [ 'modules/**/*.dart' , 'modules/**/*.yaml' ] ,
6565 outputDir : 'build/dart' ,
6666 outputExt : 'dart' ,
67- mimeType : 'application/dart'
67+ mimeType : 'application/dart' ,
68+ postProcess : function ( file , done ) {
69+ if ( file . path . match ( / p u b s p e c \. y a m l / ) ) {
70+ console . log ( file . path ) ;
71+ shell . task ( [ 'pub get' ] , {
72+ cwd : path . dirname ( file . path )
73+ } ) ( ) . on ( 'end' , done ) ;
74+ } else {
75+ done ( ) ;
76+ }
77+ }
6878 } ,
6979 js : {
7080 compiler : function ( ) {
@@ -74,46 +84,74 @@ var sourceTypeConfigs = {
7484 htmlSrc : [ 'modules/*/src/**/*.html' ] ,
7585 copySrc : [ 'modules/**/*.es5' ] ,
7686 outputDir : 'build/js' ,
77- outputExt : 'js'
87+ outputExt : 'js' ,
88+ postProcess : function ( ) {
89+
90+ }
7891 }
7992} ;
8093
94+
8195gulp . task ( 'modules/clean' , function ( ) {
8296 return gulp . src ( 'build' , { read : false } )
8397 . pipe ( clean ( ) ) ;
8498} ) ;
8599
100+ gulp . task ( 'modules/build.dart/src' , function ( ) {
101+ return createModuleTask ( sourceTypeConfigs . dart , false ) ;
102+ } ) ;
103+
104+ gulp . task ( 'modules/build.dart/analyzer' , function ( ) {
105+ var baseDir = sourceTypeConfigs . dart . outputDir ;
106+ var files = [ ] . slice . call ( glob . sync ( '*/lib/*.dart' , {
107+ cwd : baseDir
108+ } ) ) ;
109+ files = files . filter ( function ( fileName ) {
110+ return fileName . match ( / ( \w + ) \/ l i b \/ \1/ ) ;
111+ } ) ;
112+ var commands = files . map ( function ( fileName ) {
113+ return 'dartanalyzer ' + baseDir + '/' + fileName
114+ } ) ;
115+ return shell . task ( commands ) ( ) ;
116+ } ) ;
117+
118+ gulp . task ( 'modules/build.dart' , function ( done ) {
119+ runSequence ( 'modules/build.dart/src' , 'modules/build.dart/analyzer' , done ) ;
120+ } ) ;
121+
122+ gulp . task ( 'modules/build.js' , function ( ) {
123+ return createModuleTask ( sourceTypeConfigs . js , false ) ;
124+ } ) ;
125+
86126function renameSrcToLib ( file ) {
87127 file . dirname = file . dirname . replace ( / \b s r c \b / , 'lib' ) ;
88128}
89129
90130function createModuleTask ( sourceTypeConfig , isWatch ) {
91131 var start = isWatch ? watch : gulp . src . bind ( gulp ) ;
92- return function ( done ) {
93- var transpile = start ( sourceTypeConfig . transpileSrc )
94- . pipe ( rename ( { extname : '.' + sourceTypeConfig . outputExt } ) )
95- . pipe ( rename ( renameSrcToLib ) )
96- . pipe ( sourceTypeConfig . compiler ( ) )
97- . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
98- var copy = start ( sourceTypeConfig . copySrc )
99- . pipe ( rename ( renameSrcToLib ) )
100- . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
101- // TODO: provide the list of files to the template
102- // automatically!
103- var html = start ( sourceTypeConfig . htmlSrc )
104- . pipe ( rename ( renameSrcToLib ) )
105- . pipe ( ejs ( {
106- type : sourceTypeConfig . outputExt
107- } ) )
108- . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
109-
110- return mergeStreams ( transpile , copy , html ) ;
111- } ;
132+ var transpile = start ( sourceTypeConfig . transpileSrc )
133+ . pipe ( rename ( { extname : '.' + sourceTypeConfig . outputExt } ) )
134+ . pipe ( rename ( renameSrcToLib ) )
135+ . pipe ( sourceTypeConfig . compiler ( ) )
136+ . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
137+ var copy = start ( sourceTypeConfig . copySrc )
138+ . pipe ( rename ( renameSrcToLib ) )
139+ . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
140+ // TODO: provide the list of files to the template
141+ // automatically!
142+ var html = start ( sourceTypeConfig . htmlSrc )
143+ . pipe ( rename ( renameSrcToLib ) )
144+ . pipe ( ejs ( {
145+ type : sourceTypeConfig . outputExt
146+ } ) )
147+ . pipe ( gulp . dest ( sourceTypeConfig . outputDir ) ) ;
148+
149+ var s = mergeStreams ( transpile , copy , html ) ;
150+ return s . pipe ( through2 . obj ( function ( file , enc , done ) {
151+ sourceTypeConfig . postProcess ( file , done ) ;
152+ } ) ) ;
112153}
113154
114- gulp . task ( 'modules/build.dart' , createModuleTask ( sourceTypeConfigs . dart , false ) ) ;
115- gulp . task ( 'modules/build.js' , createModuleTask ( sourceTypeConfigs . js , false ) ) ;
116-
117155// ------------------
118156// WEB SERVER
119157gulp . task ( 'serve' , connect . server ( {
@@ -155,7 +193,7 @@ gulp.task('watch', function() {
155193 [ 'jsRuntime/build' , 'modules/build.dart' , 'modules/build.js' ] ,
156194 done ) ;
157195 } ) ;
158- var dartModuleWatch = createModuleTask ( sourceTypeConfigs . dart , true ) ( ) ;
159- var jsModuleWatch = createModuleTask ( sourceTypeConfigs . js , true ) ( ) ;
160- return mergeStreams ( js2dartWatch , dartModuleWatch , jsModuleWatch , jsRuntime ( true ) ) ;
196+ var dartModuleWatch = createModuleTask ( sourceTypeConfigs . dart , true ) ;
197+ var jsModuleWatch = createModuleTask ( sourceTypeConfigs . js , true ) ;
198+ return mergeStreams ( js2dartWatch , dartModuleWatch , jsModuleWatch , createJsRuntimeTask ( true ) ) ;
161199} ) ;
0 commit comments