@@ -2,6 +2,10 @@ var semver = require( "semver" ),
2
2
Step = require ( "step" ) ,
3
3
config = require ( "./config" ) ;
4
4
5
+ var suites = {
6
+ "github/rdworth/temp-jqueryui" : "ui-"
7
+ } ;
8
+
5
9
function extend ( a , b ) {
6
10
for ( var prop in b ) {
7
11
a [ prop ] = b [ prop ] ;
@@ -12,12 +16,18 @@ function Repo() {
12
16
this . userId = this . service + "/" + this . userName ;
13
17
this . id = this . userId + "/" + this . repoName ;
14
18
this . path = config . repoDir + "/" + this . id ;
19
+ this . isSuite = this . id in suites ;
15
20
}
16
21
17
22
// package.json
18
23
extend ( Repo . prototype , {
19
- getPackageJson : function ( version , fn ) {
20
- this . _getPackageJson ( version , function ( error , package ) {
24
+ getPackageJson : function ( version , file , fn ) {
25
+ if ( typeof file === "function" ) {
26
+ fn = file ;
27
+ file = "package.json" ;
28
+ }
29
+
30
+ this . _getPackageJson ( version , file , function ( error , package ) {
21
31
if ( error ) {
22
32
return fn ( error ) ;
23
33
}
@@ -236,6 +246,10 @@ extend( Repo.prototype, {
236
246
} ,
237
247
238
248
validateVersion : function ( tag , fn ) {
249
+ if ( this . isSuite ) {
250
+ return this . validateVersion_suite ( tag , fn ) ;
251
+ }
252
+
239
253
var repo = this ;
240
254
Step (
241
255
// get the package.json
@@ -250,7 +264,7 @@ extend( Repo.prototype, {
250
264
}
251
265
252
266
if ( ! package ) {
253
- return fn ( null ) ;
267
+ return fn ( null , null ) ;
254
268
}
255
269
256
270
return package ;
@@ -268,6 +282,54 @@ extend( Repo.prototype, {
268
282
fn ( null , package ) ;
269
283
}
270
284
) ;
285
+ } ,
286
+
287
+ validateVersion_suite : function ( tag , fn ) {
288
+ var repo = this ;
289
+ Step (
290
+ // get list of package.json files
291
+ function ( ) {
292
+ repo . getPackageJsonFiles ( tag , this ) ;
293
+ } ,
294
+
295
+ // get all package.jsons
296
+ function ( error , files ) {
297
+ if ( error ) {
298
+ return fn ( error ) ;
299
+ }
300
+
301
+ if ( ! files . length ) {
302
+ return fn ( null , null ) ;
303
+ }
304
+
305
+ var group = this . group ( ) ;
306
+ files . forEach ( function ( file ) {
307
+ repo . getPackageJson ( tag , file , group ( ) ) ;
308
+ } ) ;
309
+ } ,
310
+
311
+ // validate package.jsons
312
+ function ( error , packages ) {
313
+ if ( error ) {
314
+ return fn ( error ) ;
315
+ }
316
+
317
+ // if any package.json is invalid, then the whole version is invalid
318
+ if ( packages . some ( function ( package ) {
319
+ return ! package ;
320
+ } ) ) {
321
+ return fn ( null , null ) ;
322
+ }
323
+
324
+ for ( var i = 0 , l = packages . length ; i < l ; i ++ ) {
325
+ if ( repo . validatePackageJson ( packages [ i ] , tag ) . length ) {
326
+ return fn ( null , null ) ;
327
+ }
328
+ }
329
+
330
+ fn ( null , packages ) ;
331
+ }
332
+ ) ;
271
333
}
272
334
} ) ;
273
335
0 commit comments