mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-05-10 00:02:09 +00:00
48 lines
1.7 KiB
PowerShell
48 lines
1.7 KiB
PowerShell
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.
|
|
|
|
.PARAMETER preferedPackageManager
|
|
The PackageManager that was selected.
|
|
#>
|
|
param(
|
|
[Parameter(Position=0, Mandatory=$false)]
|
|
[PackageManagers]$preferedPackageManager
|
|
)
|
|
|
|
$preferencePath = "$env:LOCALAPPDATA\winutil\preferences.ini"
|
|
$oldChocoPath = "$env:LOCALAPPDATA\winutil\preferChocolatey.ini"
|
|
|
|
#Try loading from file if no argument given.
|
|
if ($null -eq $preferedPackageManager) {
|
|
# Backwards compat for preferChocolatey.ini
|
|
if (Test-Path -Path $oldChocoPath)
|
|
{
|
|
$preferedPackageManager = [PackageManagers]::Choco
|
|
Remove-Item -Path $oldChocoPath
|
|
}
|
|
else
|
|
{
|
|
$potential = Get-Content -Path $preferencePath -TotalCount 1
|
|
if ($potential)
|
|
{$preferedPackageManager = [PackageManagers]$potential}
|
|
}
|
|
}
|
|
|
|
#If no preference argument, .ini file bad read, and $sync empty then default to winget.
|
|
if ($null -eq $preferedPackageManager -and $null -eq $sync["ManagerPreference"])
|
|
{ $preferedPackageManager = [PackageManagers]::Winget }
|
|
|
|
|
|
$sync["ManagerPreference"] = [PackageManagers]::$preferedPackageManager
|
|
Write-Debug "Manager Preference changed to '$($sync["ManagerPreference"])'"
|
|
|
|
|
|
# Write preference to file to persist across restarts.
|
|
Out-File -FilePath $preferencePath -InputObject $sync["ManagerPreference"]
|
|
}
|