/** * Writes a V2.1 manifest for a given image reference. * * @param imageReference the image reference to store the metadata for * @param manifestTemplate the manifest */ public async Task WriteMetadataAsync(IImageReference imageReference, V21ManifestTemplate manifestTemplate) { SystemPath imageDirectory = cacheStorageFiles.GetImageDirectory(imageReference); Files.CreateDirectories(imageDirectory); using (LockFile ignored1 = LockFile.Create(imageDirectory.Resolve("lock"))) { await WriteMetadataAsync(manifestTemplate, imageDirectory.Resolve("manifest.json")).ConfigureAwait(false); } }
/** * Saves the manifest and container configuration for a V2.2 or OCI image. * * @param imageReference the image reference to store the metadata for * @param manifestTemplate the manifest * @param containerConfiguration the container configuration */ public async Task WriteMetadataAsync( IImageReference imageReference, IBuildableManifestTemplate manifestTemplate, ContainerConfigurationTemplate containerConfiguration) { manifestTemplate = manifestTemplate ?? throw new ArgumentNullException(nameof(manifestTemplate)); Preconditions.CheckNotNull(manifestTemplate.GetContainerConfiguration()); Preconditions.CheckNotNull(manifestTemplate.GetContainerConfiguration().Digest); SystemPath imageDirectory = cacheStorageFiles.GetImageDirectory(imageReference); Files.CreateDirectories(imageDirectory); using (LockFile ignored1 = LockFile.Create(imageDirectory.Resolve("lock"))) { await WriteMetadataAsync(manifestTemplate, imageDirectory.Resolve("manifest.json")).ConfigureAwait(false); await WriteMetadataAsync(containerConfiguration, imageDirectory.Resolve("config.json")).ConfigureAwait(false); } }