diff --git a/src/SharpCompress/Archives/GZip/GZipArchive.Factory.cs b/src/SharpCompress/Archives/GZip/GZipArchive.Factory.cs index 16092968..40771a23 100644 --- a/src/SharpCompress/Archives/GZip/GZipArchive.Factory.cs +++ b/src/SharpCompress/Archives/GZip/GZipArchive.Factory.cs @@ -16,8 +16,8 @@ namespace SharpCompress.Archives.GZip; public partial class GZipArchive #if NET8_0_OR_GREATER - : IArchiveOpenable, - IMultiArchiveOpenable + : IWritableArchiveOpenable, + IMultiArchiveOpenable #endif { public static IWritableAsyncArchive OpenAsyncArchive( @@ -141,7 +141,9 @@ public partial class GZipArchive return (IWritableAsyncArchive)OpenArchive(fileInfos, readerOptions); } - public static GZipArchive CreateArchive() => new(); + public static IWritableArchive CreateArchive() => new GZipArchive(); + + public static IWritableAsyncArchive CreateAsyncArchive() => new GZipArchive(); public static bool IsGZipFile(string filePath) => IsGZipFile(new FileInfo(filePath)); diff --git a/src/SharpCompress/Archives/IArchiveOpenable.cs b/src/SharpCompress/Archives/IArchiveOpenable.cs index d884aed0..e5ae52b3 100644 --- a/src/SharpCompress/Archives/IArchiveOpenable.cs +++ b/src/SharpCompress/Archives/IArchiveOpenable.cs @@ -36,4 +36,5 @@ public interface IArchiveOpenable CancellationToken cancellationToken = default ); } + #endif diff --git a/src/SharpCompress/Archives/IWritableArchiveOpenable.cs b/src/SharpCompress/Archives/IWritableArchiveOpenable.cs new file mode 100644 index 00000000..a21f4e4a --- /dev/null +++ b/src/SharpCompress/Archives/IWritableArchiveOpenable.cs @@ -0,0 +1,10 @@ +#if NET8_0_OR_GREATER +namespace SharpCompress.Archives; + +public interface IWritableArchiveOpenable + : IArchiveOpenable +{ + public static abstract IWritableArchive CreateArchive(); + public static abstract IWritableAsyncArchive CreateAsyncArchive(); +} +#endif \ No newline at end of file diff --git a/src/SharpCompress/Archives/Tar/TarArchive.Factory.cs b/src/SharpCompress/Archives/Tar/TarArchive.Factory.cs index 5ce2d944..27a32da9 100644 --- a/src/SharpCompress/Archives/Tar/TarArchive.Factory.cs +++ b/src/SharpCompress/Archives/Tar/TarArchive.Factory.cs @@ -16,8 +16,8 @@ namespace SharpCompress.Archives.Tar; public partial class TarArchive #if NET8_0_OR_GREATER - : IArchiveOpenable, - IMultiArchiveOpenable + : IWritableArchiveOpenable, + IMultiArchiveOpenable #endif { public static IWritableArchive OpenArchive(string filePath, ReaderOptions? readerOptions = null) @@ -165,5 +165,7 @@ public partial class TarArchive return false; } - public static TarArchive CreateArchive() => new(); + public static IWritableArchive CreateArchive() => new TarArchive(); + + public static IWritableAsyncArchive CreateAsyncArchive() => new TarArchive(); } diff --git a/src/SharpCompress/Archives/Zip/ZipArchive.Factory.cs b/src/SharpCompress/Archives/Zip/ZipArchive.Factory.cs index 85110f12..18b48463 100644 --- a/src/SharpCompress/Archives/Zip/ZipArchive.Factory.cs +++ b/src/SharpCompress/Archives/Zip/ZipArchive.Factory.cs @@ -14,8 +14,8 @@ namespace SharpCompress.Archives.Zip; public partial class ZipArchive #if NET8_0_OR_GREATER - : IArchiveOpenable, - IMultiArchiveOpenable + : IWritableArchiveOpenable, + IMultiArchiveOpenable #endif { public static IWritableArchive OpenArchive(string filePath, ReaderOptions? readerOptions = null) @@ -266,7 +266,9 @@ public partial class ZipArchive } } - public static ZipArchive CreateArchive() => new(); + public static IWritableArchive CreateArchive() => new ZipArchive(); + + public static IWritableAsyncArchive CreateAsyncArchive() => new ZipArchive(); public static async ValueTask IsZipMultiAsync( Stream stream, diff --git a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs index 050db885..a4dfa7a2 100644 --- a/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Tar/TarArchiveAsyncTests.cs @@ -137,7 +137,7 @@ public class TarArchiveAsyncTests : ArchiveTests var scratchPath = Path.Combine(SCRATCH_FILES_PATH, "Tar.tar"); var unmodified = Path.Combine(TEST_ARCHIVES_PATH, "Tar.noEmptyDirs.tar"); - using (var archive = TarArchive.CreateArchive()) + using (var archive = TarArchive.CreateAsyncArchive()) { archive.AddAllFromDirectory(ORIGINAL_FILES_PATH); var twopt = new TarWriterOptions(CompressionType.None, true); diff --git a/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs index d16bec4f..961cfccf 100644 --- a/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs +++ b/tests/SharpCompress.Test/Zip/ZipArchiveAsyncTests.cs @@ -167,7 +167,7 @@ public class ZipArchiveAsyncTests : ArchiveTests var scratchPath = Path.Combine(SCRATCH_FILES_PATH, "Zip.deflate.noEmptyDirs.zip"); var unmodified = Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.noEmptyDirs.zip"); - using (ZipArchive archive = ZipArchive.CreateArchive()) + using (var archive = ZipArchive.CreateAsyncArchive()) { archive.DeflateCompressionLevel = CompressionLevel.BestSpeed; archive.AddAllFromDirectory(ORIGINAL_FILES_PATH);