From fbddda690ae330b0e8d31ae27fabef7dfe614a6d Mon Sep 17 00:00:00 2001 From: JohnMcPMS Date: Wed, 27 May 2026 15:09:12 -0700 Subject: [PATCH 1/5] CI should all use the src versions that are to be modified, right? --- src/manifest.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/manifest.yml b/src/manifest.yml index 97c1951..52ec53f 100644 --- a/src/manifest.yml +++ b/src/manifest.yml @@ -114,8 +114,8 @@ flows: manual_test: true os: [windows] windows: - install: Workloads/winforms/install.ps1 - configuration: Workloads/winforms/configuration.winget + install: src/Workloads/winforms/install.ps1 + configuration: src/Workloads/winforms/configuration.winget build: dotnet build src/tests/winforms/hello.csproj -c Release -v q --nologo -o tests/winforms/bin run: src\tests\winforms\bin\hello.exe expected: src/tests/winforms/expected.txt @@ -134,8 +134,8 @@ flows: manual_test: true os: [windows] windows: - install: Workloads/winui/install.ps1 - configuration: Workloads/winui/configuration.winget + install: src/Workloads/winui/install.ps1 + configuration: src/Workloads/winui/configuration.winget build: dotnet build src/tests/winui/hello.csproj -c Release -v q --nologo -o src/tests/winui/bin run: src\tests\winui\bin\hello.exe expected: src/tests/winui/expected.txt @@ -150,8 +150,8 @@ flows: onboardingUrl: https://learn.microsoft.com/en-us/dotnet/core/install/windows os: [windows] windows: - install: Workloads/dotnet/install.ps1 - configuration: Workloads/dotnet/configuration.winget + install: src/Workloads/dotnet/install.ps1 + configuration: src/Workloads/dotnet/configuration.winget build: dotnet build src/tests/dotnet/hello.csproj -c Release -v q --nologo -o src/tests/dotnet/bin run: src\tests\dotnet\bin\hello.exe expected: src/tests/dotnet/expected.txt @@ -166,8 +166,8 @@ flows: onboardingUrl: https://go.dev/doc/install os: [windows] windows: - install: Workloads/go/install.ps1 - configuration: Workloads/go/configuration.winget + install: src/Workloads/go/install.ps1 + configuration: src/Workloads/go/configuration.winget build: "" run: go run src/tests/go/hello.go expected: src/tests/go/expected.txt @@ -182,8 +182,8 @@ flows: onboardingUrl: https://learn.microsoft.com/en-us/java/openjdk/install os: [windows] windows: - install: Workloads/java/install.ps1 - configuration: Workloads/java/configuration.winget + install: src/Workloads/java/install.ps1 + configuration: src/Workloads/java/configuration.winget build: "" run: java src/tests/java/Hello.java expected: src/tests/java/expected.txt @@ -198,8 +198,8 @@ flows: onboardingUrl: https://www.rust-lang.org/tools/install os: [windows] windows: - install: Workloads/rust/install.ps1 - configuration: Workloads/rust/configuration.winget + install: src/Workloads/rust/install.ps1 + configuration: src/Workloads/rust/configuration.winget build: cargo build --release --manifest-path src/tests/rust/Cargo.toml --quiet run: src\tests\rust\target\release\hello.exe expected: src/tests/rust/expected.txt @@ -214,8 +214,8 @@ flows: onboardingUrl: https://docs.python.org/3/using/windows.html os: [windows] windows: - install: Workloads/python/install.ps1 - configuration: Workloads/python/configuration.winget + install: src/Workloads/python/install.ps1 + configuration: src/Workloads/python/configuration.winget build: "" run: python src/tests/python/hello.py expected: src/tests/python/expected.txt @@ -234,7 +234,7 @@ flows: manual_test: true os: [windows] windows: - install: wsl-comfort/install.ps1 + install: src/wsl-comfort/install.ps1 build: "" run: wsl -- bash src/tests/comfort-shell/hello.sh expected: src/tests/comfort-shell/expected.txt @@ -255,8 +255,8 @@ flows: manual_test: true os: [windows] windows: - install: windows-dev-config/install.ps1 - configuration: windows-dev-config/dev-config.winget + install: src/windows-dev-config/install.ps1 + configuration: src/windows-dev-config/dev-config.winget build: "" run: pwsh -NoProfile -File src/tests/calm-os/probe.ps1 expected: src/tests/calm-os/expected.txt From e8ef7eadc9c925457d925ad02ca4112c134c3dc6 Mon Sep 17 00:00:00 2001 From: JohnMcPMS Date: Wed, 27 May 2026 15:28:44 -0700 Subject: [PATCH 2/5] Convert many RunCommandOnSet to script resources --- src/Workloads/rust/configuration.winget | 38 ++++---- src/Workloads/typescript/configuration.winget | 33 +++---- src/Workloads/winforms/configuration.winget | 86 +++++++++--------- src/Workloads/winui/configuration.winget | 90 ++++++++++--------- 4 files changed, 130 insertions(+), 117 deletions(-) diff --git a/src/Workloads/rust/configuration.winget b/src/Workloads/rust/configuration.winget index 20796d8..8e82281 100644 --- a/src/Workloads/rust/configuration.winget +++ b/src/Workloads/rust/configuration.winget @@ -20,24 +20,30 @@ resources: winget: securityContext: elevated - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: InstallStableToolchain + - name: InstallStableToolchain + type: Microsoft.DSC.Transitional/WindowsPowerShellScript dependsOn: - Rustup - properties: - executable: powershell - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": >- - $machine = [Environment]::GetEnvironmentVariable('Path','Machine'); - $user = [Environment]::GetEnvironmentVariable('Path','User'); - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';'; - if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) { throw 'rustup not found on PATH after Rustup install; cannot install toolchain.' }; - & rustup default stable; - if ($LASTEXITCODE -ne 0) { throw "rustup default stable failed with exit code $LASTEXITCODE" } - treatAsArray: true metadata: description: Install and default the stable Rust toolchain via rustup + properties: + getScript: | + $machine = [Environment]::GetEnvironmentVariable('Path','Machine') + $user = [Environment]::GetEnvironmentVariable('Path','User') + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' + $hasStable = [bool](Get-Command rustup -EA SilentlyContinue -and (& rustup toolchain list 2>$null | Where-Object { $_ -like 'stable*' })) + return @{ stable = $hasStable } + testScript: | + $machine = [Environment]::GetEnvironmentVariable('Path','Machine') + $user = [Environment]::GetEnvironmentVariable('Path','User') + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' + if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) { return $false } + return [bool](& rustup toolchain list 2>$null | Where-Object { $_ -like 'stable*' }) + setScript: | + $machine = [Environment]::GetEnvironmentVariable('Path','Machine') + $user = [Environment]::GetEnvironmentVariable('Path','User') + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' + if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) { throw 'rustup not found on PATH after Rustup install; cannot install toolchain.' } + & rustup default stable + if ($LASTEXITCODE -ne 0) { throw "rustup default stable failed with exit code $LASTEXITCODE" } diff --git a/src/Workloads/typescript/configuration.winget b/src/Workloads/typescript/configuration.winget index 70e2c2c..4e80df5 100644 --- a/src/Workloads/typescript/configuration.winget +++ b/src/Workloads/typescript/configuration.winget @@ -21,23 +21,26 @@ resources: securityContext: elevated - name: InstallTypeScript - type: Microsoft.DSC.Transitional/RunCommandOnSet + type: Microsoft.DSC.Transitional/WindowsPowerShellScript dependsOn: - Node metadata: description: Install the TypeScript compiler globally via npm properties: - executable: powershell - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": >- - $machine = [Environment]::GetEnvironmentVariable('Path','Machine'); - $user = [Environment]::GetEnvironmentVariable('Path','User'); - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';'; - if (Get-Command tsc -ErrorAction SilentlyContinue) { exit 0 }; - if (-not (Get-Command npm -ErrorAction SilentlyContinue)) { throw 'npm not found on PATH after Node install; cannot install typescript.' }; - & npm install --global --no-fund --no-audit typescript; - if ($LASTEXITCODE -ne 0) { throw "npm install --global typescript failed with exit code $LASTEXITCODE" } - treatAsArray: true + getScript: | + $machine = [Environment]::GetEnvironmentVariable('Path','Machine') + $user = [Environment]::GetEnvironmentVariable('Path','User') + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' + return @{ installed = [bool](Get-Command tsc -ErrorAction SilentlyContinue) } + testScript: | + $machine = [Environment]::GetEnvironmentVariable('Path','Machine') + $user = [Environment]::GetEnvironmentVariable('Path','User') + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' + return [bool](Get-Command tsc -ErrorAction SilentlyContinue) + setScript: | + $machine = [Environment]::GetEnvironmentVariable('Path','Machine') + $user = [Environment]::GetEnvironmentVariable('Path','User') + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' + if (-not (Get-Command npm -ErrorAction SilentlyContinue)) { throw 'npm not found on PATH after Node install; cannot install typescript.' } + & npm install --global --no-fund --no-audit typescript + if ($LASTEXITCODE -ne 0) { throw "npm install --global typescript failed with exit code $LASTEXITCODE" } diff --git a/src/Workloads/winforms/configuration.winget b/src/Workloads/winforms/configuration.winget index 9b4624f..d78af8d 100644 --- a/src/Workloads/winforms/configuration.winget +++ b/src/Workloads/winforms/configuration.winget @@ -20,20 +20,19 @@ resources: winget: securityContext: elevated - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: Microsoft.Windows.Developer.Module + - name: Microsoft.Windows.Developer.Module + type: Microsoft.DSC.Transitional/PowerShellScript dependsOn: - PowerShell7 - properties: - executable: pwsh - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Developer)) { Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber } - treatAsArray: true metadata: description: Ensure Microsoft.Windows.Developer module is installed + properties: + getScript: | + return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) } + testScript: | + return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) + setScript: | + Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Developer/OsVersion name: OsVersion @@ -45,20 +44,19 @@ resources: description: Verify min OS version (Windows 10 1809+) allowPrerelease: true - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: Microsoft.Windows.Settings.Module + - name: Microsoft.Windows.Settings.Module + type: Microsoft.DSC.Transitional/PowerShellScript dependsOn: - PowerShell7 - properties: - executable: pwsh - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Settings)) { Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber } - treatAsArray: true metadata: description: Ensure Microsoft.Windows.Settings module is installed + properties: + getScript: | + return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) } + testScript: | + return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) + setScript: | + Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Settings/WindowsSettings name: DeveloperMode @@ -94,32 +92,36 @@ resources: winget: securityContext: elevated - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: VSWorkloads + - name: VSWorkloads + type: Microsoft.DSC.Transitional/PowerShellScript dependsOn: - VisualStudioCommunity - PowerShell7 - properties: - executable: pwsh - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": >- - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'; - if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' }; - $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe'; - if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' }; - $installPath = & $vswhere -latest -products * -property installationPath; - if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' }; - & $setup modify --installPath $installPath - --channelId VisualStudio.18.Release - --productId Microsoft.VisualStudio.Product.Community - --add Microsoft.VisualStudio.Workload.ManagedDesktop - --quiet --norestart --wait; - if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } - treatAsArray: true metadata: description: Install required VS workloads for WinForms development winget: securityContext: elevated + properties: + getScript: | + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' + if (-not (Test-Path $vswhere)) { return @{ installed = $false } } + $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -property installationPath + return @{ installed = -not [string]::IsNullOrEmpty($path) } + testScript: | + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' + if (-not (Test-Path $vswhere)) { return $false } + $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -property installationPath + return -not [string]::IsNullOrEmpty($path) + setScript: | + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' + if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' } + $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe' + if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' } + $installPath = & $vswhere -latest -products * -property installationPath + if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' } + & $setup modify --installPath $installPath ` + --channelId VisualStudio.18.Release ` + --productId Microsoft.VisualStudio.Product.Community ` + --add Microsoft.VisualStudio.Workload.ManagedDesktop ` + --quiet --norestart --wait + if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } diff --git a/src/Workloads/winui/configuration.winget b/src/Workloads/winui/configuration.winget index e7fb4bb..42217a1 100644 --- a/src/Workloads/winui/configuration.winget +++ b/src/Workloads/winui/configuration.winget @@ -20,20 +20,19 @@ resources: winget: securityContext: elevated - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: Microsoft.Windows.Developer.Module + - name: Microsoft.Windows.Developer.Module + type: Microsoft.DSC.Transitional/PowerShellScript dependsOn: - PowerShell7 - properties: - executable: pwsh - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Developer)) { Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber } - treatAsArray: true metadata: description: Ensure Microsoft.Windows.Developer module is installed + properties: + getScript: | + return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) } + testScript: | + return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) + setScript: | + Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Developer/OsVersion name: OsVersion @@ -45,20 +44,19 @@ resources: description: Verify min OS version (Windows 10 1809+) allowPrerelease: true - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: Microsoft.Windows.Settings.Module + - name: Microsoft.Windows.Settings.Module + type: Microsoft.DSC.Transitional/PowerShellScript dependsOn: - PowerShell7 - properties: - executable: pwsh - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Settings)) { Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber } - treatAsArray: true metadata: description: Ensure Microsoft.Windows.Settings module is installed + properties: + getScript: | + return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) } + testScript: | + return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) + setScript: | + Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Settings/WindowsSettings name: DeveloperMode @@ -94,34 +92,38 @@ resources: winget: securityContext: elevated - - type: Microsoft.DSC.Transitional/RunCommandOnSet - name: VSWorkloads + - name: VSWorkloads + type: Microsoft.DSC.Transitional/PowerShellScript dependsOn: - VisualStudio - PowerShell7 - properties: - executable: pwsh - arguments: - "0": -NoProfile - "1": -NoLogo - "2": -Command - "3": >- - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'; - if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' }; - $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe'; - if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' }; - $installPath = & $vswhere -latest -products * -property installationPath; - if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' }; - & $setup modify --installPath $installPath - --channelId VisualStudio.18.Release - --productId Microsoft.VisualStudio.Product.Community - --add Microsoft.VisualStudio.Workload.ManagedDesktop - --add Microsoft.VisualStudio.Workload.Universal - --add Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs - --quiet --norestart --wait; - if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } - treatAsArray: true metadata: description: Install required VS workloads with Visual Studio Installer winget: securityContext: elevated + properties: + getScript: | + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' + if (-not (Test-Path $vswhere)) { return @{ installed = $false } } + $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -requires Microsoft.VisualStudio.Workload.Universal -requires Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs -property installationPath + return @{ installed = -not [string]::IsNullOrEmpty($path) } + testScript: | + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' + if (-not (Test-Path $vswhere)) { return $false } + $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -requires Microsoft.VisualStudio.Workload.Universal -requires Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs -property installationPath + return -not [string]::IsNullOrEmpty($path) + setScript: | + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' + if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' } + $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe' + if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' } + $installPath = & $vswhere -latest -products * -property installationPath + if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' } + & $setup modify --installPath $installPath ` + --channelId VisualStudio.18.Release ` + --productId Microsoft.VisualStudio.Product.Community ` + --add Microsoft.VisualStudio.Workload.ManagedDesktop ` + --add Microsoft.VisualStudio.Workload.Universal ` + --add Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs ` + --quiet --norestart --wait + if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } From ccb4abf0c800301dcd58f4b588928f95659f31a3 Mon Sep 17 00:00:00 2001 From: JohnMcPMS Date: Thu, 28 May 2026 09:28:33 -0700 Subject: [PATCH 3/5] Missed README font changes --- src/wsl-comfort/readme.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/wsl-comfort/readme.md b/src/wsl-comfort/readme.md index 7ab4279..2b41a47 100644 --- a/src/wsl-comfort/readme.md +++ b/src/wsl-comfort/readme.md @@ -1,6 +1,6 @@ # WSL Comfort Shell 😎 -A two-part installer that turns a fresh Windows + WSL machine into a cozy, opinionated-but-configurable shell: an Ubuntu distro running zsh + starship + modern CLI tools, surfaced through a themed Windows Terminal profile in a JetBrainsMono Nerd Font. Every component is opt-in — pick the parts you want and skip the rest. +A two-part installer that turns a fresh Windows + WSL machine into a cozy, opinionated-but-configurable shell: an Ubuntu distro running zsh + starship + modern CLI tools, surfaced through a themed Windows Terminal profile in a Cascadia Code Mono Nerd Font. Every component is opt-in — pick the parts you want and skip the rest. The Windows half (`install.ps1`) handles WSL, the distro, the font, and the terminal profile. The Linux half (`comfort-shell-bootstrap.sh`) runs inside the distro and does all the shell customization. They are designed to be runnable independently — the bootstrap is a standalone script you can scp onto any Ubuntu host and run by itself. @@ -35,7 +35,6 @@ The Windows half (`install.ps1`) handles WSL, the distro, the font, and the term ## Prerequisites - Windows 11 with **Windows Terminal** (`wt.exe`) installed and on PATH. The installer hard-fails if it can't find `wt.exe`. -- `winget` available (used only for the Nerd Font; the rest of the flow tolerates its absence). - Internet access for the WSL distro download, Homebrew, starship, and apt. - The bootstrap requires Ubuntu (any supported LTS). Other distros are rejected at preflight. @@ -87,7 +86,7 @@ Picks `Ubuntu` (latest LTS) as the distro and forwards `--non-interactive` to th - **Clipboard / `open` shims** in `~/bin`: `pbcopy`, `pbpaste`, `open`, `xdg-open` — bridged to `clip.exe`, PowerShell `Get-Clipboard`, and `cmd /c start`. - **Managed dotfile blocks** in `~/.zprofile` + `~/.zshrc` (or `~/.profile` + `~/.bashrc`) for PATH, brew shellenv, prompt init, aliases, and (zsh) keybindings. - **Git defaults**: `init.defaultBranch=main`, `pull.rebase=false`, `core.autocrlf=input`. -- **JetBrainsMono Nerd Font** via winget. +- **Cascadia Code Nerd Fonts** both mono and not. - **A Windows Terminal profile fragment** named `Comfort Shell - `, with a custom Catppuccin-ish dark scheme, the sunglasses icon, and `wsl.exe -d ` as the command line. --- @@ -112,7 +111,7 @@ The script runs five labeled steps and updates the console title with the curren | 1. Ensuring WSL platform | `wsl.exe --status` probe. If WSL is missing, runs `wsl.exe --install --no-distribution` and exits via reboot. | Registers a RunOnce auto-resume so the script picks up where it left off after the reboot. | | 2. Choosing Ubuntu distro | Lists installed `Ubuntu*` distros from `wsl -l -q`. If none, offers the 4 supported LTS lines. | `Install-NewDistro` retries up to 3 times (5s → 15s backoff) and gives actionable hints on failure (DNS, proxy, VPN). | | 3. Running Comfort Shell bootstrap | Stages `comfort-shell-bootstrap.sh` to `%TEMP%`, copies it into the distro's `$HOME`, strips CRLFs, makes it executable, runs it. | Uses `Invoke-NativeConsole` so the child sees a real TTY (needed for `/dev/tty` prompts in the bootstrap). | -| 4. Installing JetBrainsMono Nerd Font | `winget install --id DEVCOM.JetBrainsMonoNerdFont --silent`. | Non-fatal: a missing winget or a "already installed" exit code is logged and skipped. | +| 4. Installing Cascadia Code Nerd Fonts | Downloads fonts from GitHub release; extracts and registers them. | Detects "already installed" and skips if so. | | 5. Installing Windows Terminal profile | Writes a JSON fragment under `%LOCALAPPDATA%\Microsoft\Windows Terminal\Fragments\ComfortShell\comfort-shell-.fragment.json`. | Deterministic per-distro GUID (MD5 of `comfort-shell:`) so re-runs update in place and multiple distros coexist. Touches `settings.json` mtime to nudge WT's hot-reload. | ### Parameters From 1d4e36a0b8ed7783010a233dc1a0caf38a5b6c6c Mon Sep 17 00:00:00 2001 From: JohnMcPMS Date: Thu, 28 May 2026 10:18:29 -0700 Subject: [PATCH 4/5] PR feedback and revert config changes due to issues --- src/Workloads/rust/configuration.winget | 38 ++++---- src/Workloads/typescript/configuration.winget | 33 ++++--- src/Workloads/winforms/configuration.winget | 86 +++++++++--------- src/Workloads/winui/configuration.winget | 90 +++++++++---------- src/manifest.yml | 4 +- 5 files changed, 119 insertions(+), 132 deletions(-) diff --git a/src/Workloads/rust/configuration.winget b/src/Workloads/rust/configuration.winget index 8e82281..20796d8 100644 --- a/src/Workloads/rust/configuration.winget +++ b/src/Workloads/rust/configuration.winget @@ -20,30 +20,24 @@ resources: winget: securityContext: elevated - - name: InstallStableToolchain - type: Microsoft.DSC.Transitional/WindowsPowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: InstallStableToolchain dependsOn: - Rustup + properties: + executable: powershell + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": >- + $machine = [Environment]::GetEnvironmentVariable('Path','Machine'); + $user = [Environment]::GetEnvironmentVariable('Path','User'); + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';'; + if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) { throw 'rustup not found on PATH after Rustup install; cannot install toolchain.' }; + & rustup default stable; + if ($LASTEXITCODE -ne 0) { throw "rustup default stable failed with exit code $LASTEXITCODE" } + treatAsArray: true metadata: description: Install and default the stable Rust toolchain via rustup - properties: - getScript: | - $machine = [Environment]::GetEnvironmentVariable('Path','Machine') - $user = [Environment]::GetEnvironmentVariable('Path','User') - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' - $hasStable = [bool](Get-Command rustup -EA SilentlyContinue -and (& rustup toolchain list 2>$null | Where-Object { $_ -like 'stable*' })) - return @{ stable = $hasStable } - testScript: | - $machine = [Environment]::GetEnvironmentVariable('Path','Machine') - $user = [Environment]::GetEnvironmentVariable('Path','User') - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' - if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) { return $false } - return [bool](& rustup toolchain list 2>$null | Where-Object { $_ -like 'stable*' }) - setScript: | - $machine = [Environment]::GetEnvironmentVariable('Path','Machine') - $user = [Environment]::GetEnvironmentVariable('Path','User') - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' - if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) { throw 'rustup not found on PATH after Rustup install; cannot install toolchain.' } - & rustup default stable - if ($LASTEXITCODE -ne 0) { throw "rustup default stable failed with exit code $LASTEXITCODE" } diff --git a/src/Workloads/typescript/configuration.winget b/src/Workloads/typescript/configuration.winget index 4e80df5..70e2c2c 100644 --- a/src/Workloads/typescript/configuration.winget +++ b/src/Workloads/typescript/configuration.winget @@ -21,26 +21,23 @@ resources: securityContext: elevated - name: InstallTypeScript - type: Microsoft.DSC.Transitional/WindowsPowerShellScript + type: Microsoft.DSC.Transitional/RunCommandOnSet dependsOn: - Node metadata: description: Install the TypeScript compiler globally via npm properties: - getScript: | - $machine = [Environment]::GetEnvironmentVariable('Path','Machine') - $user = [Environment]::GetEnvironmentVariable('Path','User') - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' - return @{ installed = [bool](Get-Command tsc -ErrorAction SilentlyContinue) } - testScript: | - $machine = [Environment]::GetEnvironmentVariable('Path','Machine') - $user = [Environment]::GetEnvironmentVariable('Path','User') - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' - return [bool](Get-Command tsc -ErrorAction SilentlyContinue) - setScript: | - $machine = [Environment]::GetEnvironmentVariable('Path','Machine') - $user = [Environment]::GetEnvironmentVariable('Path','User') - $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';' - if (-not (Get-Command npm -ErrorAction SilentlyContinue)) { throw 'npm not found on PATH after Node install; cannot install typescript.' } - & npm install --global --no-fund --no-audit typescript - if ($LASTEXITCODE -ne 0) { throw "npm install --global typescript failed with exit code $LASTEXITCODE" } + executable: powershell + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": >- + $machine = [Environment]::GetEnvironmentVariable('Path','Machine'); + $user = [Environment]::GetEnvironmentVariable('Path','User'); + $env:Path = (($machine, $user) | Where-Object { $_ }) -join ';'; + if (Get-Command tsc -ErrorAction SilentlyContinue) { exit 0 }; + if (-not (Get-Command npm -ErrorAction SilentlyContinue)) { throw 'npm not found on PATH after Node install; cannot install typescript.' }; + & npm install --global --no-fund --no-audit typescript; + if ($LASTEXITCODE -ne 0) { throw "npm install --global typescript failed with exit code $LASTEXITCODE" } + treatAsArray: true diff --git a/src/Workloads/winforms/configuration.winget b/src/Workloads/winforms/configuration.winget index d78af8d..9b4624f 100644 --- a/src/Workloads/winforms/configuration.winget +++ b/src/Workloads/winforms/configuration.winget @@ -20,19 +20,20 @@ resources: winget: securityContext: elevated - - name: Microsoft.Windows.Developer.Module - type: Microsoft.DSC.Transitional/PowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: Microsoft.Windows.Developer.Module dependsOn: - PowerShell7 + properties: + executable: pwsh + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Developer)) { Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber } + treatAsArray: true metadata: description: Ensure Microsoft.Windows.Developer module is installed - properties: - getScript: | - return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) } - testScript: | - return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) - setScript: | - Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Developer/OsVersion name: OsVersion @@ -44,19 +45,20 @@ resources: description: Verify min OS version (Windows 10 1809+) allowPrerelease: true - - name: Microsoft.Windows.Settings.Module - type: Microsoft.DSC.Transitional/PowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: Microsoft.Windows.Settings.Module dependsOn: - PowerShell7 + properties: + executable: pwsh + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Settings)) { Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber } + treatAsArray: true metadata: description: Ensure Microsoft.Windows.Settings module is installed - properties: - getScript: | - return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) } - testScript: | - return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) - setScript: | - Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Settings/WindowsSettings name: DeveloperMode @@ -92,36 +94,32 @@ resources: winget: securityContext: elevated - - name: VSWorkloads - type: Microsoft.DSC.Transitional/PowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: VSWorkloads dependsOn: - VisualStudioCommunity - PowerShell7 + properties: + executable: pwsh + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": >- + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'; + if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' }; + $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe'; + if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' }; + $installPath = & $vswhere -latest -products * -property installationPath; + if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' }; + & $setup modify --installPath $installPath + --channelId VisualStudio.18.Release + --productId Microsoft.VisualStudio.Product.Community + --add Microsoft.VisualStudio.Workload.ManagedDesktop + --quiet --norestart --wait; + if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } + treatAsArray: true metadata: description: Install required VS workloads for WinForms development winget: securityContext: elevated - properties: - getScript: | - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' - if (-not (Test-Path $vswhere)) { return @{ installed = $false } } - $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -property installationPath - return @{ installed = -not [string]::IsNullOrEmpty($path) } - testScript: | - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' - if (-not (Test-Path $vswhere)) { return $false } - $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -property installationPath - return -not [string]::IsNullOrEmpty($path) - setScript: | - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' - if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' } - $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe' - if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' } - $installPath = & $vswhere -latest -products * -property installationPath - if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' } - & $setup modify --installPath $installPath ` - --channelId VisualStudio.18.Release ` - --productId Microsoft.VisualStudio.Product.Community ` - --add Microsoft.VisualStudio.Workload.ManagedDesktop ` - --quiet --norestart --wait - if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } diff --git a/src/Workloads/winui/configuration.winget b/src/Workloads/winui/configuration.winget index 42217a1..e7fb4bb 100644 --- a/src/Workloads/winui/configuration.winget +++ b/src/Workloads/winui/configuration.winget @@ -20,19 +20,20 @@ resources: winget: securityContext: elevated - - name: Microsoft.Windows.Developer.Module - type: Microsoft.DSC.Transitional/PowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: Microsoft.Windows.Developer.Module dependsOn: - PowerShell7 + properties: + executable: pwsh + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Developer)) { Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber } + treatAsArray: true metadata: description: Ensure Microsoft.Windows.Developer module is installed - properties: - getScript: | - return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) } - testScript: | - return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Developer) - setScript: | - Install-Module -Name Microsoft.Windows.Developer -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Developer/OsVersion name: OsVersion @@ -44,19 +45,20 @@ resources: description: Verify min OS version (Windows 10 1809+) allowPrerelease: true - - name: Microsoft.Windows.Settings.Module - type: Microsoft.DSC.Transitional/PowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: Microsoft.Windows.Settings.Module dependsOn: - PowerShell7 + properties: + executable: pwsh + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": if (-not (Get-Module -ListAvailable -Name Microsoft.Windows.Settings)) { Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber } + treatAsArray: true metadata: description: Ensure Microsoft.Windows.Settings module is installed - properties: - getScript: | - return @{ installed = [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) } - testScript: | - return [bool](Get-Module -ListAvailable -Name Microsoft.Windows.Settings) - setScript: | - Install-Module -Name Microsoft.Windows.Settings -Confirm:$False -Force -AllowPrerelease -AllowClobber - type: Microsoft.Windows.Settings/WindowsSettings name: DeveloperMode @@ -92,38 +94,34 @@ resources: winget: securityContext: elevated - - name: VSWorkloads - type: Microsoft.DSC.Transitional/PowerShellScript + - type: Microsoft.DSC.Transitional/RunCommandOnSet + name: VSWorkloads dependsOn: - VisualStudio - PowerShell7 + properties: + executable: pwsh + arguments: + "0": -NoProfile + "1": -NoLogo + "2": -Command + "3": >- + $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'; + if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' }; + $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe'; + if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' }; + $installPath = & $vswhere -latest -products * -property installationPath; + if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' }; + & $setup modify --installPath $installPath + --channelId VisualStudio.18.Release + --productId Microsoft.VisualStudio.Product.Community + --add Microsoft.VisualStudio.Workload.ManagedDesktop + --add Microsoft.VisualStudio.Workload.Universal + --add Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs + --quiet --norestart --wait; + if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } + treatAsArray: true metadata: description: Install required VS workloads with Visual Studio Installer winget: securityContext: elevated - properties: - getScript: | - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' - if (-not (Test-Path $vswhere)) { return @{ installed = $false } } - $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -requires Microsoft.VisualStudio.Workload.Universal -requires Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs -property installationPath - return @{ installed = -not [string]::IsNullOrEmpty($path) } - testScript: | - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' - if (-not (Test-Path $vswhere)) { return $false } - $path = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Workload.ManagedDesktop -requires Microsoft.VisualStudio.Workload.Universal -requires Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs -property installationPath - return -not [string]::IsNullOrEmpty($path) - setScript: | - $vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe' - if (-not (Test-Path $vswhere)) { throw 'vswhere.exe not found.' } - $setup = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\setup.exe' - if (-not (Test-Path $setup)) { throw 'Visual Studio setup.exe not found.' } - $installPath = & $vswhere -latest -products * -property installationPath - if (-not $installPath) { throw 'Visual Studio installation path could not be determined.' } - & $setup modify --installPath $installPath ` - --channelId VisualStudio.18.Release ` - --productId Microsoft.VisualStudio.Product.Community ` - --add Microsoft.VisualStudio.Workload.ManagedDesktop ` - --add Microsoft.VisualStudio.Workload.Universal ` - --add Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs ` - --quiet --norestart --wait - if ($LASTEXITCODE -ne 0) { throw "Visual Studio workload installation failed with exit code $LASTEXITCODE." } diff --git a/src/manifest.yml b/src/manifest.yml index daf92e2..66c4047 100644 --- a/src/manifest.yml +++ b/src/manifest.yml @@ -114,8 +114,8 @@ flows: manual_test: true os: [windows] windows: - install: src/Workloads/winforms/install.ps1 - configuration: src/Workloads/winforms/configuration.winget + install: Workloads/winforms/install.ps1 + configuration: Workloads/winforms/configuration.winget build: dotnet build src/tests/winforms/hello.csproj -c Release -v q --nologo -o tests/winforms/bin run: src\tests\winforms\bin\hello.exe expected: src/tests/winforms/expected.txt From b07de71f3485034bb4c226823d1119ae4e138c57 Mon Sep 17 00:00:00 2001 From: JohnMcPMS Date: Thu, 28 May 2026 15:21:07 -0700 Subject: [PATCH 5/5] Move src/ to CI test harness --- .github/workflows/ci.yml | 2 +- src/manifest.yml | 42 +++++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d565f8a..543bf46 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -77,7 +77,7 @@ jobs: ) out.append({ "id": flow["id"], - "install": spec["install"], + "install": "src/" + spec["install"], "build": spec.get("build", "") or "", "run": spec["run"], "expected": spec["expected"], diff --git a/src/manifest.yml b/src/manifest.yml index 66c4047..a5c70e8 100644 --- a/src/manifest.yml +++ b/src/manifest.yml @@ -56,7 +56,9 @@ # shows up in the CmdPal extension and in the CI summary # under a "manual" bucket. # windows: (object, required if "windows" in os) -# install: path to PowerShell install shim (CI runs this) +# install: path to PowerShell install shim +# CI runs this from the `src/` directory, while CmdPal +# assumes the extension's root is the repo root. # configuration: (optional) path to winget DSC configuration.winget the # extension applies via `winget configure`. Defaults to # "/configuration.winget" when omitted. @@ -77,8 +79,8 @@ flows: onboardingUrl: https://www.typescriptlang.org/download os: [windows] windows: - install: src/Workloads/typescript/install.ps1 - configuration: src/Workloads/typescript/configuration.winget + install: Workloads/typescript/install.ps1 + configuration: Workloads/typescript/configuration.winget build: tsc src/tests/typescript/hello.ts run: node src/tests/typescript/hello.js expected: src/tests/typescript/expected.txt @@ -93,8 +95,8 @@ flows: onboardingUrl: https://www.php.net/manual/en/install.windows.php os: [windows] windows: - install: src/Workloads/php/install.ps1 - configuration: src/Workloads/php/configuration.winget + install: Workloads/php/install.ps1 + configuration: Workloads/php/configuration.winget build: "" run: php src/tests/php/hello.php expected: src/tests/php/expected.txt @@ -134,8 +136,8 @@ flows: manual_test: true os: [windows] windows: - install: src/Workloads/winui/install.ps1 - configuration: src/Workloads/winui/configuration.winget + install: Workloads/winui/install.ps1 + configuration: Workloads/winui/configuration.winget build: dotnet build src/tests/winui/hello.csproj -c Release -v q --nologo -o src/tests/winui/bin run: src\tests\winui\bin\hello.exe expected: src/tests/winui/expected.txt @@ -150,8 +152,8 @@ flows: onboardingUrl: https://learn.microsoft.com/dotnet/core/install/windows os: [windows] windows: - install: src/Workloads/dotnet/install.ps1 - configuration: src/Workloads/dotnet/configuration.winget + install: Workloads/dotnet/install.ps1 + configuration: Workloads/dotnet/configuration.winget build: dotnet build src/tests/dotnet/hello.csproj -c Release -v q --nologo -o src/tests/dotnet/bin run: src\tests\dotnet\bin\hello.exe expected: src/tests/dotnet/expected.txt @@ -166,8 +168,8 @@ flows: onboardingUrl: https://go.dev/doc/install os: [windows] windows: - install: src/Workloads/go/install.ps1 - configuration: src/Workloads/go/configuration.winget + install: Workloads/go/install.ps1 + configuration: Workloads/go/configuration.winget build: "" run: go run src/tests/go/hello.go expected: src/tests/go/expected.txt @@ -182,8 +184,8 @@ flows: onboardingUrl: https://learn.microsoft.com/java/openjdk/install os: [windows] windows: - install: src/Workloads/java/install.ps1 - configuration: src/Workloads/java/configuration.winget + install: Workloads/java/install.ps1 + configuration: Workloads/java/configuration.winget build: "" run: java src/tests/java/Hello.java expected: src/tests/java/expected.txt @@ -198,8 +200,8 @@ flows: onboardingUrl: https://www.rust-lang.org/tools/install os: [windows] windows: - install: src/Workloads/rust/install.ps1 - configuration: src/Workloads/rust/configuration.winget + install: Workloads/rust/install.ps1 + configuration: Workloads/rust/configuration.winget build: cargo build --release --manifest-path src/tests/rust/Cargo.toml --quiet run: src\tests\rust\target\release\hello.exe expected: src/tests/rust/expected.txt @@ -214,8 +216,8 @@ flows: onboardingUrl: https://docs.python.org/3/using/windows.html os: [windows] windows: - install: src/Workloads/python/install.ps1 - configuration: src/Workloads/python/configuration.winget + install: Workloads/python/install.ps1 + configuration: Workloads/python/configuration.winget build: "" run: python src/tests/python/hello.py expected: src/tests/python/expected.txt @@ -234,7 +236,7 @@ flows: manual_test: true os: [windows] windows: - install: src/wsl-comfort/install.ps1 + install: wsl-comfort/install.ps1 build: "" run: wsl -- bash src/tests/comfort-shell/hello.sh expected: src/tests/comfort-shell/expected.txt @@ -255,8 +257,8 @@ flows: manual_test: true os: [windows] windows: - install: src/windows-dev-config/install.ps1 - configuration: src/windows-dev-config/dev-config.winget + install: windows-dev-config/install.ps1 + configuration: windows-dev-config/dev-config.winget build: "" run: pwsh -NoProfile -File src/tests/calm-os/probe.ps1 expected: src/tests/calm-os/expected.txt