-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVersionManager.ps1
More file actions
85 lines (73 loc) · 1.42 KB
/
VersionManager.ps1
File metadata and controls
85 lines (73 loc) · 1.42 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#################################
# This script contains funtions to create git tags following GitFlow
#################################
function New-Tag
{
param (
[Parameter(Mandatory=$true)]
[string]$Branch
)
$version = Get-CurrentVersion
$patch = Get-NewPatch
$prefix = ""
if ($Branch -eq "release")
{
$version = ([decimal]$version + 0.1).ToString()
$prefix = "Beta-"
}
if ($Branch -eq "develop")
{
$version = ([decimal]$version + 0.1).ToString()
$prefix = "Dev-"
}
if ($Branch -eq "hotfix")
{
$prefix = "HF-"
}
$tag = "v$version.$prefix$patch"
Invoke-Expression "git tag $tag"
Invoke-Expression "git push origin $tag"
return $tag
}
function Get-CurrentVersion
{
$major = 0; $minor = 1
$tags = Get-GitTags
if ($tags.Count -gt 0)
{
foreach($tag in $tags)
{
$pattern = '^v(\d+)\.(\d+)\.\d+$'
if ($tag -match $pattern)
{
if ($Matches[1] -gt $major)
{
$major = $Matches[1]
$minor = $Matches[2]
}
elseif ($Matches[1] -eq $major -and $Matches[2] -gt $minor)
{
$minor = $Matches[2]
}
}
}
}
return "$major.$minor"
}
function Get-NewPatch
{
param (
[Parameter(Mandatory=$false)]
[string]$Prefix = ""
)
if ($Prefix -eq "")
{
return (Get-Date).ToString("yyMMddhhmmss")
}
return $Prefix + "-" + (Get-Date).ToString("yyMMddhhmmss")
}
function Get-GitTags
{
$tags = Invoke-Expression "git tag --list"
$tags
}