#![allow(unused)]
use std::path::{Path, PathBuf};
pub fn builder_for_crate(
test_crate: impl AsRef<Path>,
target_dir: impl AsRef<Path>,
) -> public_api::Builder {
let json = rustdoc_json_path_for_crate(test_crate, target_dir);
public_api::Builder::from_rustdoc_json(json)
}
pub fn simplified_builder_for_crate(
test_crate: impl AsRef<Path>,
target_dir: impl AsRef<Path>,
) -> public_api::Builder {
builder_for_crate(test_crate, target_dir)
.omit_blanket_impls(true)
.omit_auto_trait_impls(true)
}
pub fn rustdoc_json_path_for_crate(
test_crate: impl AsRef<Path>,
target_dir: impl AsRef<Path>,
) -> PathBuf {
let mut manifest_path = test_crate.as_ref().to_path_buf();
manifest_path.push("Cargo.toml");
rustdoc_json::Builder::default()
.manifest_path(&manifest_path)
.toolchain("nightly")
.target_dir(target_dir)
.quiet(true)
.build()
.unwrap_or_else(|_| {
panic!(
"Failed to build rustdoc JSON for {:?} (current dir: {:?})",
test_crate.as_ref(),
std::env::current_dir()
)
})
}
pub fn rustdoc_json_path_for_temp_crate(temp_crate: impl AsRef<Path>) -> PathBuf {
rustdoc_json_path_for_crate(temp_crate.as_ref(), temp_crate.as_ref())
}