-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.ps1
68 lines (61 loc) · 1.77 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
[CmdletBinding()]
Param(
[Parameter()]
[string]
$ModuleName = 'sjAzureTools',
[Parameter()]
[hashtable]
$Dependencies = @{
PackageManagement = '1.3.1'
PowerShellGet = '2.1.2'
InvokeBuild = '5.5.2'
},
[Parameter()]
[ValidateSet('Init', 'Clean', 'Build', 'Test', 'Deploy')]
[string[]]
$Task,
[Parameter()]
[object]
$File,
[Parameter()]
[switch]
$Safe,
[Parameter()]
[switch]
$Summary
)
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -Verbose:$false
$PSDefaultParameterValues = @{
'*-Module:Verbose' = $false
'*-Module:Force' = $true
'Import-Module:ErrorAction' = 'Stop'
'Install-Module:AcceptLicense' = $true
'Install-Module:AllowClobber' = $true
'Install-Module:Confirm' = $false
'Install-Module:ErrorAction' = 'Stop'
'Install-Module:Repository' = 'PSGallery'
'Install-Module:Scope' = 'CurrentUser'
'Install-Module:SkipPublisherCheck' = $true
}
Write-Host "Resolving module dependencies"
foreach ($dependency in $Dependencies.Keys) {
$parameters = @{
Name = $dependency
MinimumVersion = $Dependencies[$dependency]
}
Write-Host "[$dependency] Resolving"
try {
if ($imported = Get-Module $dependency) {
Write-Host "[$dependency] Removing imported module"
$imported | Remove-Module
}
Import-Module @parameters
}
catch {
Write-Host "[$dependency] Installing missing module"
Install-Module @parameters
Import-Module @parameters
}
}
Write-Host "Executing Invoke-Build"
Invoke-Build -ModuleName $ModuleName @PSBoundParameters