#config-file #config-parser #nix #file-format #error

nix-config-parser

简单解析 Nix 配置文件格式的解析器

4 个版本

0.2.0 2023 年 10 月 3 日
0.1.3 2023 年 5 月 11 日
0.1.2 2023 年 3 月 2 日
0.1.1 2023 年 2 月 27 日
0.1.0 2023 年 2 月 27 日

#2832解析器实现

Download history 26/week @ 2024-03-11 34/week @ 2024-03-18 15/week @ 2024-03-25 84/week @ 2024-04-01 34/week @ 2024-04-08 25/week @ 2024-04-15 14/week @ 2024-04-22 55/week @ 2024-04-29 2/week @ 2024-05-13 33/week @ 2024-05-20 36/week @ 2024-05-27 29/week @ 2024-06-03 23/week @ 2024-06-10 20/week @ 2024-06-17 9/week @ 2024-06-24

84 每月下载次数
nix-installer 中使用

LGPL-2.1

19KB
220

nix-config-parser

简单解析 Nix 配置文件格式的解析器。

基于 https://github.com/NixOS/nix/blob/0079d2943702a7a7fbdd88c0f9a5ad677c334aa8/src/libutil/config.cc#L80-L138

使用方法

从文件读取

use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    std::fs::write(
       "nix.conf",
       b"experimental-features = flakes nix-command\nwarn-dirty = false\n",
    )?;

    let nix_conf = nix_config_parser::NixConfig::parse_file(&std::path::Path::new("nix.conf"))?;

    assert_eq!(
       nix_conf.settings().get("experimental-features").unwrap(),
       "flakes nix-command"
    );
    assert_eq!(nix_conf.settings().get("warn-dirty").unwrap(), "false");

    std::fs::remove_file("nix.conf")?;

    Ok(())
}

从字符串读取

use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let nix_conf_string = String::from("experimental-features = flakes nix-command");
    let nix_conf = nix_config_parser::NixConfig::parse_string(nix_conf_string, None)?;

    assert_eq!(
        nix_conf.settings().get("experimental-features").unwrap(),
        "flakes nix-command"
    );

    Ok(())
}

依赖关系

~1–1.7MB
~32K SLoC