Skip to content

Commit

Permalink
(chocolatey#2603) Export pin status
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
TheCakeIsNaOH committed Dec 24, 2024
1 parent 47e61ca commit 389b9b8
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ $commandOptions = @{
config = "--name='' --value=''"
feature = "--name=''"
apikey = "--source='' --api-key='' --remove"
export = "--include-version-numbers --output-file-path='' --include-remembered-arguments"
export = "--include-version-numbers --output-file-path='' --include-remembered-arguments --exclude-pins"
template = "--name=''"
cache = "--expired"
rule = "--name=''"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,12 @@ public void Should_add_include_remembered_arguments_to_the_option_set()
{
_optionSet.Contains("include-remembered-arguments").Should().BeTrue();
}

[Fact]
public void Should_add_exclude_pins_to_the_option_set()
{
_optionSet.Contains("exclude-pins").Should().BeTrue();
}
}

public class When_handling_additional_argument_parsing : ChocolateyExportCommandSpecsBase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ public void ConfigureArgumentParser(OptionSet optionSet, ChocolateyConfiguration
.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. Available in 2.3.0+",
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. Available in 2.4.0+",
option => configuration.ExportCommand.ExcludePins = option != null)
;
}

Expand Down Expand Up @@ -108,6 +111,7 @@ choco export [<options/switches>]
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'""
Expand Down Expand Up @@ -145,7 +149,12 @@ public bool MayRequireAdminAccess()

public void DryRun(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}".FormatWith(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}".FormatWith(
Environment.NewLine,
configuration.ExportCommand.OutputFilePath,
configuration.ExportCommand.IncludeVersionNumbers,
configuration.ExportCommand.IncludeRememberedPackageArguments,
configuration.ExportCommand.ExcludePins));
}

public void Run(ChocolateyConfiguration configuration)
Expand Down Expand Up @@ -207,6 +216,11 @@ public void Run(ChocolateyConfiguration configuration)
// if (configuration.Features.FailOnStandardError) packageElement.FailOnStderr = true;
// if (!configuration.Features.UsePowerShellHost) packageElement.UseSystemPowershell = true;

if (!configuration.ExportCommand.ExcludePins && pkgInfo.IsPinned)
{
xw.WriteAttributeString("pinPackage", "true");
}

// Make sure to reset the configuration so as to be able to parse the next set of remembered arguments
configuration.RevertChanges();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,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; }
}
Expand Down

0 comments on commit 389b9b8

Please sign in to comment.