This library provides a convenient way to interact with the specifications defined by the Open Container Initiative (OCI).
toml
[dependencies]
oci-spec = "0.6.0"
Compiler support: requires rustc 1.54+
If you want to propose or cut a new release, then please follow our release process documentation.
let imagemanifest = ImageManifest::fromfile("manifest.json").unwrap(); asserteq!(imagemanifest.layers().len(), 5); ```
let config = DescriptorBuilder::default() .media_type(MediaType::ImageConfig) .size(7023) .digest("sha256:b5b2b2c507a0944348e0303114d8d93aaaa081732b86451d9bce1f432a537bc7") .build() .expect("build config descriptor");
let layers: Vec
let imagemanifest = ImageManifestBuilder::default() .schemaversion(SCHEMA_VERSION) .config(config) .layers(layers) .build() .expect("build image manifest");
imagemanifest.tofile_pretty("my-manifest.json").unwrap(); ```
json
{
"schemaVersion": 2,
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"digest": "sha256:b5b2b2c507a0944348e0303114d8d93aaaa081732b86451d9bce1f432a537bc7",
"size": 7023
},
"layers": [
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0",
"size": 32654
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b",
"size": 16724
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:ec4b8955958665577945c89419d1af06b5f7636b4ac3da7f12184802ad867736",
"size": 73109
}
]
}
let list = RepositoryListBuilder::default() .repositories(vec!["busybox".to_owned()]) .build().unwrap(); ```
This project welcomes your PRs and issues. Should you wish to work on an issue, please claim it first by commenting on the issue that you want to work on it. This is to prevent duplicated efforts from contributers on the same issue.