[−][src]Crate guppy
Track and query Cargo dependency graphs.
guppy
provides a Rust interface to run queries over Cargo dependency graphs. guppy
parses
the output of cargo metadata
,
then presents a graph interface over it.
Usage
Add the following to Cargo.toml
:
[dependencies]
guppy = "0.3"
Examples
Print out all direct dependencies of a package:
use guppy::graph::PackageGraph; use guppy::PackageId; // `guppy` accepts `cargo metadata` JSON output. Use a pre-existing fixture for these examples. let fixture = include_str!("../fixtures/small/metadata1.json"); let package_graph = PackageGraph::from_json(fixture).unwrap(); // `guppy` provides several ways to get hold of package IDs. Use a pre-defined one for this // example. let package_id = PackageId::new("testcrate 0.1.0 (path+file:///fakepath/testcrate)"); // dep_links returns all direct dependencies of a package, and it returns `None` if the package // ID isn't recognized. for link in package_graph.dep_links(&package_id).unwrap() { // A dependency link contains `from`, `to` and `edge`. The edge has information about e.g. // whether this is a build dependency. println!("direct dependency: {}", link.to.id()); }
For more examples, see
the examples
directory.
Re-exports
pub use errors::Error; |
pub use cargo_metadata::DependencyKind; |
pub use cargo_metadata::Metadata; |
pub use cargo_metadata::MetadataCommand; |
pub use semver::Version; |
pub use serde_json::Value as JsonValue; |
Modules
errors | Contains types that describe errors and warnings that |
graph | Entry point for analyzing Cargo dependency graphs. |
Structs
PackageId | An "opaque" identifier for a package. |
Platform | A platform to evaluate target specs against. |
Enums
TargetFeatures | A set of target features to match. |