Create simple metadata parser

finchie
Apr 13, 2024, 8:07 AM
7CVIL7UJBYEZ4KHKPJ7ZYSVQ7BLQWWUSJLJR5FOXBICQTD5ETK4QC

Dependencies

Change contents

  • file addition: src (d--r------)
    [2.1]
  • file addition: main.rs (----------)
    [0.15]
    use cargo_metadata::{Node, PackageId};
    #[derive(Clone, Debug)]
    struct CrateMetadata<'metadata> {
    data: &'metadata cargo_metadata::Metadata,
    packages: &'metadata Vec<Node>,
    root: &'metadata PackageId,
    }
    impl<'metadata> CrateMetadata<'metadata> {
    fn new(metadata: &'metadata cargo_metadata::Metadata) -> Self {
    let resolve = metadata
    .resolve
    .as_ref()
    .expect("Cargo did not resolve dependencies");
    let root = resolve.root.as_ref().expect("Must select a root crate");
    Self {
    data: metadata,
    packages: &resolve.nodes,
    root,
    }
    }
    }
    fn main() {
    let cmd = cargo_metadata::MetadataCommand::new();
    let metadata = cmd.exec().expect("Cargo did not resolve metadata");
    let root_crate = CrateMetadata::new(&metadata);
    dbg!(root_crate.root);
    }
  • file addition: Cargo.toml (----------)
    [2.1]
    [package]
    name = "depwiz"
    version = "0.1.0"
    edition = "2021"
    [dependencies]
    cargo_metadata = "0.18.1"
  • file addition: Cargo.lock (----------)
    [2.1]
    # This file is automatically @generated by Cargo.
    # It is not intended for manual editing.
    version = 3
    [[package]]
    name = "camino"
    version = "1.1.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "cargo-platform"
    version = "0.1.8"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "cargo_metadata"
    version = "0.18.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
    dependencies = [
    "camino",
    "cargo-platform",
    "semver",
    "serde",
    "serde_json",
    "thiserror",
    ]
    [[package]]
    name = "depwiz"
    version = "0.1.0"
    dependencies = [
    "cargo_metadata",
    ]
    [[package]]
    name = "itoa"
    version = "1.0.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
    [[package]]
    name = "proc-macro2"
    version = "1.0.79"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
    dependencies = [
    "unicode-ident",
    ]
    [[package]]
    name = "quote"
    version = "1.0.36"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
    dependencies = [
    "proc-macro2",
    ]
    [[package]]
    name = "ryu"
    version = "1.0.17"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
    [[package]]
    name = "semver"
    version = "1.0.22"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
    dependencies = [
    "serde",
    ]
    [[package]]
    name = "serde"
    version = "1.0.197"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
    dependencies = [
    "serde_derive",
    ]
    [[package]]
    name = "serde_derive"
    version = "1.0.197"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "serde_json"
    version = "1.0.115"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
    dependencies = [
    "itoa",
    "ryu",
    "serde",
    ]
    [[package]]
    name = "syn"
    version = "2.0.58"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
    dependencies = [
    "proc-macro2",
    "quote",
    "unicode-ident",
    ]
    [[package]]
    name = "thiserror"
    version = "1.0.58"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
    dependencies = [
    "thiserror-impl",
    ]
    [[package]]
    name = "thiserror-impl"
    version = "1.0.58"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
    dependencies = [
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "unicode-ident"
    version = "1.0.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
  • file addition: .ignore (----------)
    [2.1]
    .git
    .DS_Store
    # Added by cargo
    /target