winutil/functions/private/Set-PackageManagerPreference.ps1

44 lines
1.6 KiB
PowerShell
Raw Permalink Normal View History

function Set-PackageManagerPreference {
<#
.SYNOPSIS
Sets the currently selected package manager to global "ManagerPreference" in sync.
Also persists preference across Winutil restarts via preference.ini.
Reads from preference.ini if no argument sent.
2025-10-14 19:51:53 +02:00
.PARAMETER preferredPackageManager
The PackageManager that was selected.
#>
param(
[Parameter(Position=0, Mandatory=$false)]
2025-10-14 19:51:53 +02:00
[PackageManagers]$preferredPackageManager
)
$preferencePath = "$env:LOCALAPPDATA\winutil\preferences.ini"
$oldChocoPath = "$env:LOCALAPPDATA\winutil\preferChocolatey.ini"
#Try loading from file if no argument given.
2025-10-14 19:51:53 +02:00
if ($null -eq $preferredPackageManager) {
# Backwards compat for preferChocolatey.ini
if (Test-Path -Path $oldChocoPath) {
2025-10-14 19:51:53 +02:00
$preferredPackageManager = [PackageManagers]::Choco
Remove-Item -Path $oldChocoPath
}
2025-04-16 08:56:22 -05:00
elseif (Test-Path -Path $preferencePath) {
$potential = Get-Content -Path $preferencePath -TotalCount 1
2025-10-14 19:51:53 +02:00
$preferredPackageManager = [PackageManagers]$potential
2025-04-16 08:56:22 -05:00
}
else {
Write-Debug "Creating new preference file, defaulting to winget."
2025-10-14 19:51:53 +02:00
$preferredPackageManager = [PackageManagers]::Winget
}
}
2025-10-14 19:51:53 +02:00
$sync["ManagerPreference"] = [PackageManagers]::$preferredPackageManager
Write-Debug "Manager Preference changed to '$($sync["ManagerPreference"])'"
# Write preference to file to persist across restarts.
Out-File -FilePath $preferencePath -InputObject $sync["ManagerPreference"]
}