-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathgenerateog.java
More file actions
55 lines (49 loc) · 1.76 KB
/
generateog.java
File metadata and controls
55 lines (49 loc) · 1.76 KB
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
///usr/bin/env jbang "$0" "$@" ; exit $?
//JAVA 25
//DEPS com.fasterxml.jackson.core:jackson-databind:2.18.3
//DEPS com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.3
//SOURCES og/Palette.java
//SOURCES og/Layout.java
//SOURCES og/ContentLoader.java
//SOURCES og/SyntaxHighlighter.java
//SOURCES og/SvgRenderer.java
//SOURCES og/PngRenderer.java
//SOURCES og/FontManager.java
import module java.base;
import og.*;
import og.ContentLoader.Snippet;
/**
* Generate Open Graph SVG + PNG cards (1200×630) for each pattern.
* PNG is rendered directly via Graphics2D (no Batik).
*
* Usage: jbang html-generators/generateog.java [category/slug]
* No arguments → generate all patterns.
*/
static final String OUTPUT_DIR = "site/og";
void main(String... args) throws Exception {
FontManager.ensureFonts();
var allSnippets = ContentLoader.loadAllSnippets();
IO.println("Loaded %d snippets".formatted(allSnippets.size()));
// Filter to a single slug if provided
Collection<Snippet> targets;
if (args.length > 0) {
var key = args[0];
if (!allSnippets.containsKey(key)) {
IO.println("Unknown pattern: " + key);
IO.println("Available: " + String.join(", ", allSnippets.keySet()));
System.exit(1);
}
targets = List.of(allSnippets.get(key));
} else {
targets = allSnippets.values();
}
int count = 0;
for (var s : targets) {
var dir = Path.of(OUTPUT_DIR, s.category());
Files.createDirectories(dir);
Files.writeString(dir.resolve(s.slug() + ".svg"), SvgRenderer.generate(s));
PngRenderer.generate(s, dir.resolve(s.slug() + ".png"));
count++;
}
IO.println("Generated %d SVG+PNG card(s) in %s/".formatted(count, OUTPUT_DIR));
}