-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed as not planned
Labels
api-suggestionEarly API idea and discussion, it is NOT ready for implementationEarly API idea and discussion, it is NOT ready for implementationarea-System.Formats.Tar
Milestone
Description
Background and motivation
The Tar API that is introduced in #65951 currently provides one option while creating: includeBaseDirectory, and one option while extracting: overwriteFiles.
There are many more options that would make sense, for example controlling the owner/group that gets stored in the tar-file when creating, and controlling whether the exact permissions should be restored (including the setgroup/setuser/sticky bit). See man tar for other options that a user may want to control.
Maybe we want to introduce option classes immediately, to avoid adding additional overloads to the Create/Extract methods.
API Proposal
namespace System.Formats.Tar;
public static partial class TarFile
{
- public static void CreateFromDirectory(string sourceDirectoryName, Stream destination, bool includeBaseDirectory);
- public static void CreateFromDirectory(string sourceDirectoryName, string destinationFileName, bool includeBaseDirectory);
- public static void ExtractToDirectory(Stream source, string destinationDirectoryName, bool overwriteFiles);
- public static void ExtractToDirectory(string sourceFileName, string destinationDirectoryName, bool overwriteFiles);
+ public static void CreateFromDirectory(string sourceDirectoryName, Stream destination, TarCreateOptions? options = null);
+ public static void CreateFromDirectory(string sourceDirectoryName, string destinationFileName, TarCreateOptions? options = null);
+ public static void ExtractToDirectory(Stream source, string destinationDirectoryName, TarExtractOptions? options = null);
+ public static void ExtractToDirectory(string sourceFileName, string destinationDirectoryName, TarExtractOptions? options = null);
}
public abstract partial class TarEntry
{
- public void ExtractToFile(string destinationFileName, bool overwrite);
+ public void ExtractToFile(string destinationFileName, TarExtractOptions? options = null);
}
+public sealed class TarExtractOptions
+{
+ public bool OverwriteFiles { get; set; } = true;
+}
+public sealed class TarCreateOptions
+{
+ public bool IncludeBaseDirectory { get; set; } = true;
+}API Usage
TarFile.CreateFromDirectory("D:/SourceDirectory/", "D:/destination.tar", new() { IncludeBaseDirectory = false });Alternative Designs
No response
Risks
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
api-suggestionEarly API idea and discussion, it is NOT ready for implementationEarly API idea and discussion, it is NOT ready for implementationarea-System.Formats.Tar