Skip to content

Commit 78b1a2d

Browse files
committed
Handle failures while processing a suite.
1 parent 1846237 commit 78b1a2d

File tree

4 files changed

+32
-46
lines changed

4 files changed

+32
-46
lines changed

src/hook.js

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ function processVersions( repo, fn ) {
106106

107107
var group = this.group();
108108
releases.forEach(function( release ) {
109-
processRelease( repo, release, group() );
109+
for ( file in release.packages ) {
110+
processRelease( repo, release.tag, file, release.packages[ file ], group() );
111+
}
110112
});
111113
},
112114

@@ -116,49 +118,26 @@ function processVersions( repo, fn ) {
116118
);
117119
}
118120

119-
function processRelease( repo, release, fn ) {
120-
// if this is a suite, process each plugin individually
121-
if ( Array.isArray( release.package ) ) {
122-
return Step(
123-
function() {
124-
var group = this.group();
125-
release.package.forEach(function( package ) {
126-
processRelease( repo, {
127-
tag: release.tag,
128-
package: package
129-
}, group() );
130-
});
131-
},
132-
133-
function( error ) {
134-
if ( error ) {
135-
return fn( error );
136-
}
137-
138-
fn( null, release );
139-
}
140-
);
141-
}
142-
121+
function processRelease( repo, tag, file, package, fn ) {
143122
// TODO: track plugin name for retry in suites
144123
Step(
145124
// find out who owns this plugin
146125
// if there is no owner, then set the user as the owner
147126
function() {
148-
pluginsDb.getOrSetOwner( release.package.name, repo.userId, this );
127+
pluginsDb.getOrSetOwner( package.name, repo.userId, this );
149128
},
150129

151130
// verify the user is the owner
152131
function( error, owner ) {
153132
if ( error ) {
154-
retry.log( "processRelease", repo.id, release.tag );
133+
retry.log( "processRelease", repo.id, tag, file );
155134
return fn( error );
156135
}
157136

158137
// the plugin is owned by someone else
159138
if ( owner !== repo.userId ) {
160139
// TODO: report error to user
161-
logger.log( repo.userId + " attempted to add " + release.package.name + " which is owned by " + owner );
140+
logger.log( repo.userId + " attempted to add " + package.name + " which is owned by " + owner );
162141
return fn( null, null );
163142
}
164143

@@ -167,18 +146,18 @@ function processRelease( repo, release, fn ) {
167146

168147
// track the new release
169148
function( error, owner ) {
170-
pluginsDb.addRelease( repo.id, release, this );
149+
pluginsDb.addRelease( repo.id, tag, file, package, this );
171150
},
172151

173152
// finished processing release
174153
function( error ) {
175154
if ( error ) {
176-
retry.log( "processRelease", repo.id, release.tag );
155+
retry.log( "processRelease", repo.id, tag, file );
177156
return fn( error );
178157
}
179158

180-
logger.log( "Added " + release.package.name + " v" + release.package.version + " to plugins DB" );
181-
fn( null, release );
159+
logger.log( "Added " + package.name + " v" + package.version + " to plugins DB" );
160+
fn( null, package );
182161
}
183162
);
184163
}

src/pluginsdb.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,12 @@ var pluginsDb = module.exports = {
8787
db.run( "INSERT OR IGNORE INTO repos( repo, tag ) VALUES( ?, ? )", [ repoId, tag ], fn );
8888
}),
8989

90-
addRelease: auto(function( repoId, release, fn ) {
90+
addRelease: auto(function( repoId, tag, file, package, fn ) {
9191
var data = JSON.stringify({
9292
repo: repoId,
93-
tag: release.tag,
94-
package: release.package
93+
tag: tag,
94+
file: file,
95+
package: package
9596
});
9697

9798
db.run( "INSERT INTO actions( action, data ) VALUES( ?, ? )",
@@ -100,7 +101,7 @@ var pluginsDb = module.exports = {
100101
return fn( error );
101102
}
102103

103-
pluginsDb.addTag( repoId, release.tag, fn );
104+
pluginsDb.addTag( repoId, tag, fn );
104105
});
105106
}),
106107

src/retry.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
var Step = require( "step" ),
22
hook = require( "./hook" ),
33
service = require( "./service" ),
4-
retry = require( "./retrydb" );
4+
retry = require( "./retrydb" ),
5+
logger = require( "./logger" );
56

67
process.on( "uncaughtException", function( error ) {
78
logger.error( "Uncaught exception: " + error.stack );
@@ -19,14 +20,14 @@ actions.processVersions = function( repoId, fn ) {
1920
hook.processVersions( repo, fn );
2021
};
2122

22-
actions.processRelease = function( repoId, tag, fn ) {
23+
actions.processRelease = function( repoId, tag, file, fn ) {
2324
var repo = service.getRepoById( repoId );
24-
repo.getRelease( tag, function( error, release ) {
25+
repo.getPackageJson( tag, file, function( error, package ) {
2526
if ( error ) {
2627
return fn( error );
2728
}
2829

29-
hook.processRelease( repo, release, fn );
30+
hook.processRelease( repo, tag, file, package, fn );
3031
});
3132
};
3233

src/service.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -229,18 +229,18 @@ extend( Repo.prototype, {
229229
},
230230

231231
getRelease: function( tag, fn ) {
232-
this.validateVersion( tag, function( error, package ) {
232+
this.validateVersion( tag, function( error, packages ) {
233233
if ( error ) {
234234
return fn( error );
235235
}
236236

237-
if ( !package ) {
237+
if ( !packages ) {
238238
return fn( null, null );
239239
}
240240

241241
fn( null, {
242242
tag: tag,
243-
package: package
243+
packages: packages
244244
});
245245
});
246246
},
@@ -279,7 +279,7 @@ extend( Repo.prototype, {
279279
return fn( null, null );
280280
}
281281

282-
fn( null, package );
282+
fn( null, { "package.json": package } );
283283
}
284284
);
285285
},
@@ -302,14 +302,18 @@ extend( Repo.prototype, {
302302
return fn( null, null );
303303
}
304304

305+
this.parallel()( null, files );
306+
305307
var group = this.group();
306308
files.forEach(function( file ) {
307309
repo.getPackageJson( tag, file, group() );
308310
});
309311
},
310312

311313
// validate package.jsons
312-
function( error, packages ) {
314+
function( error, files, packages ) {
315+
var mappedPackages = {};
316+
313317
if ( error ) {
314318
return fn( error );
315319
}
@@ -325,9 +329,10 @@ extend( Repo.prototype, {
325329
if ( repo.validatePackageJson( packages[ i ], tag ).length ) {
326330
return fn( null, null );
327331
}
332+
mappedPackages[ files[ i ] ] = packages[ i ];
328333
}
329334

330-
fn( null, packages );
335+
fn( null, mappedPackages );
331336
}
332337
);
333338
}

0 commit comments

Comments
 (0)