use std::path::PathBuf;
use thiserror::Error;
use crate::model::names::ModuleName;
use crate::model::snapshot::{HrlFile, Module, Visibility};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ExtractedSource {
pub modules: Vec<Module>,
pub headers: Vec<HrlFile>,
}
#[derive(Debug, Error)]
pub enum ExtractError {
#[error("invalid utf-8 in {path:?} at byte offset {offset}")]
InvalidUtf8 { path: PathBuf, offset: usize },
}
pub fn classify_visibility(
module: &ModuleName,
hidden: bool,
test_only: bool,
public_modules: &[String],
internal_modules: &[String],
) -> Visibility {
if internal_modules.iter().any(|n| n == module.as_str()) {
return Visibility::Hidden;
}
if hidden && !public_modules.iter().any(|n| n == module.as_str()) {
return Visibility::Hidden;
}
if test_only {
return Visibility::TestOnly;
}
Visibility::Public
}