1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
use crate::distribution::{Registry, RegistryError}; pub mod manifest; pub use manifest::ManifestV2; #[derive(Debug)] pub struct Image<'a> { registry: &'a Registry, manifest: ManifestV2, } impl<'a> Image<'a> { /// Create a new image given a specific repository /// /// Consider using [Registry::image] instead. /// /// # Example /// ``` ///# extern crate opencontainers; ///# use opencontainers::Registry; ///# let registry = Registry::new("https://registry-1.docker.io"); /// let image = opencontainers::Image::new(®istry, "library/hello-world", "latest") /// .expect("Could not get image"); /// ``` pub fn new(registry: &'a Registry, name: &str, reference: &str) -> Result<Self, RegistryError> { let manifest = registry.manifest(name, reference)?; Ok(Self { registry, manifest }) } /// Return an image manifest /// /// # Example /// ``` ///# extern crate opencontainers; ///# use opencontainers::Registry; ///# let registry = Registry::new("https://registry-1.docker.io"); /// let manifest = registry.image("library/hello-world", "latest") /// .expect("Could not get image") /// .manifest(); /// ``` pub fn manifest(&self) -> &ManifestV2 { &self.manifest } }