Skip to content

Commit 3417132

Browse files
committed
tests & depends_on
1 parent 4a21d7c commit 3417132

File tree

9 files changed

+2608
-7
lines changed

9 files changed

+2608
-7
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ var compose = new DockerodeCompose(docker);
3636

3737
## Tests
3838

39-
* `docker pull ubuntu:latest` to prepare your system for the tests.
4039
* Tests are implemented using `mocha` and `chai`. Run them with `npm test`.
4140

4241
## Examples

lib/services.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
const tools = require('./tools');
12

23
module.exports = async function (docker, projectName, recipe) {
34
var services = [];
4-
var serviceNames = Object.keys(recipe.services || []);
5+
var serviceNames = tools.sortServices(recipe);
56
for (var serviceName of serviceNames) {
67
var service = recipe.services[serviceName];
78

lib/tools.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module.exports = {
2+
'sortServices': function (recipe) {
3+
var order = [];
4+
var serviceNames = Object.keys(recipe.services || []);
5+
6+
while (order.length !== serviceNames.length) {
7+
for (var serviceName of serviceNames) {
8+
if(order.indexOf(serviceName) === -1) {
9+
insertService(serviceName, recipe.services[serviceName].depends_on || [], order)
10+
}
11+
}
12+
}
13+
return order;
14+
}
15+
}
16+
17+
function insertService(serviceName, depends_on, order) {
18+
var position = -1;
19+
for (var serviceDep of depends_on) {
20+
var p = order.indexOf(serviceDep);
21+
if (p === -1) return;
22+
if (p > position) position = p;
23+
}
24+
order.splice(position + 1, 0, serviceName);
25+
}

0 commit comments

Comments
 (0)