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 Jan 13, 2023
1 parent 0b51a7d commit b33cdad
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ $commandOptions = @{
download = "--internalize --internalize-all-urls --ignore-dependencies --installed-packages --ignore-unfound-packages --resources-location='' --download-location='' --outputdirectory='' --source='' --version='' --prerelease --user='' --password='' --cert='' --certpassword='' --append-use-original-location --recompile --disable-package-repository-optimizations -? --use-self-service" + $allcommands
sync = "--output-directory='' --id='' --package-id='' -? --use-self-service" + $allcommands
optimize = "--deflate-nupkg-only --id='' -? --use-self-service" + $allcommands
export = "--include-version-numbers --output-file-path='' --include-remembered-arguments -?" + $allcommands
export = "--include-version-numbers --output-file-path='' --include-remembered-arguments --exclude-pins -?" + $allcommands
template = "--name=''" + $allcommands
}

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").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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,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. Available in 1.2.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.",
option => configuration.ExportCommand.ExcludePins = option != null)
;
}

Expand Down Expand Up @@ -110,6 +113,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 @@ -147,7 +151,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)
Expand Down Expand Up @@ -229,6 +237,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.reset_config();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,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 b33cdad

Please sign in to comment.