Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Archive module preview 1 PR #131

Merged
merged 43 commits into from
Aug 11, 2022

Conversation

ayousuf23
Copy link
Contributor

@ayousuf23 ayousuf23 commented Jul 21, 2022

PR Summary

This PR includes code for the preview 1 release of the Microsoft.PowerShell.Archive v2.0.0 module.

This PR is a rewrite if the Compress-Archive cmdlet in C# (previously, it was written in PowerShell Script). It has support for creating, updating, and overwriting archives. As of now, only zip and zip64 are supported (the .NET APIs for zip and zip64 are the same).

The PR has support for preserving path structure in relative paths. It also has a -Format parameter which can used to specify the format of the archive. As of now, -Format has only one option: -Format zip. When additional formats are supported by the module in preview 3, the -Format parameter will be more useful by providing options for tar and compressed tar.

An abstraction was created for archives -- the IArchive interface -- so new archive formats can be added to the module easily.

To update an archive, use the -WriteMode Update parameter. To overwrite an archive, use the -WriteMode Overwrite parameter.

For more information regarding behavior of the parameters, please see the RFC #117.

PR Context

To keep the PowerShell/Microsoft.PowerShell.Archive repository up to date with preview 1 code.

t-ayousuf and others added 24 commits July 12, 2022 11:02
…added support for tar, added support for overwrite
…preserved, fixed bug where error and warning messages were not being shown
@iSazonov
Copy link

What are the benefits of c# vs ps?

@ayousuf23
Copy link
Contributor Author

What are the benefits of c# vs ps?

The main benefit is performance, which has been an issue for the archive module.

@iSazonov
Copy link

Where exactly is the perf problem? I very much doubt that the problem was in PowerShell Engine.

@ayousuf23
Copy link
Contributor Author

Where exactly is the perf problem? I very much doubt that the problem was in PowerShell Engine.

Mainly compressing and expanding archives would take a long time. Although we are limited by the .NET APIs, rewriting the module in C# reduces overhead.

@iSazonov
Copy link

iSazonov commented Aug 3, 2022

I'd split the PR on some ones:

  1. .globalconfig, .editorconfig, .gitignore, .gitattributes, ...
  2. build ps1 scripts and yml files
  3. sln and cs files with dummy cmdlets and dummy tests so that we get working dev environment
  4. PR with new cmdlets and tests

@ayousuf23
Copy link
Contributor Author

I have to step out soon. I'll try to get through all unresolved conversations.

…me is not necessarily equal to FileSystemInfo.Name
…e CI status, fixed a bug where a path is determined to be relative to the working directory if the working directory is on a different drive than the path
Copy link
Collaborator

@SeeminglyScience SeeminglyScience left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
5 participants