Skip to content
Snippets Groups Projects
Commit 818db607 authored by Niko Ehrenfeuchter's avatar Niko Ehrenfeuchter :keyboard:
Browse files

Parse version numbers from "git describe" output.

parent d93d8a85
Branches
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ function Write-BuildDetails { ...@@ -9,7 +9,7 @@ function Write-BuildDetails {
[String]$Target, [String]$Target,
[Parameter(Mandatory=$True)] [Parameter(Mandatory=$True)]
[String]$CommitName, [Array]$Desc,
[Parameter(Mandatory=$True)] [Parameter(Mandatory=$True)]
[String]$Branch, [String]$Branch,
...@@ -18,37 +18,59 @@ function Write-BuildDetails { ...@@ -18,37 +18,59 @@ function Write-BuildDetails {
[String]$Date [String]$Date
) )
$CommitName = "$($Desc[0]).$($Desc[1])-$($Desc[2])-$($Desc[3])"
Write-Output "Generating [$($Target)]..." Write-Output "Generating [$($Target)]..."
Write-Output $(" Write-Output " > $($CommitName)"
$CSharp = $("
public static class BuildDetails public static class BuildDetails
{ {
public const string GitCommitName = `"$($CommitName)`"; public const string GitCommitName = `"$($CommitName)`";
public const string GitBranch = `"$($Branch)`"; 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)`"; 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" $ErrorActionPreference = "Stop"
$oldpwd = pwd $oldpwd = pwd
cd $ProjectDir -ErrorAction Stop cd $ProjectDir -ErrorAction Stop
try { try {
$CommitName = & git describe --tags $CommitName = & git describe --tags --long --match "[0-9].[0-9]"
if (-Not $?) { throw } if (-Not $?) { throw }
$GitStatus = & git status --porcelain $GitStatus = & git status --porcelain
if (-Not $?) { throw } if (-Not $?) { throw }
$GitBranch = & git symbolic-ref --short HEAD $GitBranch = & git symbolic-ref --short HEAD
if (-Not $?) { throw } if (-Not $?) { throw }
$DescItems = Parse-GitDescribe $CommitName
if ($GitStatus.Length -gt 0) { if ($GitStatus.Length -gt 0) {
Write-Output "NOTE: repository has uncommitted changes!" $StatusWarning = " <-- WARNING: repository has uncommitted changes!"
$CommitName = "$($CommitName)-unclean" $CommitName = "$($CommitName)-unclean"
} }
} }
catch { catch {
$CommitName = "commit unknown" $CommitName = "commit unknown"
$GitStatus = "status unknown"
$GitBranch = "branch unknown" $GitBranch = "branch unknown"
Write-Output "$(">"*8) Running git failed, using default values! $("<"*8)" Write-Output "$(">"*8) Running git failed, using default values! $("<"*8)"
} }
...@@ -64,10 +86,10 @@ $BuildDetailsCS = "$($ProjectDir)\..\Resources\BuildDetails.cs" ...@@ -64,10 +86,10 @@ $BuildDetailsCS = "$($ProjectDir)\..\Resources\BuildDetails.cs"
Write-Output $CommitName > $BCommit Write-Output $CommitName > $BCommit
Write-Output $Date > $BuildDate Write-Output $Date > $BuildDate
Write-Output $Date Write-Output "build-date: $($Date)"
Write-Output $CommitName Write-Output "git-branch: $($GitBranch)"
Write-Output $GitBranch Write-Output "git-description: $($CommitName)$($StatusWarning)"
Write-BuildDetails $BuildDetailsCS $CommitName $GitBranch $Date Write-BuildDetails $BuildDetailsCS $DescItems $GitBranch $Date
cd $oldpwd cd $oldpwd
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment