Mallgenerering
English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands
Mallar genereras fran samma confique-schema som anvands vid runtime.
confique renderar sjalva mallinnehållet, inklusive dokumentationskommentarer,
standardvarden, obligatoriska falt och deklarerade miljovariabelnamn.
Anvand write_config_templates:
#![allow(unused)]
fn main() {
use rust_config_tree::write_config_templates;
write_config_templates::<AppConfig>("config.yaml", "config.example.yaml")?;
Ok::<(), Box<dyn std::error::Error + Send + Sync>>(())
}
Generera Draft 7 JSON Schemas for rotkonfigurationen och delade nastlade sektioner:
#![allow(unused)]
fn main() {
use rust_config_tree::write_config_schemas;
write_config_schemas::<AppConfig>("schemas/myapp.schema.json")?;
Ok::<(), Box<dyn std::error::Error + Send + Sync>>(())
}
Markera ett nastlat falt med #[schemars(extend("x-tree-split" = true))] nar
det ska genereras som en egen *.yaml-mall och ett eget
<section>.schema.json-schema. Omarkerade nastlade falt stannar i
foraldramallen och foraldraschemat.
Markera ett bladfalt med #[schemars(extend("x-env-only" = true))] nar vardet bara ska komma fran miljovariabler. Genererade mallar och JSON Schemas utelamnar env-only-falt, och foralderobjekt som blir tomma tas bort.
Genererade scheman utelamnar required-begransningar. IDE:er kan fortfarande
erbjuda komplettering, men partiella filer som log.yaml rapporterar
inte saknade rotfalt. Rotschemat kompletterar bara falt som hor hemma i
rotfilen; delade sektionsfalt utelamnas dar och kompletteras av sina egna
sektionsscheman. Befintliga falt kan fortfarande fa grundlaggande
editor-kontroller, som typ, enum och okanda properties som stods av det
genererade schemat. Genererade *.schema.json-filer avgor inte om ett konkret
faltvarde ar giltigt for programmet. Faltvardevalidering ska implementeras i kod
med #[config(validate = Self::validate)]; load_config och config-validate
kor den runtime-valideringen.
Bind dessa scheman fran genererade TOML-, YAML-, JSON- och JSON5-mallar:
#![allow(unused)]
fn main() {
use rust_config_tree::write_config_templates_with_schema;
write_config_templates_with_schema::<AppConfig>(
"config.toml",
"config.example.toml",
"schemas/myapp.schema.json",
)?;
Ok::<(), Box<dyn std::error::Error + Send + Sync>>(())
}
Rotmallar for TOML och YAML binder rotschemat och kompletterar inte delade
barnsektioners falt. Delade YAML-sektionsmallar binder sina sektionsscheman.
JSON- och JSON5-mallar far ett rotfalt $schema som VS Code kan kanna igen.
VS Code json.schemas ar fortfarande en alternativ bindningsvag.
Utdataformatet harleds fran utdatasokvagen:
.yamloch.ymlgenererar YAML..tomlgenererar TOML..jsonoch.json5genererar JSON5-kompatibla mallar.- okanda eller saknade filandelser genererar YAML.
Schemabindningar
Med schemasokvagen schemas/myapp.schema.json anvander genererade rotmallar:
#:schema ./schemas/myapp.schema.json
# yaml-language-server: $schema=./schemas/myapp.schema.json
Genererade sektionsmallar binder sektionsscheman:
# log.yaml
# yaml-language-server: $schema=./schemas/log.schema.json
Genererade JSON- och JSON5-mallar skriver ett rotfalt $schema som VS Code
kanner igen. Editor-installningar ar fortfarande valfria:
{
"json.schemas": [
{
"fileMatch": [
"/config.json",
"/config.*.json"
],
"url": "./schemas/myapp.schema.json"
}
]
}
Val av mallkalla
Mallgenerering valjer sitt kalltrad i denna ordning:
- Befintlig konfigurationssokvag.
- Befintlig utdatasokvag for mall.
- Utdatasokvagen behandlad som ett nytt tomt malltrad.
Det later ett projekt uppdatera mallar fran aktuella konfigurationsfiler, uppdatera en befintlig malluppsattning eller skapa en ny malluppsattning bara fran schemat.
Speglade include-trad
Om kallfilen deklarerar includes speglar genererade mallar dessa include-sokvagar under utdatakatalogen.
# config.yaml
include:
- server.yaml
Generering av config.example.yaml skriver:
config.example.yaml
server.yaml
Relativa include-mal speglas under utdatafilens foraldrakatalog. Absoluta include-mal forblir absoluta.
Opt-in-sektionsuppdelning
Nar en kallfil saknar includes kan craten harleda include-mal fran nastlade
schemasektioner markerade med x-tree-split. For ett schema med en markerad server-sektion kan en tom rotmallkalla
producera:
config.example.yaml
server.yaml
Rotmallen far ett include-block, och server.yaml innehaller bara
server-sektionen. Nastlade sektioner delas rekursivt bara nar de falten ocksa bar x-tree-split.