dnf-repofile 0.1.2

Pure Rust library for parsing, managing, validating, diffing, and rendering DNF/YUM .repo configuration files
Documentation
use dnf_repofile::builder::RepoBuilder;
use dnf_repofile::types::*;

#[test]
fn test_builder_basic() {
    let repo = RepoBuilder::new(RepoId::try_new("myrepo").unwrap())
        .name(RepoName::try_new("My Repo").unwrap())
        .enabled(DnfBool::True)
        .gpgcheck(DnfBool::True)
        .baseurl("https://example.com/repo/".parse().unwrap())
        .gpgkey("https://example.com/RPM-GPG-KEY")
        .priority(Priority::try_new(50).unwrap())
        .build();
    assert_eq!(repo.id.as_ref(), "myrepo");
    assert_eq!(repo.name.unwrap().as_ref(), "My Repo");
    assert_eq!(repo.baseurl[0].as_str(), "https://example.com/repo/");
    assert_eq!(repo.gpgkey[0], "https://example.com/RPM-GPG-KEY");
}

#[test]
fn test_builder_from_existing() {
    let existing = RepoBuilder::new(RepoId::try_new("myrepo").unwrap())
        .name(RepoName::try_new("Original").unwrap())
        .enabled(DnfBool::True)
        .baseurl("https://example.com/".parse().unwrap())
        .build();
    let modified = RepoBuilder::from(&existing).enabled(DnfBool::False).build();
    assert_eq!(modified.name.unwrap().as_ref(), "Original");
    assert_eq!(modified.enabled.unwrap(), DnfBool::False);
}