summaryrefslogtreecommitdiff
path: root/build.ts
blob: f399999dab151417d780898999d37e3a7cb9c202 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { BuildOptions, build } from "esbuild";
import { existsSync } from "node:fs";
import { constants, copyFile, mkdir, readdir, rm } from "node:fs/promises";
import { join } from "node:path";

const distDir = "dist";
const contentDir = join(distDir, "static");
const teawieArchiveDir = "Teawie-Archive/teawie-media/Original Teawies";

const checkAndCreate = async (dir: string) => {
	if (!existsSync(dir)) {
		await mkdir(dir, { recursive: true });
	} else {
		for (const f of await readdir(dir)) {
			await rm(join(dir, f), { recursive: true, force: true });
		}
	}
};

await checkAndCreate(distDir);
await checkAndCreate(contentDir);
await checkAndCreate(join(contentDir, "teawie"));

const wies = (await readdir(teawieArchiveDir)).filter((wie) => {
	const fileExt = wie.split(".").pop();
	return !["ini", "txt"].includes(fileExt ?? "");
});

for (const f of wies) {
	await copyFile(join(teawieArchiveDir, f), join(contentDir, "teawie", f), constants.COPYFILE_FICLONE);
}

const define = {
	WIES: JSON.stringify(wies.map((wie) => wie.replace(" ", "%20"))),
	WIE_DIR: JSON.stringify("static/teawie"),
};

const options = {
	entryPoints: ["src/index.ts"],
	outfile: join(distDir, "_worker.js"),
	define,
	format: "esm",
	bundle: true,
	minify: true,
} satisfies BuildOptions;

await build(options);