cargo_resources/
specifications.rs1use crate::resource_encoding::ResourceEncoding;
2use crate::{ResourceName, ResourceSha};
3use cargo_metadata::camino::Utf8PathBuf;
4use cargo_metadata::semver::Version;
5use cargo_metadata::Package;
6
7#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)]
9pub struct ResourceSpecification {
10 pub declaring_crate_name: String,
12 pub declaring_crate_version: Version,
14
15 pub encoding: ResourceEncoding,
17
18 pub full_crate_path: Utf8PathBuf,
20
21 pub output_path: Utf8PathBuf,
23
24 pub resource_name: String,
26
27 pub is_local: bool
29}
30
31#[derive(serde::Deserialize, Debug)]
33pub struct ResourceConsumerSpecification {
34 pub resource_root: Utf8PathBuf,
36
37 pub required_resources: Vec<ResourceRequirement>
39}
40
41#[derive(serde::Deserialize, Debug)]
43pub struct ResourceRequirement {
44 pub resource_name: ResourceName,
46
47 pub required_sha: Option<ResourceSha>
49}
50
51#[derive(Debug)]
53pub (crate) struct PackageDetails<'m> {
54 is_dependency: bool,
56
57 pub (crate) package: &'m Package
59}
60
61impl<'m> PackageDetails<'m> {
62 pub (crate) fn new(package: &'m Package) -> Self {
64 Self {
65 is_dependency: false,
66 package,
67 }
68 }
69
70 pub (crate) fn set_is_dependency(&mut self) {
72 self.is_dependency = true;
73 }
74
75 pub (crate) fn is_dependency(&self) -> bool {
77 self.is_dependency
78 }
79
80}