Uh oh!
There was an error while loading. Please reload this page.
Mrdrwest issue#66 bugfix - #68
Conversation
The modification processes hidden files, but it does not preserve the compressed files Hidden attribute in the zip archive. |
dwest (mrdrwest)
left a comment
There was a problem hiding this comment.
Resubmitted due to build failure.
Kirk Munro (KirkMunro)
left a comment
There was a problem hiding this comment.
Thanks for this PR. It's off to a good start, but I left some comments about whitespace changes that should be undone, and I tried to answer the question you left in a comment.
Also, for this PR to be accepted, additional Pester tests should be added to verify that it works on Windows/macOS/Linux, archiving hidden files and restoring them as hidden.
| $createdItem = New-Item -Path $DestinationPath -ItemType Directory -Confirm:$isConfirm -Verbose:$isVerbose -ErrorAction Stop | ||
| if($createdItem -ne $null -and $createdItem.PSProvider.Name -ne "FileSystem") | ||
| if($null -ne $createdItem -and $createdItem.PSProvider.Name -ne "FileSystem") | ||
| { |
There was a problem hiding this comment.
Thank you for this PR, and for some of the best practice changes. It is very much appreciated.
| $archiveFileStream = New-Object -TypeName System.IO.FileStream -ArgumentList $archiveFileStreamArgs | ||
| $zipArchiveArgs = @($archiveFileStream, [System.IO.Compression.ZipArchiveMode]::Update, $false) |
There was a problem hiding this comment.
It looks like you have additional whitespace changes in the PR that shouldn't be included. Can you please remove them?
| $zipArchive = New-Object -TypeName System.IO.Compression.ZipArchive -ArgumentList $zipArchiveArgs | ||
| $currentEntryCount = 0 |
There was a problem hiding this comment.
Ditto on whitespace changes.
| $relativeFilePath = [System.IO.Path]::GetFileName($currentFilePath) | ||
| } | ||
| # Update mode is selected. |
There was a problem hiding this comment.
Ditto on whitespace changes.
| $srcStream = New-Object System.IO.BinaryReader $currentFileStream | ||
| $entryPath = DirectorySeparatorNormalizeHelper $relativeFilePath |
There was a problem hiding this comment.
Ditto on whitespace changes.
| { | ||
| $destStream.Write($buffer, 0, $numberOfBytesRead) | ||
| $destStream.Write($buffer, 0, $numberOfBytesRead) # can file attributes be specified here | ||
| $destStream.Flush() |
There was a problem hiding this comment.
To address your comment, looking at the docs it seems that each ZipArchiveEntry has an ExternalAttributes property that is OS and application dependent. I would start testing with that property, see what is captured in it when an archive is created, and what can be restored when an archive is extracted.
Travis Plunk (TravisEz13)
commented
Jul 7, 2022
/azp run PowerShell.Microsoft.PowerShell.Archive |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Modified script to process hidden files. Added -Force switch to the (only) Get-ChildItem cmdlet and the Get-Item cmdlet with the LastWriteTime member property.