Skip to content

Commit d3cf6d9

Browse files
yunanwgclaude
andcommitted
fix: use profile_<lang>/ structure with sparse metadata overrides
Restore profile_<lang>/ directory structure from PR #155 for content modules. Slim down each profile's metadata.toml to sparse overrides that are deep-merged with root metadata.toml. Remove the separate profiles/ directory — overrides now live inside profile_<lang>/. Update cv.typ and letter.typ to deep-merge root + profile metadata. Update all docs to reflect profile_<lang>/ paths. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 09d3dfb commit d3cf6d9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+129
-129
lines changed

docs/web/docs/getting-started.md

Lines changed: 4 additions & 3 deletions

docs/web/docs/migration.md

Lines changed: 33 additions & 32 deletions

docs/web/docs/recipes.md

Lines changed: 23 additions & 31 deletions

template/cv.typ

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,18 @@
11
// Imports
22
#import "@preview/brilliant-cv:3.2.0": cv, deep-merge
3-
#let metadata = toml("./metadata.toml")
43

5-
// Profile override: deep-merge a sparse profile TOML on top of root config.
4+
// Load shared root config, then deep-merge with profile-specific overrides.
65
// Override via CLI: typst compile cv.typ --input profile=fr
7-
#let cv-profile = sys.inputs.at("profile", default: metadata.at("profile", default: none))
8-
#let metadata = if cv-profile != none {
9-
deep-merge(metadata, toml("./profiles/" + cv-profile + ".toml"))
10-
} else {
11-
metadata
12-
}
13-
14-
// Backward compat: --input language=xx still works as a final override
15-
#let cv-language = sys.inputs.at("language", default: none)
16-
#let metadata = if cv-language != none {
17-
metadata + (language: cv-language)
18-
} else {
19-
metadata
20-
}
6+
#let profile = sys.inputs.at("profile", default: "en")
7+
#let metadata = deep-merge(
8+
toml("./metadata.toml"),
9+
toml("profile_" + profile + "/metadata.toml"),
10+
)
2111

22-
#let import-modules(modules, lang: metadata.language) = {
12+
#let import-modules(modules) = {
2313
for module in modules {
2414
include {
25-
"modules_" + lang + "/" + module + ".typ"
15+
"profile_" + profile + "/" + module + ".typ"
2616
}
2717
}
2818
}
@@ -37,6 +27,7 @@
3727
// ),
3828
)
3929

30+
// Add, remove, or reorder modules to customize your CV content
4031
#import-modules((
4132
"education",
4233
"professional",

template/letter.typ

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,13 @@
11
// Imports
22
#import "@preview/brilliant-cv:3.2.0": letter, deep-merge
3-
#let metadata = toml("./metadata.toml")
43

5-
// Profile override: deep-merge a sparse profile TOML on top of root config.
4+
// Load shared root config, then deep-merge with profile-specific overrides.
65
// Override via CLI: typst compile letter.typ --input profile=fr
7-
#let letter-profile = sys.inputs.at("profile", default: metadata.at("profile", default: none))
8-
#let metadata = if letter-profile != none {
9-
deep-merge(metadata, toml("./profiles/" + letter-profile + ".toml"))
10-
} else {
11-
metadata
12-
}
13-
14-
// Backward compat: --input language=xx still works as a final override
15-
#let letter-language = sys.inputs.at("language", default: none)
16-
#let metadata = if letter-language != none {
17-
metadata + (language: letter-language)
18-
} else {
19-
metadata
20-
}
6+
#let profile = sys.inputs.at("profile", default: "en")
7+
#let metadata = deep-merge(
8+
toml("./metadata.toml"),
9+
toml("profile_" + profile + "/metadata.toml"),
10+
)
2111

2212

2313
#show: letter.with(

template/profile_de/metadata.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Profile: German — sparse override, deep-merged on top of root metadata.toml.
2+
# Only specify fields that differ from root. Everything else is inherited.
3+
language = "de"
4+
header_quote = "Erfahrener Datenanalyst sucht ab sofort eine Vollzeitstelle"
5+
cv_footer = "Lebenslauf"
6+
letter_footer = "Anschreiben"

0 commit comments

Comments
 (0)