scaffolder-backend: added createTemporaryDirectory to action context

Signed-off-by: Johan Haals <johan.haals@gmail.com>
This commit is contained in:
Patrik Oldsberg
2021-02-23 16:35:43 +01:00
committed by Johan Haals
parent 459307b81d
commit 0f64c73474
2 changed files with 20 additions and 0 deletions
@@ -112,16 +112,31 @@ export class TaskWorker {
const stepOutputs: { [name: string]: JsonValue } = {};
// Keep track of all tmp dirs that are created by the action so we can remove them after
const tmpDirs = new Array<string>();
await action.handler({
logger: taskLogger,
logStream: stream,
parameters,
workspacePath,
async createTemporaryDirectory() {
const tmpDir = await fs.mkdtemp(
`${workspacePath}_step-${step.id}-`,
);
tmpDirs.push(tmpDir);
return tmpDir;
},
output(name: string, value: JsonValue) {
stepOutputs[name] = value;
},
});
// Remove all temporary directories that were created when executing the action
for (const tmpDir of tmpDirs) {
await fs.remove(tmpDir);
}
templateCtx.steps[step.id] = { output: stepOutputs };
await task.emitLog(`Finished step ${step.name}`, {
@@ -122,6 +122,11 @@ export type ActionContext = {
workspacePath: string;
parameters: { [name: string]: JsonValue };
output(name: string, value: JsonValue): void;
/**
* Creates a temporary directory for use by the action, which is then cleaned up automatically.
*/
createTemporaryDirectory(): Promise<string>;
};
export type TemplateAction = {