diff --git a/.azure/pipelines/apply-semantic-versioning-to-assembyinfo-files.yml b/.azure/pipelines/apply-semantic-versioning-to-assembyinfo-files.yml index ea47b345..5517f7c5 100644 --- a/.azure/pipelines/apply-semantic-versioning-to-assembyinfo-files.yml +++ b/.azure/pipelines/apply-semantic-versioning-to-assembyinfo-files.yml @@ -20,4 +20,37 @@ steps: [int]$PatternExpectedVersionNumbers = 4 [int]$VersionNumbersInVersion = 4 + Function Get-VersionString($numberOfVersions, $extractedBuildNumbers) { + return [string]::Join('.',($extractedBuildNumbers | select -First ($numberOfVersions))) + } + + if ($BuildNumber -match $Pattern -ne $true) { + Write-Host "Could not extract a version from [$BuildNumber] using pattern [$Pattern]" + exit 2 + } + + # Set version variables + $extractedBuildNumbers = @($Matches[0].Split(([char[]]$PatternSplitCharacters))) + if ($extractedBuildNumbers.Length -ne $PatternExpectedVersionNumbers) { + Write-Host "The extracted build number $($Matches[0]) does not contain the expected $PatternExpectedVersionNumbers elements" + exit 2 + } + + $version = Get-VersionString -numberOfVersions $VersionNumbersInVersion -extractedBuildNumbers $extractedBuildNumbers + $fileVersion = Get-VersionString -numberOfVersions $VersionNumbersInVersion -extractedBuildNumbers $extractedBuildNumbers + Write-Host "Using version $version and file version $fileVersion" + + # iterate the search path (and sub directories) looking for files that match the search filter + Get-ChildItem -Path $PathToSearch -Filter $SearchFilter -Recurse | % { + Write-Host " -> Checking $($_.FullName)" + + # remove the read-only bit on the file + Set-ItemProperty $_.FullName -name IsReadOnly -value $false + + # run the regex replace + $content = Get-Content $_.FullName + #$content = Replace-Version -content $content -version $version -attribute 'AssemblyVersion' + #$content = Replace-Version -content $content -version $fileVersion -attribute 'AssemblyFileVersion' + $content | Set-Content $_.FullName -Encoding UTF8 + } pwsh: true