-
Notifications
You must be signed in to change notification settings - Fork 383
/
Copy pathbuild.ps1
76 lines (65 loc) · 2.03 KB
/
build.ps1
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
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
[CmdletBinding(DefaultParameterSetName="BuildOne")]
param(
[Parameter(ParameterSetName="BuildAll")]
[switch]$All,
[Parameter(ParameterSetName="BuildOne")]
[ValidateRange(3, 6)]
[int]$PSVersion = $PSVersionTable.PSVersion.Major,
[Parameter(ParameterSetName="BuildOne")]
[Parameter(ParameterSetName="BuildAll")]
[ValidateSet("Debug", "Release")]
[string]$Configuration = "Debug",
# For building documentation only
# or re-building it since docs gets built automatically only the first time
[Parameter(ParameterSetName="BuildDocumentation")]
[switch]$Documentation,
[Parameter(ParameterSetName='BuildAll')]
[Parameter(ParameterSetName='BuildOne')]
[switch]$Clobber,
[Parameter(Mandatory=$true,ParameterSetName='Clean')]
[switch] $Clean,
[Parameter(Mandatory=$true,ParameterSetName='Test')]
[switch] $Test,
[Parameter(ParameterSetName='Test')]
[switch] $InProcess,
[Parameter(ParameterSetName='Bootstrap')]
[switch] $Bootstrap
)
END {
Import-Module -Force (Join-Path $PSScriptRoot build.psm1)
if ( $Clean -or $Clobber ) {
Remove-Build
if ( $PSCmdlet.ParameterSetName -eq "Clean" ) {
return
}
}
$setName = $PSCmdlet.ParameterSetName
switch ( $setName ) {
"BuildAll" {
Start-ScriptAnalyzerBuild -All -Configuration $Configuration
}
"BuildDocumentation" {
Start-ScriptAnalyzerBuild -Documentation
}
"BuildOne" {
$buildArgs = @{
PSVersion = $PSVersion
Configuration = $Configuration
}
Start-ScriptAnalyzerBuild @buildArgs
}
"Bootstrap" {
Install-DotNet
return
}
"Test" {
Test-ScriptAnalyzer -InProcess:$InProcess
return
}
default {
throw "Unexpected parameter set '$setName'"
}
}
}