ripdoc/cargo_utils/
mod.rs

1//! Utilities for querying Cargo metadata and managing crate sources.
2
3pub use self::cache::{CacheConfig, CacheKey, get_toolchain_version, load_cached, save_cached};
4pub use self::error::{Result, RipdocError};
5pub use self::path::CargoPath;
6pub use self::registry::{fetch_readme, fetch_registry_crate, find_latest_cached_version};
7pub use self::resolved_target::{ResolvedTarget, resolve_target};
8pub use self::rustdoc_error::map_rustdoc_build_error;
9/// Caching layer for rustdoc JSON output.
10pub mod cache;
11/// Error helpers for interacting with Cargo and rustdoc.
12pub mod error;
13/// CargoPath type and cargo crate path resolution.
14pub mod path;
15/// Downloading crates from crates.io into a local cache.
16pub mod registry;
17/// Target resolution to ResolvedTarget type.
18pub mod resolved_target;
19/// Rustdoc error handling and diagnostics extraction.
20pub mod rustdoc_error;
21/// Target parsing utilities.
22pub mod target;
23
24/// Check if rustup is available on the system
25pub fn is_rustup_available() -> bool {
26	use std::process::{Command, Stdio};
27	Command::new("rustup")
28		.arg("--version")
29		.stderr(Stdio::null())
30		.stdout(Stdio::null())
31		.status()
32		.map(|status| status.success())
33		.unwrap_or(false)
34}
35
36/// Convert a package name into its canonical import form by replacing hyphens.
37pub fn to_import_name(package_name: &str) -> String {
38	package_name.replace('-', "_")
39}