https://github.com/2moe/tomlyre
๐๐ป๐๐ง This CLI utility facilitates effortless manipulation and exploration of TOML, YAML, JSON and RON files.
https://github.com/2moe/tomlyre
Last synced: 10 months ago
JSON representation
๐๐ป๐๐ง This CLI utility facilitates effortless manipulation and exploration of TOML, YAML, JSON and RON files.
- Host: GitHub
- URL: https://github.com/2moe/tomlyre
- Owner: 2moe
- License: apache-2.0
- Created: 2023-04-24T17:54:50.000Z (about 3 years ago)
- Default Branch: dev
- Last Pushed: 2024-05-03T13:38:42.000Z (about 2 years ago)
- Last Synced: 2025-04-02T15:03:40.330Z (about 1 year ago)
- Language: Rust
- Size: 5.42 MB
- Stars: 23
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: Readme-zh.md
- License: License
Awesome Lists containing this project
README
# TomLyre
ไธๆฌพ็จไบๅค็้
็ฝฎๆไปถ็ๅฐๅทฅๅ
ทใ
ๆจๅฏไปฅ็จๅฎๆฅ่ช็ฑๆข็ดข tomlใyamlใjsonใronใbsonใLisp S-exp ไปฅๅ xml๏ผๅนถไปไธญๅ็ฐไน่ถฃใ
> ้ป่ฎคๆ
ๅตไธ๏ผๆฒกๆๅฏ็จ bson ๅ xml ๅ่ฝใ
## ๅฎ่ฃ

