pub mod annotate;
pub mod edit;
pub mod features;
pub mod gate;
pub mod lint;
pub mod patterns;
pub mod receipt;
use crate::error::{PassengerError, Result};
use klepto::Klepto;
use std::path::Path;
pub fn klepto_for(root: &Path) -> Result<Klepto> {
crate::cargo::builder(root)?.parse().map_err(|e| PassengerError::unsupported(e.to_string()))
}
pub fn resolve_package(k: &Klepto, root: &Path, requested: Option<&str>) -> Result<String> {
if let Some(p) = requested {
return Ok(p.replace('-', "_"));
}
if let Some(p) = crate::cargo::package_with_manifest(&k.packages, &root.join("Cargo.toml")) {
return Ok(p.name.clone());
}
let names: Vec<&String> = k.features.keys().collect();
Err(PassengerError::unsupported(format!("no --package given and the root manifest has no [package]; scanned packages: {names:?}")))
}