forked from PowerShell/PSScriptAnalyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.ps1
111 lines (94 loc) · 2.93 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
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
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
[CmdletBinding(DefaultParameterSetName="BuildOne")]
param(
[Parameter(ParameterSetName="BuildAll")]
[switch]$All,
[Parameter(ParameterSetName="BuildOne")]
[ValidateSet(3, 4, 5, 7)]
[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,
[Parameter(ParameterSetName='BuildAll')]
[switch] $Catalog,
[Parameter(ParameterSetName='Package')]
[switch] $BuildNupkg,
[Parameter(ParameterSetName='Package')]
[switch] $CopyManifest,
[Parameter(ParameterSetName='Package')]
[switch] $Signed
)
BEGIN {
$verboseWanted = $false
if ( $PSBoundParameters['Verbose'] ) {
$verboseWanted = $PSBoundParameters['Verbose'].ToBool()
}
}
END {
Import-Module -Force (Join-Path $PSScriptRoot build.psm1) -verbose:$false
if ( $Clean -or $Clobber ) {
Remove-Build -verbose:$false
if ( $PSCmdlet.ParameterSetName -eq "Clean" ) {
return
}
}
$setName = $PSCmdlet.ParameterSetName
switch ( $setName ) {
"BuildAll" {
$buildArgs = @{
All = $true
Configuration = $Configuration
Verbose = $verboseWanted
Catalog = $false
}
if ( $Catalog ) {
$buildArgs['Catalog'] = $true
}
Start-ScriptAnalyzerBuild @buildArgs
}
"BuildDocumentation" {
Start-ScriptAnalyzerBuild -Documentation -Verbose:$Verbose
}
"BuildOne" {
$buildArgs = @{
PSVersion = $PSVersion
Configuration = $Configuration
}
Start-ScriptAnalyzerBuild @buildArgs
}
"Bootstrap" {
Install-DotNet
return
}
"Package" {
if($CopyManifest) {
Copy-Manifest -signed:$Signed
}
Start-CreatePackage -signed:$Signed
}
"Test" {
Test-ScriptAnalyzer -InProcess:$InProcess
return
}
default {
throw "Unexpected parameter set '$setName'"
}
}
}