diff --git a/src/main/java/land/oras/Index.java b/src/main/java/land/oras/Index.java index f0cbef3..d467080 100644 --- a/src/main/java/land/oras/Index.java +++ b/src/main/java/land/oras/Index.java @@ -205,6 +205,16 @@ public ManifestDescriptor getDescriptor() { return null; } + /** + * Return a new index with the given artifact type + * @param artifactType The artifact type + * @return The index + */ + public Index withArtifactType(String artifactType) { + return new Index( + schemaVersion, mediaType, artifactType, manifests, annotations, subject, descriptor, registry, json); + } + /** * Return a new index with the given descriptor * @param descriptor The descriptor diff --git a/src/test/java/land/oras/IndexTest.java b/src/test/java/land/oras/IndexTest.java index 261f098..d61c0e3 100644 --- a/src/test/java/land/oras/IndexTest.java +++ b/src/test/java/land/oras/IndexTest.java @@ -55,6 +55,18 @@ void shouldReadAndWriteIndex() { result); } + @Test + void shouldAddArtifactType() { + Index index = Index.fromManifests(List.of()); + index = index.withArtifactType("application/vnd.opentofu.provider"); + assertNotNull(index.getArtifactType()); + assertEquals( + "application/vnd.opentofu.provider", index.getArtifactType().getMediaType()); + assertEquals( + "{\"schemaVersion\":2,\"mediaType\":\"application/vnd.oci.image.index.v1+json\",\"artifactType\":\"application/vnd.opentofu.provider\",\"manifests\":[]}", + index.toJson()); + } + @Test void shouldReadAndWriteIndexWithAnnotations() { String json =