| 888 | /// This defaults to using chunking. |
| 889 | #[context("Exporting container")] |
| 890 | pub async fn export_container(&self) -> Result<(ImageReference, oci_image::Digest)> { |
| 891 | let name = "oci-v1"; |
| 892 | let container_path = &self.path.join(name); |
| 893 | if container_path.exists() { |
| 894 | std::fs::remove_dir_all(container_path)?; |
| 895 | } |
| 896 | let imgref = ImageReference { |
| 897 | transport: Transport::OciDir, |
| 898 | name: container_path.as_str().to_string(), |
| 899 | }; |
| 900 | let config = Config { |
| 901 | labels: Some( |
| 902 | [("foo", "bar"), ("test", "value")] |
| 903 | .iter() |
| 904 | .map(|(k, v)| (k.to_string(), v.to_string())) |
| 905 | .collect(), |
| 906 | ), |
| 907 | ..Default::default() |
| 908 | }; |
| 909 | let contentmeta = self.get_object_meta().context("Computing object meta")?; |
| 910 | let contentmeta = ObjectMetaSized::compute_sizes(self.srcrepo(), contentmeta) |
| 911 | .context("Computing sizes")?; |
| 912 | let opts = ExportOpts { |
| 913 | max_layers: std::num::NonZeroU32::new(PKGS_V0_LEN as u32), |
| 914 | package_contentmeta: Some(&contentmeta), |
| 915 | ..Default::default() |
| 916 | }; |
| 917 | let digest = crate::container::encapsulate( |
| 918 | self.srcrepo(), |
| 919 | self.testref(), |
| 920 | &config, |
| 921 | Some(opts), |
| 922 | &imgref, |
| 923 | ) |
| 924 | .await |
| 925 | .context("exporting")?; |
| 926 | Ok((imgref, digest)) |
| 927 | } |
| 928 | |
| 929 | // Generate a directory with some test contents |
| 930 | #[context("Generating temp content")] |