diff --git a/Winget-AutoUpdate/functions/Test-ModsPath.ps1 b/Winget-AutoUpdate/functions/Test-ModsPath.ps1 index 83ab47f..b3e5253 100644 --- a/Winget-AutoUpdate/functions/Test-ModsPath.ps1 +++ b/Winget-AutoUpdate/functions/Test-ModsPath.ps1 @@ -5,7 +5,7 @@ function Test-ModsPath ($ModsPath, $WingetUpdatePath) { # Get local and external Mods paths $LocalMods = -join ($WingetUpdatePath, "\", "mods") $ExternalMods = "$ModsPath" - + #Get File Names Locally $InternalModsNames = Get-ChildItem -Path $LocalMods -Name -Recurse -Include *.ps1, *.txt @@ -26,7 +26,7 @@ function Test-ModsPath ($ModsPath, $WingetUpdatePath) { #If there's a directory path in the HREF:s, delete it (IIS) $CleanLinks = $ModLinks -replace "/.*/","" - + #Modify strings to HREF:s $index = 0 foreach ($Mod in $CleanLinks) { @@ -40,17 +40,20 @@ function Test-ModsPath ($ModsPath, $WingetUpdatePath) { $DeletedMods = 0 # 0 is the parent HTTP Directory $index = 1 + $CleanLinks = $ModLinks -replace "/.*/","" foreach ($Mod in $InternalModsNames) { - If ($ModLinks -notcontains "$Mod") { + If ($CleanLinks -notcontains "$Mod") { Remove-Item $LocalMods\$Mod -Force -ErrorAction SilentlyContinue | Out-Null $DeletedMods++ } $index++ } + $CleanLinks = $ModLinks -replace "/.*/","" + #Loop through all links $wc = New-Object System.Net.WebClient - $WebResponse.Links | Select-Object -ExpandProperty href | ForEach-Object { + $CleanLinks | ForEach-Object { #Check for .ps1/.txt in listing/HREF:s in an index page pointing to .ps1/.txt if (($_ -like "*.ps1") -or ($_ -like "*.txt")) { try { @@ -81,38 +84,4 @@ function Test-ModsPath ($ModsPath, $WingetUpdatePath) { } return $ModsUpdated, $DeletedMods } - # If path is UNC or local - else { - if ((Test-Path -Path $ExternalMods"\*.ps1") -or (Test-Path -Path $ExternalMods"\*.txt")) { - #Get File Names Externally - $ExternalModsNames = Get-ChildItem -Path $ExternalMods -Name -Recurse -Include *.ps1, *.txt - #Delete Local Mods that don't exist Externally - foreach ($Mod in $InternalModsNames){ - If($Mod -notin $ExternalModsNames ){ - Remove-Item $LocalMods\$Mod -Force -ErrorAction SilentlyContinue | Out-Null - $DeletedMods++ - } - } - try { - foreach ($Mod in $ExternalModsNames){ - $dateExternalMod = "" - $dateLocalMod ="" - if (Test-Path -Path $LocalMods"\"$Mod) { - $dateLocalMod = (Get-Item "$LocalMods\$Mod").LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") - } - $dateExternalMod = (Get-Item "$ExternalMods\$Mod").LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") - if ($dateExternalMod -gt $dateLocalMod) { - Copy-Item $ExternalMods\$Mod -Destination $LocalMods\$Mod -Force -ErrorAction SilentlyContinue | Out-Null - $ModsUpdated++ - } - } - - } - catch { - return $False - } - return $ModsUpdated, $DeletedMods - } - return $False - } }