crev_data/proof/
package_info.rs1use crate::proof;
2
3use crev_common::serde::{as_base64, from_base64};
4use derive_builder::Builder;
5pub use semver::Version;
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Builder, Serialize, Deserialize, PartialEq, Hash, Eq)]
9pub struct PackageId {
10 pub source: String,
11 pub name: String,
12}
13
14#[derive(Clone, Debug, Builder, Serialize, Deserialize, PartialEq, Hash, Eq)]
15pub struct PackageVersionId {
16 #[serde(flatten)]
17 pub id: PackageId,
18 pub version: Version,
19}
20
21impl PackageVersionId {
22 #[must_use]
23 pub fn new(source: String, name: String, version: Version) -> Self {
24 Self {
25 id: PackageId { source, name },
26 version,
27 }
28 }
29}
30
31#[derive(Clone, Debug, Builder, Serialize, Deserialize, PartialEq)]
32pub struct PackageInfo {
33 #[serde(flatten)]
34 pub id: PackageVersionId,
35
36 #[serde(skip_serializing_if = "proof::equals_default", default)]
37 pub revision: String,
38 #[serde(
39 rename = "revision-type",
40 skip_serializing_if = "proof::equals_default_revision_type",
41 default = "proof::default_revision_type"
42 )]
43 pub revision_type: String,
44
45 #[serde(serialize_with = "as_base64", deserialize_with = "from_base64")]
46 pub digest: Vec<u8>,
47 #[serde(
48 skip_serializing_if = "proof::equals_default_digest_type",
49 default = "proof::default_digest_type"
50 )]
51 pub digest_type: String,
52}