use std::path::PathBuf;
use serde_json::Value;
use crate::errors::{crate_not_found_error, missing_src_error};
use xingbiao::{crate_root_file, find_package};
pub(crate) fn resolve_crate<'m>(
metadata: &'m Value,
crate_package: &str,
) -> Result<(&'m Value, PathBuf, PathBuf), String> {
let package = find_package(metadata, crate_package)
.ok_or_else(|| crate_not_found_error(crate_package))?;
let root_file = crate_root_file(package).ok_or_else(|| missing_src_error(crate_package))?;
let src_dir = root_file
.parent()
.ok_or_else(|| missing_src_error(crate_package))?
.to_path_buf();
Ok((package, root_file, src_dir))
}