blog/bin/build.ts

32 lines
1007 B
TypeScript
Raw Normal View History

2024-06-27 04:22:58 +00:00
import { articles } from "../lib/tasks/articles.ts";
import { css } from "../lib/tasks/css.ts";
import { fonts } from "../lib/tasks/fonts.ts";
import { images } from "../lib/tasks/images.ts";
import { svg } from "../lib/tasks/svg.ts";
2024-06-27 08:58:54 +00:00
import { error } from "../lib/log.ts";
import { Task, wrapTask } from "../lib/task.ts";
2024-06-26 02:21:31 +00:00
2024-06-27 02:10:50 +00:00
import { argv, exit } from "node:process";
2024-06-27 06:51:56 +00:00
const TASKS = new Map<string, Task>(Object.entries({
2024-06-27 02:10:50 +00:00
articles: wrapTask("articles", articles),
css: wrapTask("css", css),
fonts: wrapTask("fonts", fonts),
images: wrapTask("images", images),
svg: wrapTask("svg", svg),
2024-06-27 06:51:56 +00:00
}));
2024-06-27 02:10:50 +00:00
const ALL_TASKS = ["fonts", "images", "svg", "css", "articles"];
const args = argv.slice(2);
2024-06-27 06:51:56 +00:00
await (args.length ? args : ALL_TASKS)
2024-06-27 04:22:58 +00:00
.map((task: string) => {
2024-06-27 06:51:56 +00:00
if (!TASKS.has(task)) {
2024-06-27 08:58:54 +00:00
error("Unknown task", { task });
2024-06-27 02:10:50 +00:00
exit(1);
}
2024-06-27 06:51:56 +00:00
return TASKS.get(task)!;
2024-06-27 02:10:50 +00:00
})
2024-06-27 06:51:56 +00:00
.reduce((prev: Promise<void>, cur: Task) => prev.then(cur), Promise.resolve());