11# psake build script for PowerShellLocalization
22# See https://psake.dev/ for syntax and usage
33# requires -Version 7
4+ # spell-checker:ignore Markdig
45Properties {
56 $script :extensionName = ' PowerShellLocalization'
67 $script :vsixPattern = ' *.vsix'
@@ -9,14 +10,21 @@ Properties {
910
1011 $script :PesterConfiguration = New-PesterConfiguration
1112 $script :PesterConfiguration.Output.CIFormat = ' Auto'
13+ $script :PesterConfiguration.Output.Verbosity = ' Detailed'
1214 $script :PesterConfiguration.Run.Path = " .\tests\"
1315 $script :PesterConfiguration.Run.PassThru = $true
1416}
1517
18+ FormatTaskName {
19+ param ($taskName )
20+ Write-Host ' Task: ' - ForegroundColor Cyan - NoNewline
21+ Write-Host $taskName.ToUpper () - ForegroundColor Blue
22+ }
23+
1624Task Default - Depends Test
1725Task Test - Depends Lint, VscodeTest, Pester
1826
19- Task Clean {
27+ Task Clean - Description " Clean the output directory " {
2028 Write-Host ' 🧹 Cleaning previous builds...'
2129 if (Test-Path $script :outDir ) {
2230 Remove-Item - Recurse - Force $script :outDir
@@ -29,32 +37,19 @@ Task Clean {
2937 }
3038}
3139
32-
33- Task InstallVsce {
34- Write-Host ' 🔍 Checking for vsce (Visual Studio Code Extension manager)...'
35- try {
36- $null = vsce -- version 2> $null
37- Write-Host ' ✅ vsce is already installed'
38- } catch {
39- Write-Host ' ⚠️ vsce not found. Installing vsce globally...'
40- npm install - g @vscode / vsce
41- Write-Host ' ✅ vsce installed successfully'
42- }
43- }
44-
45- Task InstallDependencies - Depends InstallVsce {
40+ Task InstallDependencies - Description " Install project dependencies" {
4641 Write-Host ' 📥 Installing dependencies...'
4742 yarn install
4843 Write-Host ' ✅ Dependencies installed successfully'
4944}
5045
51- Task Compile - Depends InstallDependencies {
46+ Task Compile - Depends InstallDependencies - Description " Compile TypeScript files " {
5247 Write-Host ' 🔨 Compiling TypeScript...'
5348 yarn run compile
5449 Write-Host ' ✅ TypeScript compiled successfully'
5550}
5651
57- Task Lint {
52+ Task Lint - Description " Lint the source code " {
5853 Write-Host ' 🔍 Running linter...'
5954 try {
6055 yarn run lint
@@ -64,7 +59,7 @@ Task Lint {
6459 }
6560}
6661
67- Task VscodeTest - Depends InstallDependencies {
62+ Task VscodeTest - Depends InstallDependencies - Description " Run VS Code tests " {
6863 Write-Host ' 🔍 Running VS Code tests...'
6964 try {
7065 yarn run vscode:test
@@ -75,10 +70,9 @@ Task VscodeTest -Depends InstallDependencies {
7570 }
7671}
7772
78- Task Pester {
73+ Task Pester - Description " Run Pester tests " {
7974 Write-Host ' 🧪 Running Pester tests...'
8075 try {
81- Import-Module Pester
8276 $results = Invoke-Pester - Configuration $script :PesterConfiguration
8377 if ($results.FailedCount -gt 0 ) {
8478 Write-Error ' ❌ Pester tests failed. Please fix the issues before packaging.'
@@ -87,13 +81,14 @@ Task Pester {
8781 Write-Host ' ✅ Pester tests passed'
8882 } catch {
8983 Write-Error ' ❌ Pester tests failed. Please fix the issues before packaging.'
84+ $PSCmdlet.ThrowTerminatingError ($_ )
9085 exit 1
9186 }
9287}
9388
94- Task Package - Depends Clean , Compile, Test {
89+ Task Package - Depends Clean , Compile, Test - Description " Package the extension " {
9590 Write-Host ' 📦 Packaging extension...'
96- $packageResult = Write-Output ' y' | vsce package -- allow- missing- repository -- out $script :outDir
91+ Write-Output ' y' | vsce package -- allow- missing- repository -- out $script :outDir
9792 $vsixFiles = Get-ChildItem - Path $script :outDir - Filter $script :vsixPattern | Sort-Object LastWriteTime - Descending
9893 if (-not $vsixFiles ) {
9994 throw ' ❌ No .vsix file was generated'
@@ -102,16 +97,15 @@ Task Package -Depends Clean, Compile, Test {
10297 Write-Host " ✅ Extension packaged successfully: $ ( $vsixFiles [0 ].Name) "
10398}
10499
105- Task Install - Depends Package {
100+ Task Install - Depends Package - Description " Install the extension in VS Code " {
106101 Write-Host ' 🚀 Installing extension in VS Code...'
107102 $command = @ (' code' , ' --install-extension' , $script :vsixFile , ' --force' )
108103 & $command
109104 Write-Host ' ✅ Extension installed successfully!'
110105 Write-Host ' 🔄 Please reload VS Code to activate the extension.'
111106}
112107
113- # CI task for GitHub Actions
114- Task CI - Depends Package {
108+ Task CI - Depends Package - Description " Run CI task for GitHub Actions" {
115109 Write-Host ' 🏗️ Running CI task for GitHub Actions...'
116110 if ($env: GITHUB_OUTPUT ) {
117111 Write-Host ' GITHUB_OUTPUT environment variable is set. Writing output...'
0 commit comments