Skip to content

Commit 0cd758c

Browse files
author
developerworks
committed
Sync docs and add workspace root READMEs
- Bump version references from 0.1 to 0.2 across all translations - Migrate CLI override examples to ConfigOverrides derive macro - Document ConfigSchema derive macro in schema.md and all READMEs - Fix transparent-sections.md: remove into_vec, Deref claims - Add bilingual workspace root README (en/zh) with index page
1 parent a7ac30b commit 0cd758c

27 files changed

Lines changed: 840 additions & 392 deletions

README.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# rust-config-tree workspace
2+
3+
This workspace contains the **rust-config-tree** family of crates: a Rust library
4+
for recursive include tree utilities for layered configuration files.
5+
6+
### Crates
7+
8+
| Crate | Description | Path |
9+
| ------------------------- | --------------------------------------------------------------- | -------------------------- |
10+
| [rust-config-tree] | Recursive include tree, CLI helpers, template/schema generation | `rust-config-tree/` |
11+
| [rust-config-tree-macros] | Procedural macros (`ConfigOverrides`, `ConfigSchema`) | `rust-config-tree-macros/` |
12+
13+
### Quick links
14+
15+
- [📖 Manual](https://developerworks.github.io/rust-config-tree/) — English and 10 translated editions
16+
- [📦 rust-config-tree on crates.io](https://crates.io/crates/rust-config-tree)
17+
- [📦 rust-config-tree-macros on crates.io](https://crates.io/crates/rust-config-tree-macros)
18+
- [📘 API docs](https://docs.rs/rust-config-tree)
19+
20+
### Usage
21+
22+
Add to your `Cargo.toml`:
23+
24+
```toml
25+
[dependencies]
26+
rust-config-tree = "0.2"
27+
```
28+
29+
For the derive macros:
30+
31+
```toml
32+
[dependencies]
33+
rust-config-tree = { version = "0.2", features = ["macros"] }
34+
```
35+
36+
### Development
37+
38+
Build from source:
39+
40+
```bash
41+
cargo build
42+
```
43+
44+
Run tests:
45+
46+
```bash
47+
cargo test
48+
```
49+
50+
Publish a crate (from workspace root):
51+
52+
```bash
53+
cargo publish -p rust-config-tree
54+
cargo publish -p rust-config-tree-macros
55+
```
56+
57+
### License
58+
59+
This project is licensed under [MIT OR Apache-2.0].
60+
61+
[rust-config-tree]: https://crates.io/crates/rust-config-tree
62+
[rust-config-tree-macros]: https://crates.io/crates/rust-config-tree-macros
63+
[MIT OR Apache-2.0]: https://github.com/developerworks/rust-config-tree#license

README.zh.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# rust-config-tree workspace
2+
3+
本 workspace(工作区)包含 **rust-config-tree** 系列 crate(包),
4+
一个为分层配置文件提供递归包含树工具的 Rust 库。
5+
6+
### Crate(包)
7+
8+
| Crate | 说明 | 路径 |
9+
| ------------------------- | ------------------------------------------- | -------------------------- |
10+
| [rust-config-tree] | 递归包含树、CLI 辅助、模板/Schema 生成 | `rust-config-tree/` |
11+
| [rust-config-tree-macros] | 过程宏(`ConfigOverrides``ConfigSchema`| `rust-config-tree-macros/` |
12+
13+
### 快速链接
14+
15+
- [📖 手册](https://developerworks.github.io/rust-config-tree/) — 英文及 10 种语言译本
16+
- [📦 rust-config-tree on crates.io](https://crates.io/crates/rust-config-tree)
17+
- [📦 rust-config-tree-macros on crates.io](https://crates.io/crates/rust-config-tree-macros)
18+
- [📘 API 文档](https://docs.rs/rust-config-tree)
19+
20+
### 使用方式
21+
22+
`Cargo.toml` 中添加:
23+
24+
```toml
25+
[dependencies]
26+
rust-config-tree = "0.2"
27+
```
28+
29+
如需派生宏:
30+
31+
```toml
32+
[dependencies]
33+
rust-config-tree = { version = "0.2", features = ["macros"] }
34+
```
35+
36+
### 开发
37+
38+
从源码构建:
39+
40+
```bash
41+
cargo build
42+
```
43+
44+
运行测试:
45+
46+
```bash
47+
cargo test
48+
```
49+
50+
发布 crate(在 workspace 根目录执行):
51+
52+
```bash
53+
cargo publish -p rust-config-tree
54+
cargo publish -p rust-config-tree-macros
55+
```
56+
57+
### 许可证
58+
59+
本项目使用 [MIT OR Apache-2.0] 许可证。
60+
61+
[rust-config-tree]: https://crates.io/crates/rust-config-tree
62+
[rust-config-tree-macros]: https://crates.io/crates/rust-config-tree-macros
63+
[MIT OR Apache-2.0]: https://github.com/developerworks/rust-config-tree#license

rust-config-tree/README.de.md

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ und `ConfigSchema` implementieren, um das Include-Feld des Schemas offenzulegen.
3838

3939
```toml
4040
[dependencies]
41-
rust-config-tree = "0.1"
41+
rust-config-tree = "0.2"
4242
confique = { version = "0.4", features = ["yaml", "toml", "json5"] }
4343
figment = { version = "0.10", features = ["yaml", "toml", "json", "env"] }
4444
schemars = { version = "1", features = ["derive"] }
@@ -48,9 +48,37 @@ clap = { version = "4", features = ["derive"] }
4848

4949
## Konfigurationsschema
5050

51-
Das Anwendungsschema besitzt das Include-Feld. `rust-config-tree` benoetigt nur
52-
einen kleinen Adapter, der Includes aus der zwischengeschalteten
53-
`confique`-Schicht extrahiert.
51+
Der einfachste Weg, das Schema anzubinden, ist die `ConfigSchema`-Ableitung
52+
neben `confique::Config`. Das Ableitungsmakro erwartet ein Feld namens
53+
`include` vom Typ `Vec<PathBuf>` mit einem `#[config(default = [])]`-Attribut:
54+
55+
```rust
56+
use confique::Config;
57+
use schemars::JsonSchema;
58+
use rust_config_tree::ConfigSchema;
59+
60+
#[derive(Debug, Config, JsonSchema, ConfigSchema)]
61+
struct AppConfig {
62+
#[config(default = [])]
63+
include: Vec<std::path::PathBuf>,
64+
65+
#[config(default = "paper")]
66+
mode: String,
67+
68+
#[config(nested)]
69+
#[schemars(extend("x-tree-split" = true))]
70+
server: ServerConfig,
71+
}
72+
73+
#[derive(Debug, Config, JsonSchema)]
74+
struct ServerConfig {
75+
#[config(default = 8080)]
76+
port: u16,
77+
}
78+
```
79+
80+
Fuer Schemata mit einem anderen Include-Feldnamen oder einer benutzerdefinierten
81+
Include-Logik implementieren Sie das Trait manuell:
5482

5583
```rust
5684
use std::path::PathBuf;
@@ -59,6 +87,9 @@ use confique::Config;
5987
use schemars::JsonSchema;
6088
use rust_config_tree::ConfigSchema;
6189

90+
#[derive(Debug, Config, JsonSchema)]
91+
struct AppConfig {
92+
6293
#[derive(Debug, Config, JsonSchema)]
6394
struct AppConfig {
6495
#[config(default = [])]

rust-config-tree/README.es.md

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ implementando `ConfigSchema` para exponer el campo de includes del esquema.
3838

3939
```toml
4040
[dependencies]
41-
rust-config-tree = "0.1"
41+
rust-config-tree = "0.2"
4242
confique = { version = "0.4", features = ["yaml", "toml", "json5"] }
4343
figment = { version = "0.10", features = ["yaml", "toml", "json", "env"] }
4444
schemars = { version = "1", features = ["derive"] }
@@ -48,9 +48,37 @@ clap = { version = "4", features = ["derive"] }
4848

4949
## Esquema de configuración
5050

51-
El esquema de la aplicación es dueño del campo de includes. `rust-config-tree`
52-
solo necesita un pequeño adaptador que extrae los includes de la capa
53-
intermedia de `confique`.
51+
La forma mas sencilla de conectar el esquema es derivar `ConfigSchema` junto
52+
con `confique::Config`. La macro derivada espera un campo llamado `include` de
53+
tipo `Vec<PathBuf>` con un atributo `#[config(default = [])]`:
54+
55+
```rust
56+
use confique::Config;
57+
use schemars::JsonSchema;
58+
use rust_config_tree::ConfigSchema;
59+
60+
#[derive(Debug, Config, JsonSchema, ConfigSchema)]
61+
struct AppConfig {
62+
#[config(default = [])]
63+
include: Vec<std::path::PathBuf>,
64+
65+
#[config(default = "paper")]
66+
mode: String,
67+
68+
#[config(nested)]
69+
#[schemars(extend("x-tree-split" = true))]
70+
server: ServerConfig,
71+
}
72+
73+
#[derive(Debug, Config, JsonSchema)]
74+
struct ServerConfig {
75+
#[config(default = 8080)]
76+
port: u16,
77+
}
78+
```
79+
80+
Para esquemas que usan un nombre de campo include diferente o logica de
81+
include personalizada, implemente el trait manualmente:
5482

5583
```rust
5684
use std::path::PathBuf;

rust-config-tree/README.fi.md

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Sovellukset tarjoavat skeemansa johtamalla `confique::Config`-traitin ja toteutt
3232

3333
```toml
3434
[dependencies]
35-
rust-config-tree = "0.1"
35+
rust-config-tree = "0.2"
3636
confique = { version = "0.4", features = ["yaml", "toml", "json5"] }
3737
figment = { version = "0.10", features = ["yaml", "toml", "json", "env"] }
3838
schemars = { version = "1", features = ["derive"] }
@@ -42,7 +42,34 @@ clap = { version = "4", features = ["derive"] }
4242

4343
## Konfiguraatioskeema
4444

45-
Sovelluksen skeema omistaa include-kentan. `rust-config-tree` tarvitsee vain pienen sovittimen, joka poimii includet valiaikaisesta `confique`-kerroksesta.
45+
Yksinkertaisin tapa kytkea skeema on johtaa `ConfigSchema` `confique::Config`-rinnalla. Johdannainen makro odottaa kenttaa nimelta `include`, tyypilta `Vec<PathBuf>`, jossa on `#[config(default = [])]`-attribuutti:
46+
47+
```rust
48+
use confique::Config;
49+
use schemars::JsonSchema;
50+
use rust_config_tree::ConfigSchema;
51+
52+
#[derive(Debug, Config, JsonSchema, ConfigSchema)]
53+
struct AppConfig {
54+
#[config(default = [])]
55+
include: Vec<std::path::PathBuf>,
56+
57+
#[config(default = "paper")]
58+
mode: String,
59+
60+
#[config(nested)]
61+
#[schemars(extend("x-tree-split" = true))]
62+
server: ServerConfig,
63+
}
64+
65+
#[derive(Debug, Config, JsonSchema)]
66+
struct ServerConfig {
67+
#[config(default = 8080)]
68+
port: u16,
69+
}
70+
```
71+
72+
Skeemoille, jotka kayttavat eri include-kentan nimea tai omaa include-logiikkaa, toteuta trait manuaalisesti:
4673

4774
```rust
4875
use std::path::PathBuf;

rust-config-tree/README.fr.md

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ implementant `ConfigSchema` pour exposer le champ d'inclusion du schema.
4141

4242
```toml
4343
[dependencies]
44-
rust-config-tree = "0.1"
44+
rust-config-tree = "0.2"
4545
confique = { version = "0.4", features = ["yaml", "toml", "json5"] }
4646
figment = { version = "0.10", features = ["yaml", "toml", "json", "env"] }
4747
schemars = { version = "1", features = ["derive"] }
@@ -51,9 +51,37 @@ clap = { version = "4", features = ["derive"] }
5151

5252
## Schema de configuration
5353

54-
Le schema de votre application possede le champ d'inclusion. `rust-config-tree`
55-
n'a besoin que d'un petit adaptateur qui extrait les inclusions depuis la couche
56-
intermediaire `confique`.
54+
La facon la plus simple de brancher le schema est de deriver `ConfigSchema` en
55+
plus de `confique::Config`. La macro derivee attend un champ nomme `include` de
56+
type `Vec<PathBuf>` avec un attribut `#[config(default = [])]`:
57+
58+
```rust
59+
use confique::Config;
60+
use schemars::JsonSchema;
61+
use rust_config_tree::ConfigSchema;
62+
63+
#[derive(Debug, Config, JsonSchema, ConfigSchema)]
64+
struct AppConfig {
65+
#[config(default = [])]
66+
include: Vec<std::path::PathBuf>,
67+
68+
#[config(default = "paper")]
69+
mode: String,
70+
71+
#[config(nested)]
72+
#[schemars(extend("x-tree-split" = true))]
73+
server: ServerConfig,
74+
}
75+
76+
#[derive(Debug, Config, JsonSchema)]
77+
struct ServerConfig {
78+
#[config(default = 8080)]
79+
port: u16,
80+
}
81+
```
82+
83+
Pour les schemas qui utilisent un nom de champ d'inclusion different ou une
84+
logique d'inclusion personnalisee, implementez le trait manuellement:
5785

5886
```rust
5987
use std::path::PathBuf;

rust-config-tree/README.ja.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ include field を公開します。
3636

3737
```toml
3838
[dependencies]
39-
rust-config-tree = "0.1"
39+
rust-config-tree = "0.2"
4040
confique = { version = "0.4", features = ["yaml", "toml", "json5"] }
4141
figment = { version = "0.10", features = ["yaml", "toml", "json", "env"] }
4242
schemars = { version = "1", features = ["derive"] }
@@ -46,9 +46,37 @@ clap = { version = "4", features = ["derive"] }
4646

4747
## Configuration Schema
4848

49-
include field はアプリケーション側の schema が所有します。
50-
`rust-config-tree` は、中間の `confique` layer から include を取り出す小さな
51-
adapter だけを必要とします。
49+
schema を結び付ける最も簡単な方法は、`confique::Config` と一緒に
50+
`ConfigSchema` を derive することです。derive マクロは `#[config(default = [])]`
51+
属性を持つ `Vec<PathBuf>` 型の `include` フィールドを期待します。
52+
53+
```rust
54+
use confique::Config;
55+
use schemars::JsonSchema;
56+
use rust_config_tree::ConfigSchema;
57+
58+
#[derive(Debug, Config, JsonSchema, ConfigSchema)]
59+
struct AppConfig {
60+
#[config(default = [])]
61+
include: Vec<std::path::PathBuf>,
62+
63+
#[config(default = "paper")]
64+
mode: String,
65+
66+
#[config(nested)]
67+
#[schemars(extend("x-tree-split" = true))]
68+
server: ServerConfig,
69+
}
70+
71+
#[derive(Debug, Config, JsonSchema)]
72+
struct ServerConfig {
73+
#[config(default = 8080)]
74+
port: u16,
75+
}
76+
```
77+
78+
異なる include フィールド名やカスタム include ロジックを使用する schema の
79+
場合は、手動で trait を実装してください:
5280

5381
```rust
5482
use std::path::PathBuf;
@@ -57,6 +85,10 @@ use confique::Config;
5785
use schemars::JsonSchema;
5886
use rust_config_tree::ConfigSchema;
5987

88+
use confique::Config;
89+
use schemars::JsonSchema;
90+
use rust_config_tree::ConfigSchema;
91+
6092
#[derive(Debug, Config, JsonSchema)]
6193
struct AppConfig {
6294
#[config(default = [])]

0 commit comments

Comments
 (0)