Skip to content

Commit 2ef102b

Browse files
update replacement of composition vars to work when included in the strings
1 parent dc1121e commit 2ef102b

File tree

4 files changed

+76
-2
lines changed

4 files changed

+76
-2
lines changed

lib/transformers/DockerCompose.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,11 @@ var injectVarsToObject = function(object, vars) {
258258
iterate(object[property]);
259259
else {
260260
var field = object[property];
261-
var replaceWith = _.find(vars, {key: field});
261+
var replaceWith = _.find(vars, function(v){ // jshint ignore:line
262+
return field.includes(v.key);
263+
});
262264
if (replaceWith){
263-
object[property] = replaceWith.value;
265+
object[property] = object[property].replace(replaceWith.key, replaceWith.value);
264266
}
265267
}
266268
}

test/config/transform1.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version: '2'
2+
services:
3+
web:
4+
image: jim/jimbob
5+
environment:
6+
ASD: $ASD

test/config/transform2.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version: '2'
2+
services:
3+
web:
4+
image: jim/jimbob
5+
environment:
6+
envvar: this$ASDvalue

test/tests.unit.spec.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,4 +357,64 @@ describe("Transform composition", function () {
357357
done();
358358
});
359359
});
360+
361+
it("should run transform handler after replacement of composition vars", function () {
362+
var handlers = {
363+
image: function (info) {
364+
expect(info.result.web.environment.ASD).to.equal("thiisthevalue");
365+
}
366+
};
367+
var transformer = new Transformer({
368+
file: path.join(__dirname, 'config/transform1.yml'),
369+
handlers: handlers,
370+
compositionVars: [{key: 'ASD', value: 'thiisthevalue'}]
371+
});
372+
373+
var expected = {
374+
"version": "2",
375+
"services": {
376+
"web": {
377+
"environment": {
378+
"ASD": "thiisthevalue"
379+
},
380+
"image": "jim/jimbob"
381+
}
382+
}
383+
};
384+
385+
return transformer.fileToCompose()
386+
.then(function (result) {
387+
388+
result = YAML.parse(result);
389+
390+
expect(result).to.deep.equal(expected);
391+
});
392+
});
393+
394+
it("should replace composition variables even if it is a part of a string", function () {
395+
var transformer = new Transformer({
396+
file: path.join(__dirname, 'config/transform2.yml'),
397+
compositionVars: [{key: 'ASD', value: 'is'}]
398+
});
399+
400+
var expected = {
401+
"version": "2",
402+
"services": {
403+
"web": {
404+
"environment": {
405+
"envvar": "thisisvalue"
406+
},
407+
"image": "jim/jimbob"
408+
}
409+
}
410+
};
411+
412+
return transformer.fileToCompose()
413+
.then(function (result) {
414+
415+
result = YAML.parse(result);
416+
417+
expect(result).to.deep.equal(expected);
418+
});
419+
});
360420
});

0 commit comments

Comments
 (0)