-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfari.ts.bak
98 lines (85 loc) · 2.48 KB
/
fari.ts.bak
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import { Glob } from "bun";
const creatorScanner = new Glob("./catalog/creators/*/index.ts");
for await (const creatorFile of creatorScanner.scan({
cwd: process.cwd(),
onlyFiles: true,
})) {
// creator
const creatorSlug = creatorFile.split("/")[creatorFile.split("/").length - 2];
const creatorDefault = await import(creatorFile);
const creatorData = creatorDefault.default();
await Bun.write(
`./src/content/creators/${creatorSlug}.mdx`,
`
---
name: ${creatorData.name}
links:
${Object.entries(creatorData.links || {})
.map(([key, value]) => ` ${key}: ${value}`)
.join("\n")}
---
${creatorData.description || ""}
`.trim(),
);
// resources
const resourceScanner = new Glob(
`./catalog/creators/${creatorSlug}/*/index.ts`,
);
for await (const resourceFile of resourceScanner.scan({
cwd: process.cwd(),
onlyFiles: true,
})) {
const resourceSlug =
resourceFile.split("/")[resourceFile.split("/").length - 2];
const resourceDefault = await import(resourceFile);
const resourceData = resourceDefault.default();
// image
const png = Bun.file(
`./catalog/creators/${creatorSlug}/${resourceSlug}/image.png`,
);
const pngExists = await png.exists();
if (pngExists) {
await Bun.write(
`./src/content/resources/${creatorSlug}/${resourceSlug}/image.png`,
png,
);
}
const jpg = Bun.file(
`./catalog/creators/${creatorSlug}/${resourceSlug}/image.jpg`,
);
const jpgExists = await jpg.exists();
if (jpgExists) {
await Bun.write(
`./src/content/resources/${creatorSlug}/${resourceSlug}/image.jpg`,
jpg,
);
}
// md scanner
const mdScanner = new Glob(
`./catalog/creators/${creatorSlug}/${resourceSlug}/*.md`,
);
for await (const mdFile of mdScanner.scan({
cwd: process.cwd(),
onlyFiles: true,
})) {
const mdFileContent = await Bun.file(mdFile).text();
const fileNameBeforeExtension = mdFile.split("/").pop()?.split(".")[0];
await Bun.write(
`./src/content/resources/${creatorSlug}/${resourceSlug}/${fileNameBeforeExtension}.mdx`,
`
---
name: ${resourceData.name.replaceAll(":", "")}
creator: ${creatorSlug}
image: ${pngExists ? "./image.png" : jpgExists ? "./image.jpg" : ""}
license: ${resourceData.license || ""}
links:
${Object.entries(resourceData.links || {})
.map(([key, value]) => ` ${key}: ${value}`)
.join("\n")}
---
${mdFileContent}
`.trim(),
);
}
}
}