Repository navigation
Expand file tree
/
Copy pathUpdate-Version.ps1
More file actions
130 lines (106 loc) · 3.3 KB
/
Copy pathUpdate-Version.ps1
File metadata and controls
130 lines (106 loc) · 3.3 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
<#
.SYNOPSIS
Updates the current version.
.PARAMETER Major
Optional. Increments the major version number (x.0).
.PARAMETER Minor
Optional. Increments the minor version number (0.x).
.PARAMETER Patch
Optional. Increments the patch version number (0.0.x).
.PARAMETER Prerelease
Optional. Increments the prerelease version number (0.0.0-ooo.x).
.PARAMETER Label
Optional. Indicates the label to use for prerelease versions. Allowed: dev, rc, alpha, preview. Default = "dev".
.PARAMETER Version
Optional. Sets the version number to an explicit value.
.EXAMPLE
./Update-Version -Major
Increments the major version number.
.EXAMPLE
./Update-Version -Prerelease -Label "alpha"
Increments the prerelease version number with an "alpha" preview label.
#>
param
(
[Parameter()]
[switch]
$Major,
[Parameter()]
[switch]
$Minor,
[Parameter()]
[switch]
$Patch,
[Parameter()]
[switch]
$Prerelease,
[Parameter()]
[AllowEmptyString()]
[AllowNull()]
[ValidateSet($null, '', 'dev', 'alpha', 'rc', 'preview')]
[string]
$Label,
[string]
$Version
)
# Calculate new version number
$update = if ($Major) { "major" } elseif ($Minor) { "minor" } elseif ($Patch) { "patch" } elseif ($Prerelease) { "prerelease" }
if ($update)
{
Write-Verbose "Updating $update version."
}
elseif ($Version)
{
$update = $Version
Write-Verbose "Updating to version $update."
}
# Only update version if requested
if ($update -or $Version)
{
# Update version in NPM
Write-Verbose "Updating NPM version..."
$null = npm --no-git-tag-version version $update
# Update label, if needed
if ($Label)
{
$newLabel = $Label.ToLower() -replace '[^a-z]', ''
Write-Verbose "Using label '$newLabel'."
$null = npm --no-git-tag-version --preid $newLabel version preminor
}
}
$ver = & "$PSScriptRoot/Get-Version"
if ($update -or $Version)
{
Write-Verbose "Updated to version $ver."
}
# Update version in secondary files, if needed
if ($update -or $Version)
{
# Update version files: ftkver.txt (major.minor) and ftktag.txt (git tag, e.g., "v13")
$repoRoot = (Resolve-Path "$PSScriptRoot/../..").Path
$tag = & "$PSScriptRoot/Get-Version" -AsTag
foreach ($entry in @{ 'ftkver.txt' = $ver; 'ftktag.txt' = $tag }.GetEnumerator())
{
Write-Verbose "Updating $($entry.Key) files..."
Get-ChildItem $repoRoot -Include $entry.Key -Recurse -Force `
| ForEach-Object {
Write-Verbose "- $($_.FullName.Replace($repoRoot + [IO.Path]::DirectorySeparatorChar, ''))"
$entry.Value | Out-File $_ -NoNewline
}
}
# Update version in PowerShell
Write-Verbose "Updating PowerShell Get-VersionNumber..."
& {
Write-Output "# Copyright (c) Microsoft Corporation."
Write-Output "# Licensed under the MIT License."
Write-Output ""
Write-Output "function Get-VersionNumber"
Write-Output "{"
Write-Output " param()"
Write-Output " return '$ver'"
Write-Output "}"
} | Out-File "$PSScriptRoot/../PowerShell/Private/Get-VersionNumber.ps1" -Encoding ascii -Append:$false
}
return $ver