ๅ
ๅๅปๆๅผ svg ๅพ็๏ผ็ถๅๅฏน่่ฒ้ซไบฎ็่ถ
้พๆฅๅค๏ผไพๅฆ โarm64.debโ๏ผๆไธ้ผ ๆ ไธญ้ฎใ
ๅฆๆๆฒกๆ้ผ ๆ ็่ฏ๏ผๅฏไปฅ้ฟๆ่งฆๆธๅฑ๏ผๆๅจ้ๆฉโๅจๆฐๆ ็ญพ้กตไธญๆๅผโ๏ผ่ฟๆ ทๅญๅฐฑๅฏไปฅไธ่ฝฝไบใ
ไธ้ข้ฃๅผ svg ไผ่ชๅจๆดๆฐ๏ผๅฆๆๅ ไธบๆต่งๅจ็ผๅญ่ๅฏผ่ดๆ ๆณ่ทๅๆๆฐ็ svg๏ผๅ่ฏทๅๅพ releases ่ทๅๅบๅฎ็ๆฌ็ svgใ
### ubuntu
ๅฏนไบ **ubuntu**๏ผๆไปฌๅฏไปฅ็ดๆฅ็จ `apt install [debๆไปถ็่ทฏๅพ]` ๆฅๅฎ่ฃ
ใ
> ๅฆๆๆฒกๆ root ๆ้๏ผๅ้่ฆ็จ `sudo` ๆ `doas` ไน็ฑป็ๆๆๅฝไปคใ
ๅ่ฎพ deb ๆไปถ็่ทฏๅพไธบ `/app.deb`, ้ฃไนๅฎ่ฃ
ๅฝไปคๅฐฑๆฏ `apt install /app.deb`
### alpine
่ฎฉๆไปฌๆฅ่ฏ่ฏ alpine ่ฝไธ่ฝๅฎ่ฃ
deb ๅง๏ผ
ๅฎๆฏ `musl-linux-riscv64`๏ผ่ไธๆฏ `riscv64`, ็่ตทๆฅๅฅฝๅไธ่ฝๅฎ่ฃ
็ๆ ทๅญๅฆ๏ผ
่ฎฉๆไปฌๆฅๅผบๅถๅฎ่ฃ
็็ใ
> Q: ๅๅฆ! ็ๆฏๅคชไธๅฏๆ่ฎฎไบ๏ผไธบไปไนๅฎไธไป
ๅฏไปฅ่ฃ
ไธๅป๏ผ่ไธ่ฟ่ฝ่ทๅข๏ผ
A: ๅ ไธบๅฎๆฏ้ๆ็ผ่ฏ็ใ
> ๆๆถๅ glibc ็้ๆ้พๆฅๅฏ่ฝไผๅบ้ฎ้ข๏ผๅปบ่ฎฎ็จ muslใ
่่ๅฐไธๅๅ่ก็็ๅ
็ฎก็ๅจๅฏ่ฝไผๅฒ็ช๏ผๅ ๆญคๅปบ่ฎฎๅจ alpine ไธไฝฟ็จ alpine ่ชๅฎถ็ `apk`๏ผ ่ไธๆฏ debian ็ `dpkg`ใ
ๆจๅฏไปฅๆๅฎๆๅบๆฅ็จ
### wasm
ไธ่ฝฝๅฎ `wasm.zst` ๆไปถๅ๏ผ้่ฆๅฐๅ
ถ่งฃๅๅบๆฅใ
ๆฅ็้่ฆ่ทๅ runtime๏ผ็ถๅ่ฎฉ runtime ๆฅๅ ่ฝฝ่ฟไธช wasm ๆไปถใ
ๆฏๆน่ฏด๏ผๆจๅฏไปฅ็จ `wasmer`:
```sh
wasmer --dir . --env LANG=zh ./tomlyre.wasm
```
ไนๅฏไปฅ็จ `wasmtime`:
```sh
wasmtime --dir . --env LANG=zh ./tomlyre.wasm
```
ๆ่
ๆฏๅ
ถไปๆจๅๆฌข็ runtimesใ
### CI
ๆจๅฆๆ้่ฆๅจ Linux x64 ็ CI ็ฏๅขไธญไฝฟ็จๅฎ๏ผๅๅฏไฝฟ็จไปฅไธๅฝไปค
```sh
docker run -it --rm \
-u $(id -u) \
-v $PWD:/local \
-w /data \
ghcr.io/2moe/tomlyre:x86_64-unknown-linux-musl \
cp tomlyre /local
```
่ฟ็ธๅฝไบๆๅฎนๅจๅ
้จ็ `/data/tomlyre` ๅคๅถๅฐๅฝๅ็ฎๅฝ
### ๅ
ถไป
ๅฏนไบไปฅ `tar.xz`/`tar.bz2` ไธบๅ็ผ็ๆไปถ๏ผๆไปฌๅฏไปฅไฝฟ็จ `tar -xvf [ๅ็ผฉๅ
]` ๆฅ่งฃๅใ
```sh
tar -xvf x64.tar.xz
```
่งฃๅๅฎๆๅ๏ผๅจ็ป็ซฏ้่ฐ็จ `./tomlyre` ๅณๅฏใ
## ๅ่ฝ
ๆ ธๅฟๅ่ฝๅชๆไธไธช๏ผ
- ่ฝฌๆข (conv)
- ่ทๅ (get)
- ่ฎพ็ฝฎ/ไฟฎๆน (set)
้คๆญคไนๅค๏ผๅ
จ้ฝๆฏ้ขๅค็ๅ่ฝ๏ผไพๅฆ่ฎพ็ฝฎไธป้ขไธ่กจๆ ผ็ๆ ทๅผใ
ไฝฟ็จ `--help` ่ฝ่ทๅ่ฏฆ็ป็ๅธฎๅฉไฟกๆฏใ
- `tomlyre set` ็ธๅฝไบ `tomlyre set -h` ๏ผๅฎไผ่พๅบ็ฎๆด็ๅธฎๅฉไฟกๆฏใ
- `tomlyre set --help` ไผ่พๅบ้ๅธธ่ฏฆ็ป็ไฟกๆฏใ
- ๅ็๏ผๅ
ถไปๅญๅฝไปคไน่ฝ่ฐ็จ `--help`ใ

set --help

