#freedesktop #icons #systemd-unit #linux

freedesktop_entry_parser

解析 FreeDesktop 入口文件的库

11 个版本 (6 个稳定版)

1.3.0 2022 年 2 月 3 日
1.2.0 2021 年 7 月 30 日
1.1.2 2021 年 5 月 7 日
1.1.1 2020 年 11 月 8 日
0.2.0 2020 年 3 月 27 日

Unix APIs 中排名 #172

Download history 2591/week @ 2024-03-14 2407/week @ 2024-03-21 2140/week @ 2024-03-28 2325/week @ 2024-04-04 1545/week @ 2024-04-11 2487/week @ 2024-04-18 1910/week @ 2024-04-25 2492/week @ 2024-05-02 2448/week @ 2024-05-09 2272/week @ 2024-05-16 2595/week @ 2024-05-23 2773/week @ 2024-05-30 2041/week @ 2024-06-06 1943/week @ 2024-06-13 1994/week @ 2024-06-20 1952/week @ 2024-06-27

每月下载量 8,542
16 个 crate 中使用(直接使用 11 个)

MPL-2.0 许可

39KB
824 行代码(不包括注释)

Freedesktop Entry Parser

crates.io docs.rs Minimum Supported Rust Version

Rust 中用于解析 FreeDesktop 入口文件的库。这些文件用于 Desktop EntryIcon ThemeSystemd Unit 文件。它们类似于 ini 文件,但足够独特,因此使用 ini 解析器将无法正常工作。

示例用法

让我们以 sshd.service 的内容作为示例输入

[Unit]
Description=OpenSSH Daemon
Wants=sshdgenkeys.service
After=sshdgenkeys.service
After=network.target

[Service]
ExecStart=/usr/bin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target

例如,要打印启动命令,我们可以这样做

use freedesktop_entry_parser::parse_entry;

let entry = parse_entry("./test_data/sshd.service")?;
let start_cmd = entry
    .section("Service")
    .attr("ExecStart")
    .expect("Attribute doesn't exist");
println!("{}", start_cmd);

这会打印 /usr/bin/sshd -D

有关更多文档,请参阅 docs.rs 或通过克隆仓库并运行 cargo doc 生成文档。有关更多示例,请参阅仓库中的 示例

MSRV 政策

当前最低支持的 rustc 版本在上面的说明中指定。我们保留在次要版本增加时更改此版本的权利,但我们将尽力保持合理。鉴于此库功能完整,MSRV 可能只会随着我们的依赖项而改变。

贡献

请将任何补丁、错误和问题发送到我的公开邮箱 ~zethra/[email protected] 或如果您愿意,提交给错误跟踪器 todo.sr.ht/~zethra/linicon

依赖项

~1.2–1.8MB
~37K SLoC