@baseplate-dev/sync
Version:
Library for syncing Baseplate descriptions
39 lines • 1.69 kB
JavaScript
import { GeneratorTaskOutputBuilder } from '#src/output/generator-task-output.js';
export function createTaskTestRunner(task, { taskId = 'test-task#main', generatorId = '@baseplate-dev/test-runner:test-generator', generatorInfo = {
name: 'test-generator',
baseDirectory: '/',
}, templateMetadataOptions, } = {}) {
return {
async run(dependencies, executeOnProviders) {
// run init step
const initResult = task.run(dependencies, {
taskId,
});
const providers = initResult && 'providers' in initResult ? initResult.providers : {};
await Promise.resolve(executeOnProviders?.(providers));
const builder = new GeneratorTaskOutputBuilder({
generatorInfo,
generatorId,
templateMetadataOptions,
});
const buildResult = await Promise.resolve(initResult?.build?.(builder));
return {
exports: providers,
outputs: buildResult,
builderOutputs: builder.output,
getFileOutputContents(path) {
const contents = builder.output.files.get(path)?.contents;
if (!contents)
return contents;
return typeof contents === 'string'
? contents
: contents.toString('utf8');
},
getPostWriteCommand(command) {
return builder.output.postWriteCommands.find((cmd) => cmd.command === command);
},
};
},
};
}
//# sourceMappingURL=test-runner.js.map