Skip to content

Commit

Permalink
feat: expose kiln in dependencies (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
patrickhulce committed Feb 27, 2018
1 parent 058d709 commit 9fc6196
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
12 changes: 7 additions & 5 deletions packages/klay-kiln/lib/kiln.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,22 @@ module.exports = function () {
'extension determineDependencies must be a function');
}

function createDeps(listOfDependencies, modelName) {
function createDeps(listOfDependencies, modelName, kiln) {
return _(listOfDependencies).
map(function (item) {
var parts = item.split(':');
var model = parts.length > 1 ? parts[0] : modelName;
var extension = parts.length > 1 ? parts[1] : parts[0];
return {name: item, value: bake(model, extension)};
return {name: item, value: bake.call(kiln, model, extension)};
}).
keyBy('name').
mapValues('value').
assign({kiln}).
value();
}

function bake(modelName, extension, options) {
var kilnRef = this;
var modelDef = getModelDefOrThrow(modelName);
if (typeof extension === 'string') {
var extensionName = extension;
Expand All @@ -62,7 +64,7 @@ module.exports = function () {

var determineDeps = _.get(extension, 'determineDependencies', _.noop);
var dependsOn = determineDeps(modelDef, options) || [];
var dependencies = createDeps(dependsOn, modelName);
var dependencies = createDeps(dependsOn, modelName, kilnRef);
var result = extension.bake(modelDef, options, dependencies);

var prebakedOfModel = prebaked[modelName] || {};
Expand Down Expand Up @@ -110,13 +112,13 @@ module.exports = function () {
return _(getExtensions(modelDef)).
map(item => _.assign({
name: item.extension.name,
result: bake(modelName, item.extension, item.options),
result: bake.call(kiln, modelName, item.extension, item.options),
})).
keyBy('name').
mapValues('result').
value();
} else {
return bake(modelName, extension, options);
return bake.call(kiln, modelName, extension, options);
}
},
getModels: function () {
Expand Down
6 changes: 3 additions & 3 deletions packages/klay-kiln/test/kiln.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,21 +182,21 @@ defineTest('kiln.js', function (Kiln) {
dep1Args.should.have.deep.property('0.model', userModel);
dep1Args.should.have.deep.property('0.metadata', userOptions);
dep1Args.should.have.property('1').eql(dep1Options);
dep1Args.should.have.property('2').eql({});
dep1Args.should.have.property('2').eql({kiln});

var dep2Args = dep2Stub.firstCall.args;
dep2Args.should.have.deep.property('0.name', 'photo');
dep2Args.should.have.deep.property('0.model', photoModel);
dep2Args.should.have.deep.property('0.metadata').eql({});
dep2Args.should.have.property('1').eql(dep2Options);
dep2Args.should.have.property('2').eql({});
dep2Args.should.have.property('2').eql({kiln});

var bakeArgs = bakeStub.firstCall.args;
bakeArgs.should.have.deep.property('0.name', 'user');
bakeArgs.should.have.deep.property('0.model', userModel);
bakeArgs.should.have.deep.property('0.metadata', userOptions);
bakeArgs.should.have.property('1').eql(extensionOptions);
bakeArgs.should.have.property('2').eql({dep1: {result: 'dep1'}, 'photo:dep2': {result: 'dep2'}});
bakeArgs.should.have.property('2').eql({kiln, dep1: {result: 'dep1'}, 'photo:dep2': {result: 'dep2'}});
});

it('should cache results of already baked extensions', function () {
Expand Down

0 comments on commit 9fc6196

Please sign in to comment.