#
cargo_util_schemas/
messages.rs

    1//! Schemas for JSON messages emitted by Cargo.
    2
    3use std::collections::BTreeMap;
    4use std::path::PathBuf;
    5
    6/// File information of a package archive generated by `cargo package --list`.
    7#[derive(Debug, serde::Serialize)]
    8#[serde(rename_all = "snake_case")]
    9pub struct PackageList {
    10    /// The Package ID Spec of the package.
    11    pub id: crate::core::PackageIdSpec,
    12    /// A map of relative paths in the archive to their detailed file information.
    13    pub files: BTreeMap<PathBuf, PackageFile>,
    14}
    15
    16/// Where the file is from.
    17#[derive(Debug, serde::Serialize)]
    18#[serde(rename_all = "snake_case", tag = "kind")]
    19pub enum PackageFile {
    20    /// File being copied from another location.
    21    Copy {
    22        /// An absolute path to the actual file content
    23        path: PathBuf,
    24    },
    25    /// File being generated during packaging
    26    Generate {
    27        /// An absolute path to the original file the generated one is based on.
    28        /// if any.
    29        #[serde(skip_serializing_if = "Option::is_none")]
    30        path: Option<PathBuf>,
    31    },
    32}