relay-knowledge 1.1.10

Graph-database-based knowledge graph project.
Documentation
use super::{DependencySeed, SeedInput, conan_reference, push_seed, quoted_values, strip_comment};

pub(super) fn parse_conanfile_txt(content: &str, records: &mut Vec<DependencySeed>) {
    let mut section = String::new();
    for (index, line) in content.lines().enumerate() {
        let trimmed = strip_comment(line, '#').trim();
        if trimmed.starts_with('[') && trimmed.ends_with(']') {
            section = trimmed.trim_matches(['[', ']']).to_owned();
            continue;
        }
        if !matches!(
            section.as_str(),
            "requires" | "tool_requires" | "build_requires"
        ) {
            continue;
        }
        if let Some((name, version)) = conan_reference(trimmed) {
            push_seed(
                records,
                SeedInput::new(
                    "conan",
                    "cpp",
                    name,
                    version,
                    section.as_str(),
                    "conanfile.txt",
                    false,
                )
                .line(index + 1)
                .excerpt(trimmed),
            );
        }
    }
}

pub(super) fn parse_conanfile_py(content: &str, records: &mut Vec<DependencySeed>) {
    for (index, line) in content.lines().enumerate() {
        let trimmed = strip_comment(line, '#').trim();
        let group = if trimmed.contains("build_requires(") || trimmed.contains("tool_requires(") {
            Some("build_requires")
        } else if trimmed.contains("requires(") || trimmed.starts_with("requires =") {
            Some("requires")
        } else {
            None
        };
        let Some(group) = group else {
            continue;
        };
        for quoted in quoted_values(trimmed) {
            if let Some((name, version)) = conan_reference(quoted) {
                push_seed(
                    records,
                    SeedInput::new("conan", "cpp", name, version, group, "conanfile.py", false)
                        .line(index + 1)
                        .excerpt(trimmed),
                );
            }
        }
    }
}