Skip to content

Commit

Permalink
(#2050) Upgrade add parameter to bypass pins
Browse files Browse the repository at this point in the history
This adds a switch to the upgrade command to bypass/ignore any pinned
packages. It will write out a warning message if a pinned package is
being upgraded.

The package will remain pinned after the upgrade completes, although
pinned to the new version.
  • Loading branch information
TheCakeIsNaOH committed Dec 22, 2022
1 parent 0e6bca6 commit 8525f0d
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,10 @@ public virtual void configure_argument_parser(OptionSet optionSet, ChocolateyCon
"Skip hooks - Do not run hook scripts. Available in 1.2.0+",
option => configuration.SkipHookScripts = option != null
)
.Add("bypass-pins|ignore-pins",
"Bypass Pin(s) - Bypass any pins and upgrade the packages anyways. Defaults to false. Available in 1.0.0+",
option => configuration.UpgradeCommand.BypassPins = option != null
)
;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,7 @@ public sealed class UpgradeCommandConfiguration
public bool NotifyOnlyAvailableUpgrades { get; set; }
public string PackageNamesToSkip { get; set; }
public bool ExcludePrerelease { get; set; }
public bool BypassPins { get; set; }
}

[Serializable]
Expand Down
22 changes: 16 additions & 6 deletions src/chocolatey/infrastructure.app/services/NugetService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -931,7 +931,7 @@ public virtual ConcurrentDictionary<string, PackageResult> upgrade_run(Chocolate
var pkgInfo = _packageInfoService.get_package_information(installedPackage.PackageMetadata);
bool isPinned = pkgInfo != null && pkgInfo.IsPinned;

if (isPinned && config.OutdatedCommand.IgnorePinned)
if (isPinned && config.OutdatedCommand.IgnorePinned && !config.UpgradeCommand.BypassPins)
{
continue;
}
Expand Down Expand Up @@ -1067,12 +1067,22 @@ public virtual ConcurrentDictionary<string, PackageResult> upgrade_run(Chocolate

if (isPinned)
{
string logMessage = "{0} is pinned. Skipping pinned package.".format_with(packageName);
packageResult.Messages.Add(new ResultMessage(ResultType.Warn, logMessage));
packageResult.Messages.Add(new ResultMessage(ResultType.Inconclusive, logMessage));
if (config.RegularOutput) this.Log().Warn(ChocolateyLoggers.Important, logMessage);
if (!config.UpgradeCommand.BypassPins)
{
string logMessage = "{0} is pinned. Skipping pinned package.".format_with(packageName);
packageResult.Messages.Add(new ResultMessage(ResultType.Warn, logMessage));
packageResult.Messages.Add(new ResultMessage(ResultType.Inconclusive, logMessage));
if (config.RegularOutput) this.Log().Warn(ChocolateyLoggers.Important, logMessage);

continue;
continue;
}
else
{
string logMessage = "{0} is pinned. Upgrading pinned package anyway as bypass-pins is specified".format_with(packageName);
packageResult.Messages.Add(new ResultMessage(ResultType.Warn, logMessage));
if (config.RegularOutput) this.Log().Warn(ChocolateyLoggers.Important, logMessage);
config.PinPackage = true;
}
}

if (performAction)
Expand Down

0 comments on commit 8525f0d

Please sign in to comment.