Skip to content

Commit

Permalink
feat: add TOML schema (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
mintyfrankie authored Jul 22, 2024
1 parent d8247d0 commit f1eda13
Show file tree
Hide file tree
Showing 2 changed files with 227 additions and 37 deletions.
188 changes: 188 additions & 0 deletions metadata.toml.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "brilliant-cv Metadata Schema",
"type": "object",
"properties": {
"language": {
"type": "string",
"pattern": "^[a-z]{2}$",
"description": "Value must match folder suffix; i.e 'zh' -> './modules_zh'"
},
"layout": {
"type": "object",
"properties": {
"awesome_color": {
"type": "string",
"description": "Optional values: skyblue, red, nephritis, concrete, darknight. You can also use a custom color by hex code i.e. '#1E90FF'",
"enum": ["skyblue", "red", "nephritis", "concrete", "darknight"],
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
},
"before_section_skip": {
"type": "string",
"description": "Spacing before sections",
"pattern": "^[0-9]+pt$"
},
"before_entry_skip": {
"type": "string",
"description": "Spacing before entries",
"pattern": "^[0-9]+pt$"
},
"before_entry_description_skip": {
"type": "string",
"description": "Spacing before entry descriptions",
"pattern": "^[0-9]+pt$"
},
"header": {
"type": "object",
"properties": {
"header_align": {
"type": "string",
"description": "Optional values: left, center, right",
"enum": ["left", "center", "right"]
},
"display_profile_photo": {
"type": "boolean",
"description": "Display profile photo or not"
},
"profile_photo_path": {
"type": "string",
"description": "Path to the profile photo"
}
},
"required": ["header_align", "display_profile_photo", "profile_photo_path"]
},
"entry": {
"type": "object",
"properties": {
"display_entry_society_first": {
"type": "boolean",
"description": "Display company in bold or position in bold"
},
"display_logo": {
"type": "boolean",
"description": "Display organisation logo or not"
}
},
"required": ["display_entry_society_first", "display_logo"]
}
},
"required": ["awesome_color", "before_section_skip", "before_entry_skip", "before_entry_description_skip", "header", "entry"]
},
"inject": {
"type": "object",
"properties": {
"inject_ai_prompt": {
"type": "boolean",
"description": "Inject AI prompt or not"
},
"inject_keywords": {
"type": "boolean",
"description": "Inject keywords or not"
},
"injected_keywords_list": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["inject_ai_prompt", "inject_keywords", "injected_keywords_list"]
},
"personal": {
"type": "object",
"properties": {
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"info": {
"type": "object",
"properties": {
"github": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
},
"linkedin": {
"type": "string"
},
"gitlab": {
"type": "string"
},
"homepage": {
"type": "string"
},
"orcid": {
"type": "string"
},
"researchgate": {
"type": "string"
},
"extraInfo": {
"type": "string"
}
},
"patternProperties": {
"^custom-[0-9]+$": {
"type": "object",
"properties": {
"awesomeIcon": {
"type": "string"
},
"text": {
"type": "string"
},
"link": {
"type": "string"
}
},
"required": ["awesomeIcon", "text", "link"]
}
},
"additionalProperties": false
}
},
"required": ["first_name", "last_name", "info"]
},
"lang": {
"type": "object",
"patternProperties": {
"^[a-z]{2}$": {
"type": "object",
"properties": {
"header_quote": {
"type": "string"
},
"cv_footer": {
"type": "string"
},
"letter_footer": {
"type": "string"
}
},
"required": ["header_quote", "cv_footer", "letter_footer"]
},
"^non_latin$": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"font": {
"type": "string"
}
},
"required": ["name", "font"]
}
}
}
},
"required": ["language", "layout", "inject", "personal", "lang"]
}

76 changes: 39 additions & 37 deletions template/metadata.toml
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
# INFO: value must matches folder suffix; i.e "zh" -> "./modules_zh"
#:schema https://raw.githubusercontent.com/mintyfrankie/brilliant-CV/main/metadata.toml.schema.json

# Set the output language
# INFO: value must matches folder suffix; i.e "zh" -> "./modules_zh"
language = "en"

[layout]
# Optional values: skyblue, red, nephritis, concrete, darknight
# You can also use a custom color by hex code i.e. "#1E90FF"
awesome_color = "skyblue"
# Optional values: skyblue, red, nephritis, concrete, darknight
# You can also use a custom color by hex code i.e. "#1E90FF"
awesome_color = "skyblue"

# Skips are for controlling the spacing between sections and entries
before_section_skip = "1pt"
before_entry_skip = "1pt"
before_entry_description_skip = "1pt"
# Skips are for controlling the spacing between sections and entries
before_section_skip = "1pt"
before_entry_skip = "1pt"
before_entry_description_skip = "1pt"

[layout.header]
# Optional values: left, center, right
header_align = "left"
[layout.header]
# Optional values: left, center, right
header_align = "left"

# Decide if you want to display profile photo or not
display_profile_photo = true
profile_photo_path = "template/src/avatar.png"
# Decide if you want to display profile photo or not
display_profile_photo = true
profile_photo_path = "template/src/avatar.png"

[layout.entry]
# Decide if you want to put your company in bold or your position in bold
display_entry_society_first = true
[layout.entry]
# Decide if you want to put your company in bold or your position in bold
display_entry_society_first = true

# Decide if you want to display organisation logo or not
display_logo = true
# Decide if you want to display organisation logo or not
display_logo = true

[inject]
# Decide if you want to inject AI prompt or not
Expand All @@ -38,24 +41,23 @@ before_entry_description_skip = "1pt"
first_name = "John"
last_name = "Doe"

# The order of this section will affect how the entries are displayed
# The custom value is for any additional information you want to add, name it as custom-1, custom-2, etc.
[personal.info]
github = "mintyfrankie"
phone = "+33 6 12 34 56 78"
email = "[email protected]"
linkedin = "johndoe"
# gitlab = "mintyfrankie"
# homepage = "jd.me.org"
# orcid = "0000-0000-0000-0000"
# researchgate = "John-Doe"
# extraInfo = "I am a cool kid"
[personal.info.custom-1]
# image = "" # Example: image("./path/to/image.png")
awesomeIcon = "graduation-cap" # Example: "graduation-cap" see https://typst.app/universe/package/fontawesome/
text = "PhD"
link = "https://www.example.com"

# The order of this section will affect how the entries are displayed
# The custom value is for any additional information you want to add, name it as custom-1, custom-2, etc.
[personal.info]
github = "mintyfrankie"
phone = "+33 6 12 34 56 78"
email = "[email protected]"
linkedin = "johndoe"
# gitlab = "mintyfrankie"
# homepage = "jd.me.org"
# orcid = "0000-0000-0000-0000"
# researchgate = "John-Doe"
# extraInfo = "I am a cool kid"
[personal.info.custom-1]
# image = "" # Example: image("./path/to/image.png")
awesomeIcon = "graduation-cap" # Example: "graduation-cap" see https://typst.app/universe/package/fontawesome/
text = "PhD"
link = "https://www.example.com"

# add a new section if you want to include the language of your choice
# i.e. [[lang.ru]]
Expand Down

0 comments on commit f1eda13

Please sign in to comment.