Mallien luonti
English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands
Mallit luodaan samasta confique-skeemasta, jota kaytetaan runtimessa. confique renderoi varsinaisen mallisisallon, mukaan lukien doc-kommentit, oletusarvot, pakolliset kentat ja maaritellyt ymparistomuuttujien nimet.
Kayta write_config_templates-funktiota:
#![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>>(())
}
Luo Draft 7 JSON Schema -skeemat juurikonfiguraatiolle ja jaetuille sisakkaisille osioille:
#![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>>(())
}
Merkitse sisakkainen kentta #[schemars(extend("x-tree-split" = true))]-
attribuutilla, kun se tulee luoda omana *.yaml-mallina ja omana
<section>.schema.json-skeemana. Merkitsemattomat sisakkaiset kentat pysyvat
emomallissa ja emoskeemassa.
Merkitse lehtikentta #[schemars(extend("x-env-only" = true))], kun arvon tulee tulla vain ymparistomuuttujista. Luodut mallit ja JSON Schema -skeemat jattavat env-only-kentat pois, ja niiden takia tyhjiksi jaavat ylaobjektit poistetaan.
Luodut skeemat jattavat required-rajoitteet pois. IDEt voivat silti tarjota taydennysta, mutta osittaiset tiedostot kuten log.yaml eivat ilmoita puuttuvista juurikentista. Juuriskeema taydentaa vain juuritiedostoon kuuluvat kentat; sisakkaisten osioiden kentat jatetaan siella pois ja taydennetaan niiden omilla osioskeemoilla. Paikalla olevat kentat voivat yha saada editorin perustarkistuksia, kuten luodun skeeman tukemat tyyppi-, enum- ja tuntemattomien ominaisuuksien tarkistukset. Luodut *.schema.json-tiedostot eivat paata, onko konkreettinen kentan arvo sovellukselle kelvollinen. Kentta-arvojen validointi toteutetaan koodissa #[config(validate = Self::validate)]-attribuutilla; load_config ja config-validate suorittavat sen runtime-validoinnin.
Sido nama skeemat luoduista TOML-, YAML-, JSON- ja JSON5-malleista:
#![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>>(())
}
TOML- ja YAML-juurimallit sitovat juuriskeeman eivatka taydenna jaettujen
lapsiosioiden kenttia. Jaetut osio-YAML-mallit sitovat oman osioskeemansa.
JSON- ja JSON5-mallit saavat juuritason $schema-kentan, jonka VS Code
tunnistaa. VS Coden json.schemas on edelleen vaihtoehtoinen sidontatapa.
Tulostemuoto paatellaan tulostepolusta:
.yamlja.ymltuottavat YAMLia..tomltuottaa TOMLia..jsonja.json5tuottavat JSON5-yhteensopivia malleja.- tuntemattomat tai puuttuvat paatteet tuottavat YAMLia.
Skeemasidonnat
Skeemapolulla schemas/myapp.schema.json luodut juurimallit kayttavat:
#:schema ./schemas/myapp.schema.json
# yaml-language-server: $schema=./schemas/myapp.schema.json
Luodut osiomallit sitovat osioskeemat:
# log.yaml
# yaml-language-server: $schema=./schemas/log.schema.json
Luodut JSON- ja JSON5-mallit kirjoittavat juuritason $schema-kentan, jonka
VS Code tunnistaa. Editoriasetukset ovat edelleen valinnaisia:
{
"json.schemas": [
{
"fileMatch": [
"/config.json",
"/config.*.json"
],
"url": "./schemas/myapp.schema.json"
}
]
}
Mallilahteen valinta
Mallien luonti valitsee lahdepuunsa tassa jarjestyksessa:
- Olemassa oleva konfiguraatiopolku.
- Olemassa oleva tulostemallipolku.
- Tulostepolku uutena tyhjana mallipuuna.
Tama antaa projektille mahdollisuuden paivittaa malleja nykyisista konfiguraatiotiedostoista, paivittaa olemassa olevan mallijoukon tai luoda uuden mallijoukon pelkasta skeemasta.
Peilatut include-puut
Jos lahdetiedosto maarittelee includet, luodut mallit peilaavat nama include-polut tulostehakemiston alle.
# config.yaml
include:
- server.yaml
config.example.yaml-tiedoston luonti kirjoittaa:
config.example.yaml
server.yaml
Suhteelliset include-kohteet peilataan tulostetiedoston emohakemiston alle. Absoluuttiset include-kohteet pysyvat absoluuttisina.
Opt-in-osioiden jakaminen
Kun lahdetiedostolla ei ole includeja, crate voi johtaa include-kohteet x-tree-split-merkityista sisakkaisista skeemaosioista. Skeemalle, jossa on merkitty server-osio, tyhja juurimallilahde voi tuottaa:
config.example.yaml
server.yaml
Juurimalli saa include-lohkon, ja server.yaml sisaltaa vain server-osion. Sisakkaiset osiot jaetaan rekursiivisesti vain, kun myos niilla kentilla on x-tree-split.