blob: 7b0463a5a6e56ff4d2f0d0fa902edcf006734dfe [file] [log] [blame] [view]
% Machine readable output.
Cargo can output information about project and build in JSON format.
# Information about project structure
You can use `cargo metadata` command to get information about project structure
and dependencies. The output of the command looks like this:
```text
{
// Integer version number of the format.
"version": integer,
// List of packages for this workspace, including dependencies.
"packages": [
{
// Opaque package identifier.
"id": PackageId,
"name": string,
"version": string,
"source": SourceId,
// A list of declared dependencies, see `resolve` field for actual dependencies.
"dependencies": [ Dependency ],
"targets: [ Target ],
// Path to Cargo.toml
"manifest_path": string,
}
],
"workspace_members": [ PackageId ],
// Dependencies graph.
"resolve": {
"nodes": [
{
"id": PackageId,
"dependencies": [ PackageId ]
}
]
}
}
```
# Compiler errors
If you supply `--message-format json` to commands like `cargo build`, Cargo
reports compilation errors and warnings in JSON format. Messages go to the
standard output. Each message occupies exactly one line and does not contain
internal `\n` symbols, so it is possible to process messages one by one
without waiting for the whole build to finish.
The message format looks like this:
```text
{
// Type of the message.
"reason": "compiler-message",
// Unique opaque identifier of compiled package.
"package_id": PackageId,
// Unique specification of a particular target within the package.
"target": Target,
// The error message from the compiler in JSON format.
"message": {...}
}
```
Package and target specification are the same that `cargo metadata` uses.