Initialize-DeveloperMachine.psd1
|
@{ RootModule = 'Initialize-DeveloperMachine.psm1' ModuleVersion = '0.1.1' 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. Mostly UX polish from running `v0.1.0` on real machines and finding rough edges. ```powershell Install-Module Initialize-DeveloperMachine -RequiredVersion 0.1.1 -Scope CurrentUser Initialize-DeveloperMachine ``` ## ✨ First-run UX - **Interactive config scaffold.** When the script runs in a terminal and finds no config file, it now offers to create one for you at `%AppData%\Initialize-DeveloperMachine\config.json`, prints the contents in a gray-boxed preview, then prompts `[P]roceed or [E]dit and reload`. Hitting `E` opens the file in your default editor and shows a spinner until you save — once saved, the preview reprints with your changes and the prompt loops. CI / `-Force` / redirected-stdin runs are unchanged (they fall through to built-in defaults silently). - **Honest "no config" output.** Previously the script logged `[INFO] Config: <path>` even when that path didn't exist on disk. Now you get a clear `[INFO] No config file found; using built-in defaults.` plus the recommended location to drop one at. - **Section banners restyled** as three-line boxed headers: ``` ╔══════════════════════════════════════════════════════════╗ ║ NuGet ║ ╚══════════════════════════════════════════════════════════╝ ``` ## 🐛 Fixes - The skip message in the `DockerDesktop` task referenced the obsolete `DockerDesktopWslHome` config key. Updated to the current `DockerDesktop.WslHome`. - `Get-PathsConfig` now tolerates a `$null`/empty `-ConfigFile` cleanly. - Successful winget installs (`[INFO] X installed.`) now render in green so they stand out from in-progress lines. Idempotent "already installed" lines stay default colour. - Better post-install diagnostic when winget can't redetect a freshly-installed package: dumps the exit code in hex, the relevant `winget list` lines, and the matching Windows uninstall-registry entries — making it possible to tell a winget metadata bug apart from an actual install failure. ## 🔧 Defaults & internals - Default `DockerDesktop.WslHome` is now `D:\.docker-wsl` (was `D:\.docker-desktop`). Reads more clearly alongside `D:\.docker` (the CLI config junction). - Config-file lookup adds `%AppData%\Initialize-DeveloperMachine\config.json` ahead of the `~\.config\…` XDG-style path. Both still work; AppData wins when both exist. - Bundled `Initialize-DeveloperMachine.config.json` is now also shipped inside the published module, and used as the seed template by the interactive scaffold (single source of truth, no duplicated string literal). - New `Wait-ForFileSave` / `Open-EditorAndWaitForSave` helpers in `lib/ConfigScaffold.ps1`. See the [README](https://github.com/gonace/Initialize-DeveloperMachine#readme) for full configuration details and known limitations. '@ } } } |