use crate::diagnostic::DiagnosticCollector;
use crate::error::MarsError;
use crate::local_source;
use crate::model::ReaderIr;
use crate::sync::{SyncRequest, load_config, resolve_graph};
use crate::types::MarsContext;
pub fn read(
ctx: &MarsContext,
request: &SyncRequest,
diag: &mut DiagnosticCollector,
) -> Result<ReaderIr, MarsError> {
let loaded = load_config(ctx, request, diag)?;
let resolved = resolve_graph(ctx, loaded, request, diag)?;
let has_package = resolved.loaded.config.package.is_some();
let local_source_name = crate::types::SourceOrigin::LocalPackage.to_string();
let local_items = local_source::discover_local_items(
&ctx.project_root,
has_package,
Some(local_source_name.as_str()),
diag,
)?;
Ok(ReaderIr {
resolved,
local_items,
})
}