9
9
10
10
# Requires -Modules @ {ModuleName = " InvokeBuild" ;ModuleVersion = " 3.0.0" }
11
11
12
- task GetExtensionData - Before Package {
13
-
14
- $script :PackageJson = Get-Content - Raw $PSScriptRoot / package.json | ConvertFrom-Json
15
- $updateVersion = $false
16
- $script :ExtensionVersion = `
17
- if ($env: VSTS_BUILD ) {
18
- $updateVersion = $true
19
- $env: VSTS_BUILD_VERSION
20
- }
21
- else {
22
- $script :PackageJson.version
23
- }
24
-
25
- if ($updateVersion ) {
26
- exec { & npm version $script :ExtensionVersion -- no- git- tag- version -- allow- same- version }
27
- $script :PackageJson.version = $script :ExtensionVersion
28
- }
12
+ # Grab package.json data which is used throughout the build.
13
+ $script :PackageJson = Get-Content - Raw $PSScriptRoot / package.json | ConvertFrom-Json
14
+ Write-Host " `n ### Extension Version: $ ( $script :PackageJson.version ) Extension Name: $ ( $script :PackageJson.name ) `n " - ForegroundColor Green
29
15
30
- $script :ExtensionName = $script :PackageJson.name
31
- Write-Host " `n ### Extension Version: $script :ExtensionVersion Extension Name: $script :ExtensionName `n " - ForegroundColor Green
32
- }
16
+ # region Utility tasks
33
17
34
- task ResolveEditorServicesPath - Before CleanEditorServices, BuildEditorServices, Package {
18
+ task ResolveEditorServicesPath - Before CleanEditorServices, BuildEditorServices, TestEditorServices , Package {
35
19
36
20
$script :psesRepoPath = `
37
21
if ($EditorServicesRepoPath ) {
@@ -43,7 +27,7 @@ task ResolveEditorServicesPath -Before CleanEditorServices, BuildEditorServices,
43
27
44
28
if (! (Test-Path $script :psesRepoPath )) {
45
29
# Clear the path so that it won't be used
46
- Write-Host " `n ### WARNING: The PowerShellEditorServices repo cannot be found at path $script :psesRepoPath `n " - ForegroundColor Yellow
30
+ Write-Warning " `n The PowerShellEditorServices repo cannot be found at path $script :psesRepoPath `n "
47
31
$script :psesRepoPath = $null
48
32
}
49
33
else {
@@ -52,7 +36,18 @@ task ResolveEditorServicesPath -Before CleanEditorServices, BuildEditorServices,
52
36
}
53
37
}
54
38
55
- task Restore RestoreNodeModules - Before Build - If { -not (Test-Path " $PSScriptRoot /node_modules" ) }
39
+ task UploadArtifacts {
40
+ if ($env: TF_BUILD ) {
41
+ # SYSTEM_PHASENAME is the Job name.
42
+ Copy-Item - Path PowerShell- insiders.vsix `
43
+ - Destination " $env: BUILD_ARTIFACTSTAGINGDIRECTORY /$ ( $script :PackageJson.name ) -$ ( $script :PackageJson.version ) -$env: SYSTEM_PHASENAME .vsix"
44
+ }
45
+ }
46
+
47
+ # endregion
48
+ # region Restore tasks
49
+
50
+ task Restore RestoreNodeModules - If { -not (Test-Path " $PSScriptRoot /node_modules" ) }
56
51
57
52
task RestoreNodeModules {
58
53
@@ -64,6 +59,9 @@ task RestoreNodeModules {
64
59
exec { & npm install $logLevelParam }
65
60
}
66
61
62
+ # endregion
63
+ # region Clean tasks
64
+
67
65
task Clean {
68
66
Write-Host " `n ### Cleaning vscode-powershell`n " - ForegroundColor Green
69
67
Remove-Item .\modules\* - Exclude " README.md" - Recurse - Force - ErrorAction Ignore
@@ -80,7 +78,10 @@ task CleanEditorServices {
80
78
81
79
task CleanAll CleanEditorServices, Clean
82
80
83
- task Build {
81
+ # endregion
82
+ # region Build tasks
83
+
84
+ task Build Restore, {
84
85
Write-Host " `n ### Building vscode-powershell" - ForegroundColor Green
85
86
exec { & npm run compile }
86
87
}
@@ -95,20 +96,34 @@ task BuildEditorServices {
95
96
96
97
task BuildAll BuildEditorServices, Build
97
98
99
+ # endregion
100
+ # region Test tasks
101
+
98
102
task Test Build, {
99
103
if (! $global :IsLinux ) {
100
104
Write-Host " `n ### Running extension tests" - ForegroundColor Green
101
105
exec { & npm run test }
102
106
}
103
107
else {
104
- Write-Host " `n ### Skipping extension tests on Linux platform" - ForegroundColor Yellow
108
+ Write-Warning " Skipping extension tests on Linux platform because vscode does not support it. "
105
109
}
106
110
}
107
111
108
- task CheckPreview - If { $script :ExtensionName -like " *Preview*" } `
109
- UpdateReadme, UpdatePackageJson
112
+ task TestEditorServices {
113
+ if ($script :psesBuildScriptPath ) {
114
+ Write-Host " `n ### Testing PowerShellEditorServices`n " - ForegroundColor Green
115
+ Invoke-Build Test $script :psesBuildScriptPath
116
+ }
117
+ }
118
+
119
+ task TestAll TestEditorServices, Test
110
120
111
- task UpdateReadme {
121
+ # endregion
122
+
123
+ # region Package tasks
124
+
125
+ task UpdateReadme - If { $script :PackageJson.version -like " *preview*" } {
126
+ # Add the preview text
112
127
$newReadmeTop = ' # PowerShell Language Support for Visual Studio Code
113
128
114
129
> ## ATTENTION: This is the PREVIEW version of the PowerShell extension for VSCode which contains features that are being evaluated for stable. It works with PowerShell 5.1 and up.
@@ -119,20 +134,34 @@ task UpdateReadme {
119
134
$readmeContent = Get-Content - Path $readmePath
120
135
if (! ($readmeContent -match " This is the PREVIEW version of the PowerShell extension" )) {
121
136
$readmeContent [0 ] = $newReadmeTop
122
- $readmeContent > $readmePath
137
+ $readmeContent | Set-Content $readmePath - Encoding utf8
123
138
}
124
139
}
125
140
126
141
task UpdatePackageJson {
127
- $script :PackageJson.name = " powershell-preview"
128
- $script :PackageJson.displayName = " PowerShell Preview"
129
- $script :PackageJson.description = " (Preview) Develop PowerShell scripts in Visual Studio Code!"
130
- $script :PackageJson.preview = $true
131
- $script :ExtensionName = $script :PackageJson.name
132
- Set-Content - Path $PSScriptRoot / package.json ($script :PackageJson | ConvertTo-Json - Depth 100 )
142
+ if ($script :PackageJson.version -like " *preview*" ) {
143
+ $script :PackageJson.name = " powershell-preview"
144
+ $script :PackageJson.displayName = " PowerShell Preview"
145
+ $script :PackageJson.description = " (Preview) Develop PowerShell scripts in Visual Studio Code!"
146
+ $script :PackageJson.preview = $true
147
+ } else {
148
+ $script :PackageJson.name = " powershell"
149
+ $script :PackageJson.displayName = " PowerShell"
150
+ $script :PackageJson.description = " Develop PowerShell scripts in Visual Studio Code!"
151
+ $script :PackageJson.preview = $false
152
+ }
153
+
154
+ $revision = if ($env: BUILD_BUILDID ) { $env: BUILD_BUILDID } else { 9999 }
155
+ $script :PackageJson.version = " $ ( Get-Date - Format ' yyyy.M' ) .$revision "
156
+
157
+ $Utf8NoBomEncoding = [System.Text.UTF8Encoding ]::new($false )
158
+ [System.IO.File ]::WriteAllLines(
159
+ (Resolve-Path " $PSScriptRoot /package.json" ).Path,
160
+ ($script :PackageJson | ConvertTo-Json - Depth 100 ),
161
+ $Utf8NoBomEncoding )
133
162
}
134
163
135
- task Package {
164
+ task Package UpdateReadme , UpdatePackageJson , {
136
165
137
166
if ($script :psesBuildScriptPath ) {
138
167
Write-Host " `n ### Copying PowerShellEditorServices module files" - ForegroundColor Green
@@ -149,16 +178,12 @@ task Package {
149
178
exec { & node ./ node_modules/ vsce/ out/ vsce package }
150
179
151
180
# Change the package to have a static name for automation purposes
152
- Move-Item - Force .\$ ($script :ExtensionName )- $ ($script :ExtensionVersion ).vsix .\PowerShell- insiders.vsix
181
+ Move-Item - Force .\$ ($script :PackageJson .name )- $ ($script :PackageJson .version ).vsix .\PowerShell- insiders.vsix
153
182
}
154
183
155
- task UploadArtifacts {
156
- if ($env: TF_BUILD ) {
157
- # SYSTEM_PHASENAME is the Job name.
158
- Copy-Item - Path PowerShell- insiders.vsix `
159
- - Destination " $env: BUILD_ARTIFACTSTAGINGDIRECTORY /$script :ExtensionName -$script :ExtensionVersion -$env: SYSTEM_PHASENAME .vsix"
160
- }
161
- }
184
+ # endregion
162
185
186
+ # The set of tasks for a release
187
+ task Release Clean , Build, Test, Package
163
188
# The default task is to run the entire CI build
164
- task . GetExtensionData , CleanAll, BuildAll, Test, CheckPreview , Package, UploadArtifacts
189
+ task . CleanAll, BuildAll, Test, Package, UploadArtifacts
0 commit comments