-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClearPersonalNuGetCache.ps1
42 lines (37 loc) · 1.87 KB
/
ClearPersonalNuGetCache.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$UserFolder = [Environment]::GetFolderPath('UserProfile')
$NuGetPackagesFolder = Join-Path -Path $UserFolder -ChildPath '.nuget\packages'
if (Test-Path -Path $NuGetPackagesFolder) {
$NuGetPackagesFolders = Get-ChildItem -Path $NuGetPackagesFolder
$NuSpecPaths = foreach ($NuGetPackageFolder in $NuGetPackagesFolders) {
if (Test-Path -Path $NuGetPackageFolder) {
$NuGetPackageVersionFolders = Get-ChildItem -Path $NuGetPackageFolder
foreach ($NuGetPackageVersionFolder in $NuGetPackageVersionFolders) {
if (Test-Path -Path $NuGetPackageVersionFolder) {
$nuspecFiles = Get-ChildItem -Path $NuGetPackageVersionFolder -Filter *.nuspec
$nuspecFiles
}
}
}
}
$MyPackageIds = $NuSpecPaths | ForEach-Object {
[xml]$xml = Get-Content -Path $PSItem
$packageElement = $xml.DocumentElement | Where-Object { $PSItem.Name -eq 'package' }
$metadataElement = $packageElement.ChildNodes | Where-Object { $PSItem.Name -eq 'metadata' }
$idElement = $metadataElement.ChildNodes | Where-Object { $PSItem.Name -eq 'id' }
$authorsElement = $metadataElement.ChildNodes | Where-Object { $PSItem.Name -eq 'authors' }
if (('TIKSN' -eq $authorsElement.InnerText) -or ('Tigran TIKSN Torosyan' -eq $authorsElement.InnerText) -or ($authorsElement.InnerText -like 'TIKSN.*')) {
$idElement.InnerText
}
}
| Select-Object -Unique
foreach ($MyPackageId in $MyPackageIds) {
$PackagePath = Join-Path -Path $NuGetPackagesFolder -ChildPath $MyPackageId
if (Test-Path -Path $PackagePath) {
Write-Host "Deleting $PackagePath"
if (Test-Path -Path $PackagePath) {
Remove-Item -Path $PackagePath -Force -Recurse
}
}
}
}
dotnet nuget locals http-cache --clear