-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapply-version.ps1
More file actions
63 lines (47 loc) · 2.08 KB
/
apply-version.ps1
File metadata and controls
63 lines (47 loc) · 2.08 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env pwsh
$ErrorActionPreference = "Stop"
$versionFile = Join-Path $PSScriptRoot "version.json"
$srcFolder = Join-Path $PSScriptRoot "src"
if (-not (Test-Path $versionFile)) {
Write-Error "version.json not found at: $versionFile"
exit 1
}
$versionData = Get-Content $versionFile | ConvertFrom-Json
$version = $versionData.version
Write-Host "Version from version.json: $version" -ForegroundColor Cyan
$projectFiles = Get-ChildItem -Path $srcFolder -Filter "*.csproj" -Recurse
if ($projectFiles.Count -eq 0) {
Write-Warning "No .csproj files found in $srcFolder"
exit 0
}
Write-Host "Found $($projectFiles.Count) projects" -ForegroundColor Green
foreach ($project in $projectFiles) {
Write-Host "Processing: $($project.Name)" -ForegroundColor Yellow
[xml]$csproj = Get-Content $project.FullName
$propertyGroup = $csproj.Project.PropertyGroup | Select-Object -First 1
if ($null -eq $propertyGroup) {
$propertyGroup = $csproj.CreateElement("PropertyGroup")
$csproj.Project.AppendChild($propertyGroup) | Out-Null
}
$versionNode = $propertyGroup.SelectSingleNode("Version")
if ($null -eq $versionNode) {
$versionNode = $csproj.CreateElement("Version")
$propertyGroup.AppendChild($versionNode) | Out-Null
}
$versionNode.InnerText = $version
$assemblyVersionNode = $propertyGroup.SelectSingleNode("AssemblyVersion")
if ($null -eq $assemblyVersionNode) {
$assemblyVersionNode = $csproj.CreateElement("AssemblyVersion")
$propertyGroup.AppendChild($assemblyVersionNode) | Out-Null
}
$assemblyVersionNode.InnerText = $version
$fileVersionNode = $propertyGroup.SelectSingleNode("FileVersion")
if ($null -eq $fileVersionNode) {
$fileVersionNode = $csproj.CreateElement("FileVersion")
$propertyGroup.AppendChild($fileVersionNode) | Out-Null
}
$fileVersionNode.InnerText = $version
$csproj.Save($project.FullName)
Write-Host " ✓ Updated to version $version" -ForegroundColor Green
}
Write-Host "`nAll projects updated successfully!" -ForegroundColor Green