mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-08-27 20:36:50 +00:00
Add ProcessedItems property to ZipCreationResult
✅ ENHANCED ZIP RESULT INFORMATION: � NEW PROCESSEDITEM PROPERTY: • Added List<object> ProcessedItems to ZipCreationResult • Contains all FileInfo and DirectoryInfo objects that were processed • Provides detailed information about what was included in the archive • Useful for auditing, logging, and post-processing analysis � IMPLEMENTATION DETAILS: • Tracks items during AddFiles() and AddDirectory() operations • For directories: includes both the DirectoryInfo and all contained FileInfo objects • For file collections: includes all FileInfo objects • Creates a copy of the list in CreateResult() to prevent modification � USAGE EXAMPLES: $result = New-MinIOZipArchive -Directory 'C:\MyFiles' -DestinationPath 'archive.zip' $result.ProcessedItems | Where-Object { $_ -is [System.IO.FileInfo] } | Select-Object Name, Length $result.ProcessedItems | Where-Object { $_ -is [System.IO.DirectoryInfo] } | Select-Object Name ✅ BENEFITS: • Complete audit trail of processed items • Easy filtering by FileInfo vs DirectoryInfo • Detailed file information (size, dates, attributes) • Support for post-processing workflows • Enhanced logging and reporting capabilities Now zip results include comprehensive information about all processed items!
This commit is contained in:
Binary file not shown.
Binary file not shown.
+11
-1
@@ -18,6 +18,7 @@ namespace PSMinIO.Utils
|
|||||||
private readonly ThreadSafeProgressCollector _progressCollector;
|
private readonly ThreadSafeProgressCollector _progressCollector;
|
||||||
private bool _disposed = false;
|
private bool _disposed = false;
|
||||||
private int _totalFiles = 0;
|
private int _totalFiles = 0;
|
||||||
|
private readonly List<object> _processedItems = new List<object>();
|
||||||
|
|
||||||
// Activity IDs for progress tracking
|
// Activity IDs for progress tracking
|
||||||
private const int ZipActivityId = 10;
|
private const int ZipActivityId = 10;
|
||||||
@@ -89,6 +90,9 @@ namespace PSMinIO.Utils
|
|||||||
_totalFiles = fileList.Count;
|
_totalFiles = fileList.Count;
|
||||||
var totalSize = fileList.OfType<FileInfo>().Sum(f => f.Length);
|
var totalSize = fileList.OfType<FileInfo>().Sum(f => f.Length);
|
||||||
|
|
||||||
|
// Track the processed items
|
||||||
|
_processedItems.AddRange(fileList);
|
||||||
|
|
||||||
MinIOLogger.WriteVerbose(_cmdlet, "Starting zip compression: {0} files, {1} total size",
|
MinIOLogger.WriteVerbose(_cmdlet, "Starting zip compression: {0} files, {1} total size",
|
||||||
_totalFiles, SizeFormatter.FormatBytes(totalSize));
|
_totalFiles, SizeFormatter.FormatBytes(totalSize));
|
||||||
|
|
||||||
@@ -113,6 +117,10 @@ namespace PSMinIO.Utils
|
|||||||
_totalFiles = files.Length;
|
_totalFiles = files.Length;
|
||||||
var totalSize = files.Sum(f => f.Length);
|
var totalSize = files.Sum(f => f.Length);
|
||||||
|
|
||||||
|
// Track the processed directory and its files
|
||||||
|
_processedItems.Add(directoryInfo);
|
||||||
|
_processedItems.AddRange(files);
|
||||||
|
|
||||||
MinIOLogger.WriteVerbose(_cmdlet, "Adding directory to zip: {0} ({1} files, {2})",
|
MinIOLogger.WriteVerbose(_cmdlet, "Adding directory to zip: {0} ({1} files, {2})",
|
||||||
directoryInfo.Name, _totalFiles, SizeFormatter.FormatBytes(totalSize));
|
directoryInfo.Name, _totalFiles, SizeFormatter.FormatBytes(totalSize));
|
||||||
|
|
||||||
@@ -220,7 +228,8 @@ namespace PSMinIO.Utils
|
|||||||
TotalUncompressedSize = _zipBuilder.TotalUncompressedSize,
|
TotalUncompressedSize = _zipBuilder.TotalUncompressedSize,
|
||||||
TotalCompressedSize = _zipBuilder.TotalCompressedSize,
|
TotalCompressedSize = _zipBuilder.TotalCompressedSize,
|
||||||
CompressionRatio = _zipBuilder.CompressionRatio,
|
CompressionRatio = _zipBuilder.CompressionRatio,
|
||||||
SpaceSaved = _zipBuilder.TotalUncompressedSize - _zipBuilder.TotalCompressedSize
|
SpaceSaved = _zipBuilder.TotalUncompressedSize - _zipBuilder.TotalCompressedSize,
|
||||||
|
ProcessedItems = new List<object>(_processedItems) // Create a copy of the processed items
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,6 +261,7 @@ namespace PSMinIO.Utils
|
|||||||
public long TotalCompressedSize { get; set; }
|
public long TotalCompressedSize { get; set; }
|
||||||
public double CompressionRatio { get; set; }
|
public double CompressionRatio { get; set; }
|
||||||
public long SpaceSaved { get; set; }
|
public long SpaceSaved { get; set; }
|
||||||
|
public List<object> ProcessedItems { get; set; } = new List<object>();
|
||||||
public double CompressionEfficiency => (1 - CompressionRatio) * 100;
|
public double CompressionEfficiency => (1 - CompressionRatio) * 100;
|
||||||
public double AverageSpeed => Duration.TotalSeconds > 0 ? TotalUncompressedSize / Duration.TotalSeconds : 0;
|
public double AverageSpeed => Duration.TotalSeconds > 0 ? TotalUncompressedSize / Duration.TotalSeconds : 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user