From 818db607bf6d4a575604653094e1f8e9d5c0c9ce Mon Sep 17 00:00:00 2001 From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch> Date: Tue, 27 Feb 2018 00:24:16 +0100 Subject: [PATCH] Parse version numbers from "git describe" output. --- Scripts/Prepare-Build.ps1 | 42 +++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/Scripts/Prepare-Build.ps1 b/Scripts/Prepare-Build.ps1 index 564ff1a..cb0cea6 100644 --- a/Scripts/Prepare-Build.ps1 +++ b/Scripts/Prepare-Build.ps1 @@ -9,7 +9,7 @@ function Write-BuildDetails { [String]$Target, [Parameter(Mandatory=$True)] - [String]$CommitName, + [Array]$Desc, [Parameter(Mandatory=$True)] [String]$Branch, @@ -18,37 +18,59 @@ function Write-BuildDetails { [String]$Date ) + $CommitName = "$($Desc[0]).$($Desc[1])-$($Desc[2])-$($Desc[3])" Write-Output "Generating [$($Target)]..." - Write-Output $(" + Write-Output " > $($CommitName)" + $CSharp = $(" public static class BuildDetails { public const string GitCommitName = `"$($CommitName)`"; public const string GitBranch = `"$($Branch)`"; + public const string GitMajor = `"$($Desc[0])`"; + public const string GitMinor = `"$($Desc[1])`"; + public const string GitPatch = `"$($Desc[2])`"; public const string BuildDate = `"$($Date)`"; - }") > $Target + }") + Write-Verbose $CSharp + Write-Output $CSharp > $Target } +function Parse-GitDescribe([string]$CommitName) { + Write-Verbose "Parsing 'git describe' result [$($CommitName)]..." + try { + $Items = $CommitName.Split('-').Split('.') + if ($Items.Length -ne 4) { throw } + } + catch { + throw "Can't parse commit name [$($CommitName)]!" + } + Write-Verbose "Just some $($Items[2]) commits after the last tag." + Return $Items +} + + $ErrorActionPreference = "Stop" $oldpwd = pwd cd $ProjectDir -ErrorAction Stop try { - $CommitName = & git describe --tags + $CommitName = & git describe --tags --long --match "[0-9].[0-9]" if (-Not $?) { throw } $GitStatus = & git status --porcelain if (-Not $?) { throw } $GitBranch = & git symbolic-ref --short HEAD if (-Not $?) { throw } + $DescItems = Parse-GitDescribe $CommitName + if ($GitStatus.Length -gt 0) { - Write-Output "NOTE: repository has uncommitted changes!" + $StatusWarning = " <-- WARNING: repository has uncommitted changes!" $CommitName = "$($CommitName)-unclean" } } catch { $CommitName = "commit unknown" - $GitStatus = "status unknown" $GitBranch = "branch unknown" Write-Output "$(">"*8) Running git failed, using default values! $("<"*8)" } @@ -64,10 +86,10 @@ $BuildDetailsCS = "$($ProjectDir)\..\Resources\BuildDetails.cs" Write-Output $CommitName > $BCommit Write-Output $Date > $BuildDate -Write-Output $Date -Write-Output $CommitName -Write-Output $GitBranch +Write-Output "build-date: $($Date)" +Write-Output "git-branch: $($GitBranch)" +Write-Output "git-description: $($CommitName)$($StatusWarning)" -Write-BuildDetails $BuildDetailsCS $CommitName $GitBranch $Date +Write-BuildDetails $BuildDetailsCS $DescItems $GitBranch $Date cd $oldpwd \ No newline at end of file -- GitLab