#![allow(dead_code)]
use std::path::Path;
use anyhow::Error;
use cargo_toml::Manifest;
use tracing::debug;
pub(crate) fn parse_cargo_toml<P: AsRef<Path>>(
cargo_toml_dir_path: P,
) -> Result<Vec<String>, Error> {
debug!("Parsing Cargo.toml...");
let manifest = Manifest::from_path(cargo_toml_dir_path)?;
if let Some(package) = manifest.package {
debug!("Name: {}\n", package.name);
debug!(
"Description: {}\n",
package.description.unwrap_or_default().get()?
);
debug!("Authors: {:?}\n", package.authors.get()?);
debug!(
"Homepage: {}\n",
package.homepage.unwrap_or_default().get()?
);
debug!(
"Repository: {}\n",
package.repository.unwrap_or_default().get()?
);
debug!(
"Documentation: {}\n",
package.documentation.unwrap_or_default().get()?
);
debug!("Keywords: {:?}\n", package.keywords.get()?);
debug!("Categories: {:?}\n", package.categories.get()?);
}
let deps = manifest.dependencies;
Ok(deps.keys().cloned().collect::<Vec<String>>())
}
#[cfg(test)]
mod test {
}