Initialize-DeveloperMachine.psd1
|
@{ RootModule = 'Initialize-DeveloperMachine.psm1' ModuleVersion = '0.1.2' GUID = 'f3f98b03-1835-4fa7-a0bc-440739c8cee2' Author = 'gonace' CompanyName = 'gonace' Copyright = '(c) gonace. All rights reserved.' Description = 'Bootstrap a Windows developer machine: relocate caches off C:, install winget tools, set up WSL + Docker Desktop. Modular tasks, idempotent, dry-run support.' PowerShellVersion = '5.1' CompatiblePSEditions = @('Desktop','Core') FunctionsToExport = @('Initialize-DeveloperMachine') CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @() PrivateData = @{ PSData = @{ Tags = @('Developer','Bootstrap','Windows','WSL','DockerDesktop','winget','Junction','Cache','NuGet','npm') LicenseUri = 'https://github.com/gonace/Initialize-DeveloperMachine/blob/master/LICENSE' ProjectUri = 'https://github.com/gonace/Initialize-DeveloperMachine' ReleaseNotes = @' Patch release. All three changes are from real-world install of `v0.1.1` finding rough edges that shipped accidentally. ```powershell Update-Module Initialize-DeveloperMachine -Scope CurrentUser # or, fresh install: # Install-Module Initialize-DeveloperMachine -RequiredVersion 0.1.2 -Scope CurrentUser ``` ## 🐛 Fixes - **Interactive scaffold now actually fires for `Install-Module` users.** `v0.1.1` shipped the bundled `Initialize-DeveloperMachine.config.json` inside the module so the scaffold could read it as a template — but the script's config-file lookup chain *also* looked at `$PSScriptRoot`, which meant the bundled file silently shadowed user-scope config locations. PSGallery installs were running with the maintainer's bundled config and never got the scaffold prompt. Fixed: `$PSScriptRoot` is no longer in the lookup chain. The bundled file is now strictly the template source for the scaffold; the active-config lookup considers user locations only (`-ConfigFile`, `$PWD`, `%AppData%\…`, `~\.config\…`). - **Blocking-process warning no longer offers the misleading `[S] Suspend` option.** PowerShell's default `ShouldContinue` prompt presents `[Y] Yes [N] No [S] Suspend [?] Help`. Several users picked `S` thinking it meant "skip" — it actually drops the user into a *nested* PowerShell sub-shell while the original script (and its single-instance lock) stays alive. Subsequent runs then hit `Another instance of Initialize-DeveloperMachine is already running.` The prompt is now a plain Y/N; the trapdoor option is gone. - **`Ctrl+C` hook for defensive lock-file cleanup.** The existing `try/finally` already releases the lock on Ctrl+C-during-cmdlet (PipelineStoppedException unwinds finally cleanly), but Ctrl+C *while sitting at an interactive prompt* didn't always reach the finally on every host. New `Console.CancelKeyPress` handler disposes the lock stream and removes the lock file directly, idempotent with the finally so neither path leaves stale state behind. See the [README](https://github.com/gonace/Initialize-DeveloperMachine#readme) for full configuration details. '@ } } } |