From 873033e2b6713484df68d22f34ffecf47584d69c Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Thu, 24 Feb 2022 23:08:02 -0600 Subject: [PATCH] (#2603) Export pin status 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. --- .../commands/ChocolateyExportCommandSpecs.cs | 6 ++++++ .../commands/ChocolateyExportCommand.cs | 15 ++++++++++++++- .../configuration/ChocolateyConfiguration.cs | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs index 7bcc4a673d..83749eb799 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs @@ -117,6 +117,12 @@ public void should_add_include_remembered_arguments_to_the_option_set() { optionSet.Contains("include-remembered-arguments").ShouldBeTrue(); } + + [Fact] + public void should_add_exclude_pins_to_the_option_set() + { + optionSet.Contains("exclude-pins").ShouldBeTrue(); + } } public class when_handling_additional_argument_parsing : ChocolateyExportCommandSpecsBase diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyExportCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyExportCommand.cs index fffb495995..b278fbc8ea 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyExportCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyExportCommand.cs @@ -58,6 +58,9 @@ public void configure_argument_parser(OptionSet optionSet, ChocolateyConfigurati .Add("include-arguments|include-remembered-arguments", "Include Remembered Arguments - controls whether or not remembered arguments for each package appear in generated file. Defaults to false.", option => configuration.ExportCommand.IncludeRememberedPackageArguments = option != null) + .Add("exclude-pins", + "Exclude Pins - controls whether or not pins are included. Only applies if remembered arguments are exported. Defaults to false.", + option => configuration.ExportCommand.ExcludePins = option != null) ; } @@ -104,6 +107,7 @@ choco export [] choco export choco export --include-version-numbers choco export --include-version-numbers --include-remembered-arguments + choco export --include-remembered-arguments --exclude-pins choco export ""'c:\temp\packages.config'"" choco export ""'c:\temp\packages.config'"" --include-version-numbers choco export -o=""'c:\temp\packages.config'"" @@ -141,7 +145,11 @@ public bool may_require_admin_access() public void noop(ChocolateyConfiguration configuration) { - this.Log().Info("Export would have been with options: {0} Output File Path={1}{0} Include Version Numbers:{2}{0} Include Remembered Arguments: {3}".format_with(Environment.NewLine, configuration.ExportCommand.OutputFilePath, configuration.ExportCommand.IncludeVersionNumbers, configuration.ExportCommand.IncludeRememberedPackageArguments)); + this.Log().Info("Export would have been with options: {0} Output File Path={1}{0} Include Version Numbers:{2}{0} Include Remembered Arguments: {3}{0} Exclude Pins: {4}".format_with( + Environment.NewLine, configuration.ExportCommand.OutputFilePath, + configuration.ExportCommand.IncludeVersionNumbers, + configuration.ExportCommand.IncludeRememberedPackageArguments, + configuration.ExportCommand.ExcludePins)); } public void run(ChocolateyConfiguration configuration) @@ -221,6 +229,11 @@ public void run(ChocolateyConfiguration configuration) //Make sure to reset the configuration configuration = originalConfiguration.deep_copy(); + + if (!configuration.ExportCommand.ExcludePins && pkgInfo.IsPinned) + { + xw.WriteAttributeString("pinPackage", "true"); + } } xw.WriteEndElement(); diff --git a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs index c796e4835e..ed5ab45a3a 100644 --- a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs +++ b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs @@ -573,6 +573,7 @@ public sealed class ExportCommandConfiguration { public bool IncludeVersionNumbers { get; set; } public bool IncludeRememberedPackageArguments { get; set; } + public bool ExcludePins { get; set; } public string OutputFilePath { get; set; } }