provenant-cli 0.0.8

Provenant is a high-performance Rust scanner for licenses, packages, and source provenance.
Documentation
mod emails;
#[cfg(all(test, feature = "golden-tests"))]
mod golden_test;
mod host;
mod junk_data;
mod urls;

pub use emails::find_emails;
pub use urls::find_urls;

#[derive(Debug, Clone)]
pub struct DetectionConfig {
    pub max_emails: usize,
    pub max_urls: usize,
    pub unique: bool,
}

impl Default for DetectionConfig {
    fn default() -> Self {
        Self {
            max_emails: 50,
            max_urls: 50,
            unique: true,
        }
    }
}

#[cfg(test)]
mod tests {
    use super::{DetectionConfig, find_emails, find_urls};

    #[test]
    fn test_find_emails_threshold() {
        let text = "a@b.com\nc@d.com\ne@f.com\n";
        let config = DetectionConfig {
            max_emails: 2,
            ..Default::default()
        };
        let emails = find_emails(text, &config);
        assert_eq!(emails.len(), 2);
        assert_eq!(emails[0].email, "a@b.com");
        assert_eq!(emails[0].start_line, 1);
    }

    #[test]
    fn test_find_urls_threshold() {
        let text = "http://a.com\nhttp://b.com\nhttp://c.com\n";
        let config = DetectionConfig {
            max_urls: 2,
            ..Default::default()
        };
        let urls = find_urls(text, &config);
        assert_eq!(urls.len(), 2);
        assert_eq!(urls[0].url, "http://a.com/");
        assert_eq!(urls[1].url, "http://b.com/");
    }
}