feat(build): add vars parameter to transformer function.

This commit is contained in:
SamTolmay 2021-01-13 17:26:19 +02:00
parent 27c9114678
commit c0782fee22
3 changed files with 12 additions and 3 deletions

View File

@ -140,17 +140,21 @@ class RefBuilder {
`Invalid _ref definition ${JSON.stringify(refDef.original)} at file ${path}`
);
}
const parsedVars = JSON.parse(
JSON.stringify(refDef.vars),
refReviver.bind({ parsedFiles, vars })
);
// eslint-disable-next-line no-await-in-loop
let parsedFile = await this.recursiveParseFile({
path: refDef.path,
// Parse vars before passing down to parse new file
vars: JSON.parse(JSON.stringify(refDef.vars), refReviver.bind({ parsedFiles, vars })),
vars: parsedVars,
count: count + 1,
});
if (refDef.transformer) {
const transformerFile = await readFile(nodePath.resolve(process.cwd(), refDef.transformer));
const transformerFn = eval(transformerFile);
parsedFile = transformerFn(parsedFile);
parsedFile = transformerFn(parsedFile, parsedVars);
}
parsedFiles[refDef.id] = parsedFile;
}

View File

@ -682,6 +682,9 @@ test('buildRefs with transformer function', async () => {
_ref: {
path: 'target.yaml',
transformer: 'src/test/testBuildRefsTransform.js',
vars: {
var1: 'var1',
},
},
},
},
@ -697,5 +700,6 @@ test('buildRefs with transformer function', async () => {
expect(res).toEqual({
add: 43,
json: '{"a":1}',
var: 'var1',
});
});

View File

@ -2,10 +2,11 @@ function add(a, b) {
return a + b;
}
function transformer(obj) {
function transformer(obj, vars) {
return {
json: JSON.stringify(obj),
add: add(obj.a, 42),
var: vars.var1,
};
}