Files
blog/packages/@zblog/toolchain/src/zblog-toolchain.ts

33 lines
807 B
TypeScript

import * as fs from "fs";
import { destructivelyRecreateDirectory } from "./toolchain-helpers.js";
import { MenuManifest, Plugin, IPluginBuilder } from "./typings.js";
export type Paths = {
outputDirectory: string;
};
export class ToolchainBuilder {
private paths: Paths;
private plugins: Plugin[] = [];
private menuManifest: MenuManifest = [];
constructor(paths: Paths) {
this.paths = paths;
}
addPlugins(plugins: IPluginBuilder[]): ToolchainBuilder {
this.plugins = plugins.map((p) => p.build());
return this;
}
async build() {
destructivelyRecreateDirectory(this.paths.outputDirectory);
for (const plugin of this.plugins) {
await plugin({
menuManifest: this.menuManifest,
outputDirectory: this.paths.outputDirectory,
});
}
}
}