///|
fn main {
try {
// SHA-256 of the raw bytes "abc", supplied by the application's hash provider.
let payload : Array[@bag.FileRecord] = [
{
path: "data/abc.txt",
size: 3L,
digests: {
"sha256": "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
},
},
]
let tags = @bag.create_tags(payload, algorithms=[@bag.Sha256])
println(tags.get("manifest-sha256.txt").unwrap())
let tags_on_disk = tags
.iter()
.map(pair => {
let (path, text) = pair
// There is no tag manifest here, so these tag digests are not required.
@bag.FileRecord::{
path,
size: text.length().to_int64(),
digests: Map([]),
}
})
.collect()
let files = payload.copy()
files.append(tags_on_disk)
let report = @bag.validate({ files, directories: ["data"], texts: tags, })
println("complete=\{report.complete}; valid=\{report.valid}")
} catch {
@bag.Invalid(message) => println(message)
}
}