buildkit_llb/serialization/
output.rs1use buildkit_proto::pb;
2use prost::Message;
3use sha2::{Digest, Sha256};
4
5#[derive(Debug, Default, Clone)]
6pub(crate) struct Node {
7 pub bytes: Vec<u8>,
8 pub digest: String,
9 pub metadata: pb::OpMetadata,
10}
11
12impl Node {
13 pub fn new(message: pb::Op, metadata: pb::OpMetadata) -> Self {
14 let mut bytes = Vec::new();
15 message.encode(&mut bytes).unwrap();
16
17 Self {
18 digest: Self::get_digest(&bytes),
19 bytes,
20 metadata,
21 }
22 }
23
24 pub fn get_digest(bytes: &[u8]) -> String {
25 let mut hasher = Sha256::new();
26 hasher.input(&bytes);
27
28 format!("sha256:{:x}", hasher.result())
29 }
30}