@@ -151,7 +151,6 @@ function getVersions( repoDetails, fn ) {
151
151
if ( version . charAt ( 0 ) === "v" ) {
152
152
version = version . substring ( 1 ) ;
153
153
}
154
- // TODO: disallow builds
155
154
156
155
// tag is not a clean version number
157
156
if ( semver . clean ( version ) !== version ) {
@@ -301,11 +300,50 @@ function processPlugin( repo, fn ) {
301
300
}
302
301
}
303
302
303
+ // TODO: clean up this code
304
304
function done ( ) {
305
- // TODO: update versionless post to have latest version
306
- // TODO: update metadata in WP
307
- // - don't list pre-release versions that are older than latest stable
308
- // - list pre-release versions greater than latest stable
305
+ for ( var plugin in plugins ) {
306
+ ( function ( plugin ) {
307
+ var latest , filteredVersions ,
308
+ newVersions = plugins [ plugin ] ;
309
+ wordpress . getVersions ( plugin , function ( error , versions ) {
310
+ if ( error ) {
311
+ // TODO: log failure for retry
312
+ return _done ( ) ;
313
+ }
314
+
315
+ versions = versions . concat ( newVersions )
316
+ . sort ( semver . compare ) . reverse ( ) ;
317
+ function isStable ( version ) {
318
+ return / ^ \d + \. \d + \. \d + $ / . test ( version ) ;
319
+ }
320
+ filteredVersions = versions . filter ( function ( version ) {
321
+ if ( latest ) {
322
+ return isStable ( version ) ;
323
+ }
324
+ if ( isStable ( version ) ) {
325
+ latest = version ;
326
+ }
327
+ return true ;
328
+ } ) ;
329
+ // no stable relases yet, show latest pre-release
330
+ if ( ! latest ) {
331
+ latest = filteredVersions [ 0 ] ;
332
+ }
333
+ // TODO: set contents of versionless post
334
+ wordpress . setVersions ( plugin , filteredVersions , latest , function ( error ) {
335
+ if ( error ) {
336
+ // TODO: log failure for retry
337
+ }
338
+
339
+ return _done ( ) ;
340
+ } ) ;
341
+ } ) ;
342
+ } ) ( plugin ) ;
343
+ }
344
+ }
345
+
346
+ function _done ( ) {
309
347
wordpress . end ( ) ;
310
348
fn ( ) ;
311
349
}
@@ -322,31 +360,17 @@ function processPlugin( repo, fn ) {
322
360
return progress ( ) ;
323
361
}
324
362
325
- wordpress . getVersions ( data . package . name , function ( error , versions ) {
363
+ _addPluginVersion ( version , data . package , function ( error ) {
326
364
if ( error ) {
327
- // TODO: log failure for retry
328
365
return progress ( ) ;
329
366
}
330
367
331
- // this version has already been processed
332
- // TODO: when should we start passing around the clean version?
333
- if ( versions . indexOf ( semver . clean ( version ) ) !== - 1 ) {
334
- return progress ( ) ;
368
+ var name = data . package . name ;
369
+ if ( ! plugins [ name ] ) {
370
+ plugins [ name ] = [ ] ;
335
371
}
336
-
337
- _addPluginVersion ( version , data . package , function ( error ) {
338
- if ( error ) {
339
- console . log ( error ) ;
340
- return progress ( ) ;
341
- }
342
-
343
- var name = data . package . name ;
344
- if ( ! plugins [ name ] ) {
345
- plugins [ name ] = [ ] ;
346
- }
347
- plugins [ name ] . push ( semver . clean ( version ) ) ;
348
- progress ( ) ;
349
- } ) ;
372
+ plugins [ name ] . push ( semver . clean ( version ) ) ;
373
+ progress ( ) ;
350
374
} ) ;
351
375
} ) ;
352
376
} ) ;
0 commit comments