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.
Add the following to Cargo.toml
:
toml
[dependencies]
guppy = "0.1"
Print out all direct dependencies of a package:
```rust use guppy::graph::PackageGraph; use guppy::PackageId;
// guppy
accepts cargo metadata
JSON output. Use a pre-existing fixture for these examples.
let fixture = includestr!("../fixtures/small/metadata1.json");
let packagegraph = PackageGraph::from_json(fixture).unwrap();
// guppy
provides several ways to get hold of package IDs. Use a pre-defined one for this
// example.
let packageid = PackageId { repr: "testcrate 0.1.0 (path+file:///fakepath/testcrate)".into() };
// deplinks returns all direct dependencies of a package, and it returns None
if the package
// ID isn't recognized.
for link in packagegraph.deplinks(&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.
See the CONTRIBUTING file for how to help out.
This project is available under the terms of either the Apache 2.0 license or the MIT license.