forked from PowerShell/vscode-powershell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvscode-powershell.build.ps1
172 lines (138 loc) · 5.8 KB
/
vscode-powershell.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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#
# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
param(
[string]$EditorServicesRepoPath = $null
)
#Requires -Modules @{ModuleName="InvokeBuild";ModuleVersion="3.0.0"}
$script:IsPullRequestBuild =
$env:APPVEYOR_PULL_REQUEST_NUMBER -and
$env:APPVEYOR_REPO_BRANCH -eq "develop"
task GetExtensionVersion -Before Package {
$updateVersion = $false
$script:ExtensionVersion = `
if ($env:AppVeyor) {
$updateVersion = $true
$env:APPVEYOR_BUILD_VERSION
}
elseif ($env:VSTS_BUILD) {
$updateVersion = $true
$env:VSTS_BUILD_VERSION
}
else {
exec { & npm version | ConvertFrom-Json | ForEach-Object { $_.PowerShell } }
}
Write-Host "`n### Extension Version: $script:ExtensionVersion`n" -ForegroundColor Green
if ($updateVersion) {
exec { & npm version $script:ExtensionVersion --no-git-tag-version --allow-same-version }
}
}
task ResolveEditorServicesPath -Before CleanEditorServices, BuildEditorServices {
$script:psesRepoPath = `
if ($EditorServicesRepoPath) {
$EditorServicesRepoPath
}
else {
"$PSScriptRoot/../PowerShellEditorServices/"
}
if (!(Test-Path $script:psesRepoPath)) {
# Clear the path so that it won't be used
Write-Host "`n### WARNING: The PowerShellEditorServices repo cannot be found at path $script:psesRepoPath`n" -ForegroundColor Yellow
$script:psesRepoPath = $null
}
else {
$script:psesRepoPath = Resolve-Path $script:psesRepoPath
$script:psesBuildScriptPath = Resolve-Path "$script:psesRepoPath/PowerShellEditorServices.build.ps1"
}
}
task Restore RestoreNodeModules -Before Build
task RestoreNodeModules -If { -not (Test-Path "$PSScriptRoot/node_modules") } {
Write-Host "`n### Restoring vscode-powershell dependencies`n" -ForegroundColor Green
# When in a CI build use the --loglevel=error parameter so that
# package install warnings don't cause PowerShell to throw up
$logLevelParam = if ($env:AppVeyor -or $env:VSTS_BUILD) { "--loglevel=error" } else { "" }
exec { & npm install $logLevelParam }
}
task Clean {
Write-Host "`n### Cleaning vscode-powershell`n" -ForegroundColor Green
Remove-Item .\modules\* -Exclude "README.md" -Recurse -Force -ErrorAction Ignore
Remove-Item .\out -Recurse -Force -ErrorAction Ignore
}
task CleanEditorServices {
if ($script:psesBuildScriptPath) {
Write-Host "`n### Cleaning PowerShellEditorServices`n" -ForegroundColor Green
Invoke-Build Clean $script:psesBuildScriptPath
}
}
task CleanAll CleanEditorServices, Clean
task Build {
Write-Host "`n### Building vscode-powershell" -ForegroundColor Green
exec { & npm run compile }
}
task BuildEditorServices {
# If the PSES codebase is co-located, build it first
if ($script:psesBuildScriptPath) {
Write-Host "`n### Building PowerShellEditorServices`n" -ForegroundColor Green
Invoke-Build Build $script:psesBuildScriptPath
}
}
task BuildAll BuildEditorServices, Build
task Test Build, {
if (!$global:IsLinux -and !$global:IsMacOS) {
Write-Host "`n### Running extension tests" -ForegroundColor Green
exec { & npm run test }
}
else {
Write-Host "`n### Skipping extension tests on non-Windows platform" -ForegroundColor Yellow
}
}
task Package {
if ($script:psesBuildScriptPath) {
Write-Host "`n### Copying PowerShellEditorServices module files" -ForegroundColor Green
Copy-Item -Recurse -Force ..\PowerShellEditorServices\module\* .\modules
} elseif (Test-Path .\PowerShellEditorServices) {
Write-Host "`n### Moving PowerShellEditorServices module files" -ForegroundColor Green
Move-Item -Force .\PowerShellEditorServices\* .\modules
Remove-Item -Force .\PowerShellEditorServices
} else {
throw "Unable to find PowerShell EditorServices"
}
Write-Host "`n### Packaging PowerShell-insiders.vsix`n" -ForegroundColor Green
exec { & node ./node_modules/vsce/out/vsce package }
# Change the package to have a static name for automation purposes
Move-Item -Force .\PowerShell-$($script:ExtensionVersion).vsix .\PowerShell-insiders.vsix
}
task V2Process {
# Throwing this in so that we can get v2 builds going. This should be refactored later.
try {
if (!$script:psesBuildScriptPath) {
throw "PSES path required."
}
# grab 2.0 PSRL bits
Write-Host "`n### Grabbing 2.0 bits"
Push-Location ..\PowerShellEditorServices
git remote add patrick https://github.com/SeeminglyScience/PowerShellEditorServices.git
git fetch --all
git checkout integrate-psreadline-2
Invoke-Build Build
Pop-Location
Write-Host "`n### Copying PowerShellEditorServices module files" -ForegroundColor Green
Copy-Item -Recurse -Force ..\PowerShellEditorServices\module\* .\modules
Write-Host "`n### Packaging PowerShell-insiders.vsix`n" -ForegroundColor Green
exec { & node ./node_modules/vsce/out/vsce package }
# Change the package to have a static name for automation purposes
Move-Item -Force .\PowerShell-$($script:ExtensionVersion).vsix .\PowerShell-v2-insiders.vsix
}
catch {
Write-Host "tried to build v2 but failed because of: `n`n$_"
}
}
task UploadArtifacts -If { $env:AppVeyor } {
Push-AppveyorArtifact .\PowerShell-insiders.vsix
if (Test-Path .\PowerShell-v2-insiders.vsix) {
Push-AppveyorArtifact .\PowerShell-v2-insiders.vsix
}
}
# The default task is to run the entire CI build
task . GetExtensionVersion, CleanAll, BuildAll, Test, Package, V2Process, UploadArtifacts