-
Notifications
You must be signed in to change notification settings - Fork 903
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
(#2603) Export pin status #2618
base: develop
Are you sure you want to change the base?
Conversation
3f92a95
to
b06294b
Compare
b06294b
to
33c2009
Compare
33c2009
to
ae805d4
Compare
ae805d4
to
5c65aa2
Compare
5c65aa2
to
873033e
Compare
873033e
to
290ac65
Compare
0befa46
to
90132e7
Compare
e378b21
to
b33cdad
Compare
Is there any news on this? It is essential..
So |
@aetonsi This PR is in draft and no milestone has been targetted for its release. |
b33cdad
to
beab8e7
Compare
Rebased on top of #3003 |
This helps ensure that package IDs are handled in a case insensitive manner.
This allows overriding of remembered package parameters, install arguments, cache location and execution timeout during upgrade. So a user can pass in different package parameters or arguments without having to completely reinstall the package or turn off remembered arguments. Switch arguments cannot be checked, because the lack of a switch normally would mean that they are just relying on the remembered args to remember it, so there is no way to determine if an override of the remembered args is appropriate.
…ration This adds a new method, GetPackageConfigFromRememberedArguments which is similar to SetConfigFromRememberedArguments, but operates using a different method. First, a OptionSet is set up, so only the config that is passed in is modified, instead of the config that the global options parser was set with with. Second, it returns the modified configuration instead of the original configuration, because it is the local configuration being modified. Third, it has a more general name and changes log messages to be more general, so it later can more easily be reused for uninstall and export. This change fixes remembered arguments when Chocolatey is used as a library, like in ChocolateyGUI, where the config that is passed to the install_run method is not necessarily the same config object that was used to set up the global argument parser. The downside of using a new commandline parser is that it opens up the possibility of drift between the upgrade/global arguments and this added parser. However, this is not an issue because the format of the saved arguments is known, and any added arguments there would not work without being added here as well, which would be picked up during development.
Instead of exporting via building an xml document manually, this creates a PackagesConfigFilePackageSetting and serializes that to create the xml document that is saved. This allows for usage of the same class as is used to read in packages.config files to export those files. The reason the various "Specified" members are added to the PackagesConfigFilePackageSetting class is so if an element is not set during export, it will not show up at all in the resulting serialized packages.config file.
This adds the --include-remembered-arguments option which is used to export any remembered arguments. It reuses the GetPackageConfigFromRememberedArguments method in the NugetService to read and parse the remembered arguments.
This adds the ability for the export command to include pins in the exported file. They will be exported if --include-arguments is specified, but can be excluded with --exclude-pins.
beab8e7
to
d2f06e3
Compare
Will this feature ever become a reality? |
Description Of Changes
This adds the ability for the export command to include pins in the
exported file. They will be exported if --include-arguments is
specified, but can be excluded with --exclude-pins.
Motivation and Context
See #2603
Testing
.\choco.exe install iperf2 wget --allow-unofficial
.\choco.exe pin add -n iperf2 --allow-unofficial
.\choco.exe export --include-arguments --allow-unofficial
packages.config
includes<package id="iperf2" pinPackage="true" />
.\choco.exe export --include-argument --exclude-pins --allow-unofficial
packages.config
does not includepinPackage
foriperf2
Change Types Made
Related Issue
Fixes #2603
Depends on #2506 (and thus #3003 as well)
Change Checklist