Skip to content

Commit 4c925b2

Browse files
committed
Track which versions to list in WordPress.
1 parent 5c860a5 commit 4c925b2

File tree

2 files changed

+61
-38
lines changed

2 files changed

+61
-38
lines changed

src/main.js

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ function getVersions( repoDetails, fn ) {
151151
if ( version.charAt( 0 ) === "v" ) {
152152
version = version.substring( 1 );
153153
}
154-
// TODO: disallow builds
155154

156155
// tag is not a clean version number
157156
if ( semver.clean( version ) !== version ) {
@@ -301,11 +300,50 @@ function processPlugin( repo, fn ) {
301300
}
302301
}
303302

303+
// TODO: clean up this code
304304
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() {
309347
wordpress.end();
310348
fn();
311349
}
@@ -322,31 +360,17 @@ function processPlugin( repo, fn ) {
322360
return progress();
323361
}
324362

325-
wordpress.getVersions( data.package.name, function( error, versions ) {
363+
_addPluginVersion( version, data.package, function( error ) {
326364
if ( error ) {
327-
// TODO: log failure for retry
328365
return progress();
329366
}
330367

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 ] = [];
335371
}
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();
350374
});
351375
});
352376
});

src/wordpress.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ function createOrUpdatePost( name, title, content, fn ) {
5151
});
5252
}
5353

54-
function createOrUpdateMeta( plugin, key, value, fn ) {
54+
function setMeta( plugin, key, value, fn ) {
5555
getPostId( plugin, function( error, id ) {
5656
if ( error ) {
5757
return fn( error );
@@ -138,21 +138,10 @@ module.exports = {
138138
return fn( error );
139139
}
140140

141-
createOrUpdateMeta( postName, "package_json", JSON.stringify( package ), fn );
141+
setMeta( postName, "package_json", JSON.stringify( package ), fn );
142142
});
143143
}),
144144

145-
// TODO: check if this is needed in the end
146-
getOwner: auto(function( plugin, fn ) {
147-
getMeta( plugin, "owner", fn );
148-
}),
149-
150-
// TODO: check if this is needed in the end
151-
setOwner: auto(function( plugin, owner, fn ) {
152-
createOrUpdateMeta( plugin, "owner", owner, fn );
153-
}),
154-
155-
// TODO: optimize with a cache (must be cleared when setting the new versions)
156145
getVersions: auto(function( plugin, fn ) {
157146
getMeta( plugin, "versions", function( error, versions ) {
158147
if ( error ) {
@@ -167,6 +156,16 @@ module.exports = {
167156
});
168157
}),
169158

159+
setVersions: auto(function( plugin, versions, latest, fn ) {
160+
createOrUpdatePost( plugin, plugin, "", function( error ) {
161+
if ( error ) {
162+
return fn( error );
163+
}
164+
165+
setMeta( plugin, "versions", JSON.stringify( versions ), fn );
166+
});
167+
}),
168+
170169
end: function() {
171170
if ( db ) {
172171
db.end();

0 commit comments

Comments
 (0)