conv --help
### ไธป้ข
ไฝฟ็จ `--theme` ๅๆฐ (ๅฏไปฅ็ฎๅไธบ `-t`) ๆฅๆๅฎไธป้ข๏ผไพๅฆ `tomlyre -t "One Dark" conv test.yml -t json`ใ
> `conv` ๅญๅฝไปค็ `-t` ๆ็ๆฏ `--to`๏ผ่ๆ นๅฝไปค็ `-t` ๅๆฏ `--theme`ใ
ๅฝๆชๆๅฎไธป้ขๅ็งฐๆถ๏ผไผๅไธพๅบๆๆ็ไธป้ขใ
ไปฅไธๆฏๅ
็ฝฎ็ไธป้ข๏ผๆจๅฏไปฅๆๅจ่ฝฝๅ
ฅไธป้ข้ๅๅ
๏ผๅนถๆๅฎๅ็งฐ๏ผ่ไธๆฏไฝฟ็จๅ
็ฝฎ็ไธป้ขใ
> ่ฟไบไธป้ขๅคง้ฝไฝฟ็จ MIT License๏ผๆจๅฏไปฅๅจ [hlight/dev/assets/theme](https://github.com/2moe/hlight/tree/dev/assets) ้ๆพๅฐๅ
็ฝฎไธป้ขไปฅๅ็ธๅ
ณ็่ฎธๅฏ่ฏๆไปถใ
### ่กจๆ ผๆ ทๅผ
ไฝฟ็จ `--table-style` ๆฅๆๅฎ่กจๆ ผๆ ทๅผ(ๅฏไปฅ็ฎๅไธบ `--ts`)๏ผไพๅฆ: `--table-style markdown` ๆ `--ts md` ๅฏไปฅๆๅฎ่กจๆ ผๆ ทๅผไธบ markdownใ
```sh
tomlyre --ts md get Cargo.toml -k profile.fat
```
| profile.fat | ็ฑปๅ | Value |
| ----------- | ---- | ----- |
| inherits | str | thin |
| lto | str | fat |
| opt-level | str | z |
ไปฅไธไธบๅ
็ฝฎ็่กจๆ ผๆ ทๅผ๏ผ
๏ผ้็ญๅฎฝๅญไฝๅฏ่ฝไผๅบ็ฐๆ็ๅผๅธธ็้ฎ้ข๏ผ
```plaintext
style: default
โญโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโฎ
โ Version โ Codename โ Created โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โฐโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโฏ
style: nothing
Version Codename Created
10 Buster 2017-06-17
11 Bullseye 2019-07-16
12 Bookworm 2021-08-14
13 Trixie 2023
14 Forky 2025
style: ascii
+---------+----------+------------+
| Version | Codename | Created |
+=================================+
| 10 | Buster | 2017-06-17 |
|---------+----------+------------|
| 11 | Bullseye | 2019-07-16 |
|---------+----------+------------|
| 12 | Bookworm | 2021-08-14 |
|---------+----------+------------|
| 13 | Trixie | 2023 |
|---------+----------+------------|
| 14 | Forky | 2025 |
+---------+----------+------------+
style: ascii-borders
+---------------------------------+
| Version Codename Created |
+=================================+
| 10 Buster 2017-06-17 |
| 11 Bullseye 2019-07-16 |
| 12 Bookworm 2021-08-14 |
| 13 Trixie 2023 |
| 14 Forky 2025 |
+---------------------------------+
style: right-u8-fat
โโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ Version โ Codename โ Created โ
โโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโโก
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโ
style: right-u8
โโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ Version โ Codename โ Created โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโ
style: right-u8-thin
โโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ Version โ Codename โ Created โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโ
style: u8
โโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ Version โ Codename โ Created โ
โโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโโก
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโ
style: u8-no-dividers
โโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ Version โ Codename โ Created โ
โโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโโก
โ 10 โ Buster โ 2017-06-17 โ
โ 11 โ Bullseye โ 2019-07-16 โ
โ 12 โ Bookworm โ 2021-08-14 โ
โ 13 โ Trixie โ 2023 โ
โ 14 โ Forky โ 2025 โ
โโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโ
style: u8-borders
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Version Codename Created โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโก
โ 10 Buster 2017-06-17 โ
โ 11 Bullseye 2019-07-16 โ
โ 12 Bookworm 2021-08-14 โ
โ 13 Trixie 2023 โ
โ 14 Forky 2025 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
style: u8-no-borders
Version โ Codename โ Created
โโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโ
10 โ Buster โ 2017-06-17
โโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโ
11 โ Bullseye โ 2019-07-16
โโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโ
12 โ Bookworm โ 2021-08-14
โโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโ
13 โ Trixie โ 2023
โโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโ
14 โ Forky โ 2025
style: horizontal
---------------------------------
Version Codename Created
=================================
10 Buster 2017-06-17
---------------------------------
11 Bullseye 2019-07-16
---------------------------------
12 Bookworm 2021-08-14
---------------------------------
13 Trixie 2023
---------------------------------
14 Forky 2025
---------------------------------
style: round-u8
โญโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโฎ
โ Version โ Codename โ Created โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โฐโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโฏ
style: round-u8-fat
โญโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโฎ
โ Version โ Codename โ Created โ
โโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโโก
โ 10 โ Buster โ 2017-06-17 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 11 โ Bullseye โ 2019-07-16 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 12 โ Bookworm โ 2021-08-14 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 13 โ Trixie โ 2023 โ
โโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโค
โ 14 โ Forky โ 2025 โ
โฐโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโฏ
style: markdown
| Version | Codename | Created |
|---------|----------|------------|
| 10 | Buster | 2017-06-17 |
| 11 | Bullseye | 2019-07-16 |
| 12 | Bookworm | 2021-08-14 |
| 13 | Trixie | 2023 |
| 14 | Forky | 2025 |
```
### conv
่ญฆๅ๏ผๅฆๆไธค็ง้
็ฝฎไน้ด็ๆฐๆฎ็ฑปๅไธ่ฝๅฎๅ
จๅ
ผๅฎน๏ผ้ฃไน่ฝฌๆขๅๆฐๆฎ็ฑปๅไผๅ็ๆนๅใ
---
ๆฏๅฆ่ฏด ron ๆ char ็ฑปๅ๏ผไปฃ่กจๅไธชๅญ็ฌฆใ
ไปฅ `hello๏ผไธ็` ไธบไพ ๏ผ่ฟๆฏไธไธช stringใ
'h' ๆฏ char, "h" ๆฏ stringใ
"ไธ็" ๆฏ string, 'ไธ' ๆฏ charใ
็ถ่๏ผ`json 1.0` ๅ `toml 1.0` ้ฝๆฒกๆ char ็ฑปๅใ
hello.ron:
```ron
{
"s": 'ไธ',
"j": '็',
}
```
```sh
tomlyre c hello.ron -t json
```
json:
```json
{
"j": "็",
"s": "ไธ"
}
```
ๅ ๆญค๏ผ`ron` ็ char ่ฝฌๆ `json 1.0` ไผๅๆ stringใ
---
ๅๆฏๅฆ๏ผ ็ฎๅๆๅพๅค็ง้
็ฝฎๆ ผๅผ้ฝๆฏๆ่ฟไธค็ง็นๆฎ็ๆตฎ็นๆฐ๏ผ**NaN** ๅ **inf**๏ผไฝ `json 1.0` ไธๆฏๆใ
ๅจ `json 1.0` ไธญ๏ผๅฎไปฌ้ฝไผๅๆ `null`ใ
f64-map.toml:
```toml
[double-float-map]
not-a-num = nan
infinity = inf
```
```sh
tomlyre conv f64-map.toml -t ./f.yaml --save
```
f.yaml:
```yaml
double-float-map:
infinity: .inf
not-a-num: .nan
```
```sh
tomlyre conv f.yaml -t ron --sv
```
f.ron:
```ron
{
"double-float-map": {
"infinity": inf,
"not-a-num": NaN,
},
}
```
```sh
tomlyre conv f.ron -t sexp
```
> sexp ๆ็ๆฏ Lisp S-Expressions
```lisp
(("double-float-map" ("infinity" . inf) ("not-a-num" . NaN)))
```
```sh
tomlyre conv f.ron -t json
```
```json
{
"double-float-map": {
"infinity": null,
"not-a-num": null
}
}
```
```sh
tomlyre conv f.ron -t json5
```
```json5
{ "double-float-map": { infinity: Infinity, "not-a-num": NaN } }
```
---
Q๏ผ `json` ๆ๏ผไฝๅ
ถไปๆ ผๅผๆฒกๆ็ๆฐๆฎ็ฑปๅๆฏไปไน๏ผ
A: `null`
ๆฏๅฆ่ฏด๏ผ`toml 1.0` ๅ `ron` ้ฝไธๆฏๆ `null` ๅผ๏ผๅฆๆๅฐๅ
ๅซ `null` ็ `json 1.0` ่ฟ่ก่ฝฌๆข๏ผ`toml` ไผ็ดๆฅๆฅ้๏ผ่ `ron` ๅไผๅฐๅ
ถ่ฝฌๆขๆ็ฉบๅ
็ป `()`, ไนๅฐฑๆฏไฟ็งฐ็ๅๅ
็ฑปๅ๏ผ**Unit**๏ผใ
> ๆณจ๏ผ ron ไฝฟ็จ็ๆฏ `Option` ็ฑปๅ, ๅผไธบ `Some(T)` ๆ `None`๏ผ่ไธๆฏ `null`ใ
ๆญคๅค๏ผไธๅ็้
็ฝฎๆ ผๅผไน้ด่ฟๆไธๅฐ็ๅบๅซ๏ผๆไปฌๅนถๆฒกๆๅ
จ้จๅไธพๅบๆฅใ
### get ไธ set
ๅฝ็จ `set` ๅญๅฝไปคๆๅฎไบ key, ๅนถไธๆชๆๅฎ value ๆถ๏ผ็ธๅฝไบๆด่ฏฆ็ป็ๆฌ็ `set`ใ
ๆฏๅฆ่ฏด๏ผๆไปฌไฝฟ็จไปฅไธๅฝไปคไป stdin ไธญ่ฏปๅๅนถ่งฃๆๆฐๆฎ
> get ๅ้ข็ `-` ไปฃ่กจๆฅๆบๆฏ stdin๏ผ่ไธๆฏๅ
ทไฝ็ๆไปถ
```sh
curl -sL https://raw.githubusercontent.com/2moe/tomlyre/main/Cargo.toml | tomlyre get - -k profile.thin.strip
```
ๅฝไฝฟ็จ `get` ๆถ๏ผstdout ไผ่พๅบ `true`ใ
่ๅฝๆไปฌๆ `get` ๆนๆ `set` ๆถ, ๅฎไผ่พๅบ ๏ผ
```yaml
true
key: ["profile", "thin", "strip"]
type: boolean
value:
true
```
> Q: ่พๅบ็ไฟกๆฏๆฏ่ถๅค่ถๅฅฝๅ๏ผ
A: ไธๆฏ็๏ผ
่ฟไธป่ฆๅๅณไบๆไปฌ็ไฝฟ็จ็ฎ็ใ
ๅฝๆไปฌ้่ฆ็จ่ๆฌๆฅ่ทๅๅ
ทไฝ็ๅผๆถ๏ผๅช้่ฆๆๆ็ไฟกๆฏ๏ผๅคไฝ็ไฟกๆฏไธไป
ๆ ็จ๏ผ่ไธ่ฟไผๅนฒๆฐๆฐๆฎ็่ทๅใ
ไธไน็ธๅ๏ผๅฝๆไปฌ้่ฆๆๅจไฟฎๆนๆถ๏ผๆๅ
ทไฝ็ไฟกๆฏๅพๅพไผๆดๅฅฝใ
### set
ๆไปฌๅฏไปฅๅฏน `set`ๅญๅฝไปคไฝฟ็จ `--help` ๆฅ่ทๅ่ฏฆ็ปไฟกๆฏใ
ๅบๆฌ็จๆณไธบ๏ผ `set [ๆฅๆบๆไปถ] -k [็จ"."ๆฅๅๅฒ็keys] [ๆๅฎๆฐๆฎ็ฑปๅ็้้กน] [ๆๅฎๆฐๆฎ็ฑปๅ็ๅผ(ๅฏ่ฝไธบ็ฉบ๏ผไนๅฏ่ฝๆๅคไธช)]`
ไพๅฆ `set test.toml --key package.edition --str 2024`
---
> ๆณจๆ๏ผ
> ๅชๆๅฝ src ็ๆ ผๅผไธบ toml ๆถๆไผไฟ็ๆณจ้๏ผๅ
ถไปๆ ผๅผไธไผใ
> ๅ
ถไปๆ ผๅผไผๅ
่ฝฌๆขๆ toml ๅ่ฟ่กไฟฎๆน๏ผ่ฝฌๆขๅ็ๆไปถไธไผไฟ็ๆณจ้ใ
---
ๆญคๅคๅชๆฏ็ฎๅๅฐๅไธพไธไธๅฎๆฏๆ็ๆฐๆฎ็ฑปๅใ
ๅบๆฌๆฐๆฎ็ฑปๅ
| ้้กน | ๅซๅ | ๅผ็็ฑปๅ | ๆ่ฟฐ | ็คบไพ |
| ---------- | -------------- | ------------------- | ------------------------- | --------------------------- |
| -s | --str | String | ๅญ็ฌฆไธฒ็ฑปๅ | `-s "1.114.5-beta.1"` |
| -b | --bool | bool | ๅธๅฐ็ฑปๅ | `-b true` |
| --f64 | | f64 | ๅ็ฒพๅบฆๆตฎ็นๆฐ็ฑปๅ | `--f64 314e-2` |
| -n | --num/--int | i64 | 64 ไฝๆ็ฌฆๅทๆดๆฐ็ฑปๅ | `-n 2048` |
| -a | --arr | `Vec` | ๅญ็ฌฆไธฒ็ๆฐ็ป | `-a hello -a world` |
| --num-arr | --na | `Vec` | i64 ็ๆฐ็ป | `--na 11 --na -3` |
| --f64-arr | --fa | `Vec` | f64 ็ๆฐ็ป | `--fa 3.14 --fa 2.71828182` |
| --bool-arr | --ba | `Vec` | bool ็ๆฐ็ป | `--ba true --ba false` |
| -i | --inline-table | `Vec<(key, value)>` | ๅ
่่กจ | `-i name sd -i os android` |
| --rm | | | ๅ ๆๆๅฎ็ key ๅๅ
ถ value | |
ๆญคๅค๏ผ่ฟๆไธไบไธ้ฃไนโๅบๆฌโ็ๆฐๆฎ็ฑปๅใๆฏๅฆโๆ ๅ่กจโ๏ผโ่กจๆฐ็ปโ๏ผไปฅๅ DateTimeใ
ๆ ๅ่กจๅๅ
่่กจๅพๅ๏ผๅฆๆไธ็ฅ้็จๅชไธช๏ผ้ฃๅฐฑ็จ `-i`, ่ไธๆฏ็จ `-m`ใ
ๅฏนไบ **toml** ไปฅๅค็ๆ ผๅผ๏ผๅๅปบๆฐ่กจๆถ๏ผ่ฏทไธๅพไฝฟ็จ `-i`, ่ไธๆฏ `-m`๏ผ
ๅ่ฎพ hello.toml ้้ขๆไธชๅไธบ test ็่กจๆฐ็ป๏ผ็ดขๅผไธบ 0 ็ map ๆไธช key ๅซ **kk**, ๅ
ถๅผไธบ **v**ใ
```toml
[[test]]
kk = "v"
```
```sh
set hello.toml -k test.
```
| test. | ็ฑปๅ | Value |
| ----- | ---- | ----- |
| 0.kk | str | v |
```yaml
key: ["test"]
type: array of tables
value:
[{ kk = "v" }]
```
่ฎฉๆไปฌ็จ `-m` ๆ `--table` ๆฅๅๅปบไธไธชๅญ่กจ็็ใ
```sh
set hello.toml --key test.0.a --map hello world --pre
```
่พๅบๅ
ๅฎน:
```yaml
key: ["test", "0", "a"]
type: table
new value: hello = "world"
```
| test.0 | ็ฑปๅ | ๆฐๅผ(value) |
| ------- | ---- | ----------- |
| kk | str | v |
| a.hello | str | world |
```toml
[[test]]
kk = "v"
[test.a]
hello = "world"
```
็่ตทๆฅๅฅฝๅๆฒก้ฎ้ข๏ผๅ็จๅ
่่กจ่ฏ่ฏใ
```sh
set hello.toml -k test.0.a -i hello world --pre
```
่พๅบๅ
ๅฎน:
```toml
[[test]]
kk = "v"
a = { hello = "world" }
```
ๅฏนไบ่ฟ็งๆ
ๅต๏ผๆ ๅ่กจไธๅ
่่กจๆฏไธๆ ท็ใ๏ผ่ฝ็ถ็่ตทๆฅไธไธๆ ท๏ผไฝๆฏๅ
ถ่งฃๆ็็ปๆๆฏไธๆ ท็ใ๏ผ
ๅฏๆฏๅฝ key ไธบ `test.0.x.y.z` ๆถ๏ผ้้ขๆๅคไธชไธๅญๅจ็ๅตๅฅๅญ่กจ๏ผๆจๅฏไปฅๅฐ่ฏๅๅซ็จ`-m` ไธ `-i`ใ
ๅจไบฒ่ชๅฐ่ฏไนๅ๏ผๆ็ธไฟกๆจๅฎ่ฝ็ฅๆไธไฝฟ็จ `-m` ็็ผ็ฑใ
## ๆฅๅฟ็บงๅซ
่ฏฆ็ป็จๅบฆไป้ซๅฐไฝ๏ผไพๆฌกๆฏ `trace` > `debug` > `info` > `warn` > `error`
ๅ
ถไธญ `trace` ๆฏๆ่ฏฆ็ป็ใ
้ป่ฎค็็บงๅซไธบ `info`ใ
ๆไปฌๅฏไปฅ้่ฟ่ฎพ็ฝฎ็ฏๅขๅ้ๆฅไฟฎๆนๆฅๅฟ็บงๅซ
> v0.0.1-beta.1 ๅๅ
ถไนๅ็็ๆฌไฝฟ็จ `RUST_LOG` ็ฏๅขๅ้๏ผ ่ไธๆฏ `TOMLYRE_LOG`
```sh
env TOMLYRE_LOG=debug tomlyre
```
## ้ขๅค่ฏ
### ่ฎพ่ฎกๅ่กท
> Q: ่ฟไธชๅทฅๅ
ท็่ฎพ่ฎกๅ่กทๆฏไปไน๏ผ
A:
ๅ่กทๆฏ่ฎฉๅคงๅฎถๅจ CLI ้๏ผ่ฝไปฅไธ็ง็ฎๅๅไผ้
็ๆนๅผๅปๆฅ่ฏขไธไฟฎๆน้
็ฝฎๆไปถใ
ๅคงๆฆๅจไธไธคๅนดๅ็ๆถๅ๏ผๆๆพๅจๅฆไธไธช้กน็ฎ็ๆๆกฃไธญ่ฏด่ฟ๏ผ
- ้ฃไธช้กน็ฎไนๅไผ็จ `toml` ๆ ผๅผ่ฟ่ก้
็ฝฎ
- ๅนถไธ่ฟไป็ปไบไธไบๅ
ทไฝ็็ป่
- ๆฏๅฆ็จ `get` ๅญๅฝไปคๆฅ่ทๅ
- ็จ `set` ๆฅไฟฎๆน
ๅจ่ฎพ่ฎกๆถ๏ผๆไธ็ดๅจ็บ ็ป๏ผๆๅฐๅบ่ฏฅ็จ tomlใyaml ่ฟๆฏ ron๏ผๆ่
ๆฏๅ็ๆด็ปไธ็น๏ผ็ดๆฅ็จๆฐๆฎๅบๅข๏ผ
่ตทๅ็ๆถๅ๏ผๆๅทฒ็ปๅๅฎไบๅๆถๆฏๆ toml ไธ yaml ็ไปฃ็ ใ
่ฟๆถๅๅฐไบ่งฃๆไผๅ
้กบๅบ็้ฎ้ขใ
ๅฝๅๆถๅญๅจไปฅไธๆไปถๆถ๏ผ็จๅบๅบ่ฏฅๅ
่งฃๆๅชไธไธชๅข๏ผ
- cfg.toml
- cfg.Toml
- cfg.yaml
- cfg.yml
- cfg.YAML
- cfg.YML
- cfg.Yaml
่ฟๆถๅๅฐฑ่ฆๆๆ ธๅฟ้
็ฝฎไบ๏ผ้่ฟๆ ธๅฟ้
็ฝฎๆฅๆๅฎ็จๆท้
็ฝฎใ
้ฃไน้ฎ้ขๆฅไบ๏ผๆ ธๅฟ้
็ฝฎๆฏไปไนๆ ผๅผๅข๏ผ
ๆไปฌๅฏไปฅ็ฏๅขๅ้ๆฅๆๅฎๆ ธๅฟ้
็ฝฎ็ๆ ผๅผใ
่ฟไน็ๆฅ่ฒไผผไธๆฏๅพ้พๅ๏ผ
่ฏทๆณจๆ๏ผไธๅๆ ผๅผๆ็ไธๅ็่ง่๏ผๅ
ผๅฎนไธๅๆ ผๅผๅพ่ฆไบ่งฃๅฎไปฌไน้ด็ๅทฎๅผใ
ๅฆๆ่ฆๆฏๆๆดๅค็ๆ ผๅผ๏ผ้ฃไนไผๅๅพๆ็น้บป็ฆใ
ๆไบไบๆ
ๆฌ่บซไธๆฏๅพ้พ๏ผไฝๆฏ้่ฆ่ฑๅพๅคๆถ้ดๅ็ฒพๅๅปๅค็ใ
ๆ็ป๏ผๆๆๅฎๅ็ฆปๆๅ็ฌ็ๅฐๅทฅๅ
ทใ
่ฟๆ ทๅญ๏ผๅคงๅฎถๅฏไปฅ้่ฟ่ฟไธชๅฐๅทฅๅ
ทๆฅ้ดๆฅๆฏๆๅค็งๆ ผๅผใ๏ผๆไปฌ็ๅฐ็ๆฏ yaml, ไฝๆฏๅฎ้
ไฟฎๆน็ๆฏ toml ๆไปถ๏ผ
### yaml
> Q: ไธบไปไน่ฆๆฏๆๅค็ง้
็ฝฎๆ ผๅผๅข๏ผๅคงๅฎถ้ฝ่ฏด `yaml` ็ๅฏ่ฏปๆงๅฅฝ๏ผๅชๆฏๆ yaml ไธ่กๅ๏ผ
่ฝ็ถๆๅพๆณๅๅฎๅฐๅ็ญ๏ผโไธ่ก๏ผโ๏ผไฝๅฎ้
ไธ่ฟๅๅณไบๆจไปฅๅๆจ็็จๆท็้ๆฑใ
**yaml** ๆฏๆๆฏ **toml** ๅ **json** ๆด้ซ็บง็ๅ่ฝ๏ผๅฆ `ๅผ็จ`, `ๅ
ๅซ` ๅ `ๆ ็ญพ` ็ญใ
1. ้็น(anchor)ๅๅซๅ(alias): ๅ
่ฎธๅจๅไธๆๆกฃไธญๅค็จ็ธๅ็ๆฐๆฎ็ปๆๆ่็นใ
Anchor and Alias: Allows reusing the same data structure or node within the same document.
2. ๅผ็จ(References): ๅ
่ฎธๅจ **YAML** ๆๆกฃไธญๅผ็จๅ
ถไป่็น็ๅผใ
References: Allows referencing values from other nodes within a YAML document.
3. ่ชๅฎไนๆ ็ญพ(Custom Tags): ๅ
่ฎธๅฎไน่ชๅทฑ็ๆ ็ญพ๏ผๆดๅฅฝๅฐๆงๅถ **YAML** ๆฐๆฎ็ฑปๅ็่งฃๆใ
Custom Tags: Allows defining custom tags to better control the parsing of YAML data types.
4. ๅ
ๅซ(Includes): ๅ
่ฎธๅฐๅคไธช **YAML** ๆไปถ็ปๅๆไธไธชๆไปถ๏ผๆ้ซๅฏ้็จๆง๏ผๅค็จๆง๏ผใ
Includes: Allows combining multiple YAML files into one file, improving code reusability
ๆจๅฆๆ้่ฆ่ฟไบๅ่ฝ๏ผ้ฃไนไฝฟ็จ **yaml** ๆฏไธไธชๆไฝณ็้ๆฉใ
ๆจๅฆๆไธ้่ฆ่ฟไบๅ่ฝ๏ผ้ฃไน้ๆฉ yaml ๆฏๅฆๅผๅพๅข๏ผ
่ฟไธช้ฎ้ขๅผๅพๆข่ฎจใ
> ๆญฃๆน่ง็น๏ผๅ่ฝ่ถๅค่ถๅฅฝ๏ผๆๅฏไปฅไธ็จ๏ผไฝๆฏไฝ ไธ่ฝๆฒกๆใ
>
> ๅๆน่ง็น๏ผๅคชๅคๅ่ฝไผๅขๅ ๅคๆๅบฆๅๆททไนฑๅบฆใ
้คไบๅฏ่ฏปๆงๅๅ่ฝ็ๆ่กกๅค๏ผ่ฟ่ฆ่่ๆฎ้็จๆท็ๆๅใ
> ๅฆๆไธไธช้
็ฝฎๆไปถๅ
ๅซไบๅคๆ็ๅตๅฅ็ปๆ๏ผๅนถไธๆจ็็จๆทๆฒกๆไธไธช โ้ซ็บงโ ็็ผ่พๅจ๏ผ้ฃไน yaml ็็ผฉ่ฟ็นๆงๅฏ่ฝๅพๅฎนๆๅฏผ่ด็ผๅๅบ้ใ
ๅฆๆๆจ็็จๆทๅฏ่ฝไผๅจๆฉๆ Windows ็ notepad(่ฎฐไบๆฌ) ไธ็ผๅ้
็ฝฎ๏ผ้ฃไนไฝฟ็จ **toml** ไผไธไผๆฏ **yaml** ๆดๅฅฝๅข๏ผ
> ๆฉๆๆ็ๆฏ 2022 ๅนดไปฅๅ็ Windows 10๏ผ้ฃๆถๅ็ notepad ๅชๆๆๅบๆฌ็ๅ่ฝใ
> Windows ็ๅทฅๅ
ทๅจไธๆญๅๅฑ๏ผไน่ฎธๆไธๅคฉ๏ผnotepad ไนๆ่ฏญๆณ้ซไบฎ๏ผ็ฉบ็ฝๅญ็ฌฆๆพ็คบๅไปฃ็ ่กฅๅ
จ็ญ้ซ็บงๅ่ฝใๅ ๆญคๆๅฐๅ
ถ้ๅฎไธบโๆฉๆโใ
็จ Windows ๅฏ่ฝไธๅคชๆฐๅฝ๏ผๅ ไธบ Windows ไธ็็ผ่พๅจ่ฝฏไปถ้ๅธธไธฐๅฏใ
ๅฐฑ็ฎไฝ ๅจๅคง่กไธ้ไพฟๆพไธชๅฐๅญฉๅญ๏ผไป้ฝ่ฝๅธฎไฝ ่ฝปๆพๆๅฎ็ผ่พๅจ่ฝฏไปถ็ๅฎ่ฃ
ใ
ไบๆฏ๏ผๆไปฌๆ้ฎ้ขๅๆไบ๏ผโๆจๅฅฝ๏ผๆ็็ฏๅขๆฏ riscv64 ๆถๆ๏ผuClibc ็ Linux, ๆฒกๆๅ
็ฎก็ๅจ๏ผ่ฏท้ฎๆจ่ฝๅฆๅจๆจ็็ต่ไธๅธฎๆ้
็ฝฎไบคๅ็ผ่ฏ็ฏๅข๏ผๅ็ผ่ฏไธไธช่ถ
่ฝป้็บง็็ผ่พๅจ๏ผ้่ฆๆ่ฏญๆณ้ซไบฎ๏ผๅนถไธ่ฝๅฏน็ฉบ็ฝๅญ็ฌฆ่ฟ่ก้ซไบฎๆพ็คบใโ
emmm๏ผ่ฟๆฏไธ่ฆๅคชไธบ้พ้ฃไธชๅฐๆๅไบใ