guppy

Struct MetadataCommand

source
pub struct MetadataCommand { /* private fields */ }
Expand description

A builder for configuring cargo metadata invocations.

This is the most common entry point for constructing a PackageGraph.

§Examples

Build a PackageGraph for the Cargo workspace in the current directory:

use guppy::MetadataCommand;
use guppy::graph::PackageGraph;

let mut cmd = MetadataCommand::new();
let package_graph = PackageGraph::from_command(&mut cmd);

Implementations§

source§

impl MetadataCommand

source

pub fn new() -> Self

Creates a default cargo metadata command builder.

By default, this will look for Cargo.toml in the ancestors of this process’s current directory.

source

pub fn cargo_path(&mut self, path: impl Into<PathBuf>) -> &mut Self

Sets the path to the cargo executable.

If unset, this will use the $CARGO environment variable, or else cargo from $PATH.

source

pub fn manifest_path(&mut self, path: impl Into<PathBuf>) -> &mut Self

Sets the path to Cargo.toml.

By default, this will look for Cargo.toml in the ancestors of the current directory. Note that this doesn’t need to be the root Cargo.toml in a workspace – any member of the workspace is fine.

source

pub fn current_dir(&mut self, path: impl Into<PathBuf>) -> &mut Self

Sets the current directory of the cargo metadata process.

By default, the current directory will be inherited from this process.

source

pub fn no_deps(&mut self) -> &mut Self

Output information only about the workspace and do not fetch dependencies.

For full functionality, cargo metadata should be run without --no-deps, so that guppy knows about third-party crates and dependency edges. However, guppy supports a “light” mode if --no-deps is run, in which case the following limitations will apply:

  • dependency queries will not work
  • there will be no information about non-workspace crates

Constructing a graph with this option can be several times faster than the default.

source

pub fn other_options( &mut self, options: impl IntoIterator<Item = impl Into<String>>, ) -> &mut Self

Arbitrary flags to pass to cargo metadata. These will be added to the end of the command invocation.

Note that guppy internally:

  • uses --format-version 1 as its metadata format.
  • passes in --all-features, so that guppy has a full view of the dependency graph.

Attempting to override either of those options may lead to unexpected results.

source

pub fn cargo_command(&self) -> Command

Builds a Command instance. This is the first part of calling exec.

source

pub fn exec(&self) -> Result<CargoMetadata, Error>

Runs the configured cargo metadata and returns a deserialized CargoMetadata.

source

pub fn build_graph(&self) -> Result<PackageGraph, Error>

Runs the configured cargo metadata and returns a parsed PackageGraph.

Trait Implementations§

source§

impl Clone for MetadataCommand

source§

fn clone(&self) -> MetadataCommand

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MetadataCommand

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MetadataCommand

source§

fn default() -> MetadataCommand

Returns the “default value” for a type. Read more
source§

impl<'a> TryFrom<&'a MetadataCommand> for PackageGraph

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(command: &'a MetadataCommand) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<MetadataCommand> for PackageGraph

Although consuming a MetadataCommand is not required for building a PackageGraph, this impl is provided for convenience.

source§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(command: MetadataCommand) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.