RelaxedIT.3rdParty.psm1

function RelaxedIT.3rdParty.upgrade {
    param (
        [string]$config = "C:\ProgramData\RelaxedIT\3rdParty.json"
    )
   
    # Check if the config file exists, create it if it doesn't
    if (!(Test-Path -Path $config)) {
        $base = (Get-Module RelaxedIT.EnergySaver).ModuleBase
        Test-AndCreatePath -Path (Get-BasePath -Path $config)
        Copy-Item -Path (Join-Path $base "3rdParty.json") -Destination $config
        Write-RelaxedIT "[Initial]: Copy default config to: ""$config"""
    }

    # Load the program list from the JSON config
    $defaultPrograms = @('adobereader', 'vlc', '7zip', 'audacity', 'audacity-lame', 'audacity-ffmpeg', 'libreoffice-fresh', 'pdf24')    
    # gimp InkScape scribus darktable

    $programList = (Get-RelaxedITConfig -Config $config).id
    if (-not $programList) {
        $programList = $defaultPrograms
    }

    # Loop through each program and execute the Chocolatey upgrade command
    foreach ($program in $programList) {
        $params = (Get-RelaxedITConfig -Config $config | Where-Object {$_.id -eq $program}).params
        if ($params) {
            Write-RelaxedIT "[Upgrading]: $program with params: $params"
            & "C:\ProgramData\chocolatey\choco.exe" upgrade -y $program -params $params
        } else {
            Write-RelaxedIT "[Upgrading]: $program without params"
            & "C:\ProgramData\chocolatey\choco.exe" upgrade -y $program
        }
    }

    #clean desktop from shortcuts
    Get-ChildItem -Path "C:\Users\Public\Desktop" -Filter "*.lnk" | foreach-object {
        Remove-Item -Path $_.Fullname
    }
}