This repository was archived by the owner on Jun 7, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgenerateVersionInfo.ps1
More file actions
50 lines (42 loc) · 1.78 KB
/
generateVersionInfo.ps1
File metadata and controls
50 lines (42 loc) · 1.78 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
$debugVersion = ""
$version = ""
$hasChanges = $false
$diff = git diff-index HEAD
if ($diff) {
$hasChanges = $true
}
$versionString = Get-Content ".\version.txt"
$versionSegments = $versionString.Split("{.}")
if ($versionSegments.Length -ne 3)
{
Throw "Файл version.txt должен содержать номер версии в формате X.Y.Z"
}
$currentBranch = git rev-parse --abbrev-ref HEAD
$commitsCount = [int](git rev-list --count HEAD)
if (!$hasChanges -and ($currentBranch -eq "master")) {
$version = "$($versionSegments[0]).$($versionSegments[1]).$($versionSegments[2])"
$debugVersion = "$version.$commitsCount"
}
else {
$version = "$($versionSegments[0]).$($versionSegments[1]).$($versionSegments[2]).$($commitsCount + 1)"
$debugVersion = $version
}
$versionInfo = @"
/*
Этот файл генерируется автоматически при сборке проекта.
Номер версии задаётся в "version.txt" в формате X.Y.Z
"Корректная" версия из 3х цифр (SEMVER) прописывается на dll'ки, только если выполнены условия:
* в рабочей копии отсутствуют незафиксированные изменения
* сборка производится из ветки master
* сборка производится в конфигурации Release
*/
using System.Reflection;
#if DEBUG
[assembly: AssemblyVersion("$debugVersion")]
[assembly: AssemblyInformationalVersion("$debugVersion")]
#else
[assembly: AssemblyVersion("$version")]
[assembly: AssemblyInformationalVersion("$version")]
#endif
"@
Set-Content -Encoding UTF8 -Path "AssemblyVersion.cs" -Value $versionInfo