[][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.1"

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/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 { repr: "testcrate 0.1.0 (path+file:///fakepath/testcrate)".into() };
// 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::Metadata;
pub use cargo_metadata::MetadataCommand;
pub use cargo_metadata::PackageId;
pub use semver::Version;
pub use serde_json::Value as JsonValue;

Modules

errors

Contains types that describe errors and warnings that guppy methods can return.

graph

Entry point for analyzing Cargo dependency graphs.