Skip to content

v1.1.0 - Module conversion, CI, documented commands, and self-update#2

Merged
joshuaevan merged 7 commits into
mainfrom
dev
Apr 10, 2026
Merged

v1.1.0 - Module conversion, CI, documented commands, and self-update#2
joshuaevan merged 7 commits into
mainfrom
dev

Conversation

@joshuaevan

Copy link
Copy Markdown
Owner

Summary

This release transforms PowerShell Dev Toolkit from a loose script collection into a proper PowerShell module with significant new functionality:

  • Proper PowerShell module: New PowerShellDevToolkit/ directory with .psd1 manifest, .psm1 loader, and Public//Private/ layout. Supports Import-Module and versioned releases.
  • GitHub Actions CI pipeline: Automated Pester test runs on push/PR via .github/workflows/ci.yml, plus Invoke-Tests.ps1 for local test execution.
  • All documented commands implemented: 15+ previously doc-only commands now exist as real scripts (Add-Path, Clear-DNSCache, Edit-File, Edit-Hosts, Edit-Profile, Get-CommandLocation, Get-DirectoryListing, Get-IPAddress, Invoke-Elevated, Invoke-ProfileReload, New-DirectoryAndEnter, Open-Item, Set-FileTimestamp, Set-TempLocation, Use-NppForGit). Tests migrated to Pester 5. Docs updated to match reality.
  • Update-Toolkit command: Self-update via git pull with changelog summary and optional alias re-registration.
  • Logo and branding: New logo assets integrated into README, Setup, and Show-Help.
  • CI stability: Multiple rounds of test fixes for CI-specific environment differences.

Test plan

  • All Pester tests pass locally via Invoke-Tests.ps1
  • GitHub Actions CI passes on merge
  • Import-Module .\PowerShellDevToolkit works and exposes all public commands
  • Update-Toolkit runs without error

Restructure the project from standalone .ps1 scripts into a standard
PowerShell module with Public/Private folder convention, manifest, and
auto-loader. This enables Import-Module, Get-Command -Module discovery,
and versioned releases.

- Add PowerShellDevToolkit/ module with .psd1 manifest and .psm1 loader
- Wrap all 17 commands as exported functions in Public/
- Move Get-ScriptConfig to Private/ as an internal helper
- Rename helpme -> Show-Help, recent-commands -> Show-RecentCommands
- Define all 18 aliases (cssh, gs, serve, etc.) in the module
- Replace per-script alias injection in Setup-Environment with Import-Module
- Update all 17 test files to import the module instead of dot-sourcing
- Update README, CONTRIBUTING docs for new module structure
- All 141 Pester tests passing
Adds .github/workflows/ci.yml to install Pester 5 and run Invoke-Pester on every push and PR, uploading NUnit XML results as a build artifact. Adds Invoke-Tests.ps1 at the repo root for one-command local test runs.
…docs

Add 15 missing commands (Edit-File, Edit-Profile, Edit-Hosts, Use-NppForGit,
Set-FileTimestamp, Open-Item, Get-DirectoryListing, New-DirectoryAndEnter,
Set-TempLocation, Get-CommandLocation, Invoke-Elevated, Add-Path,
Invoke-ProfileReload, Get-IPAddress, Clear-DNSCache) with aliases and tests.
Migrate all 32 test files to Pester 5 scoping and syntax.
Update CONTRIBUTING.md and README.md to reflect new commands and CI.
Normalize 8.3 short paths vs long paths using Get-Item in path comparisons.
Capture Write-Error via -ErrorVariable instead of *>&1 for Pester 5.
Call private Get-ScriptConfig through module scope and create config.json from example in CI.
Handle empty command history on CI runners in recent-commands tests.
New Update-Toolkit command: git pull, changelog summary, module re-import.
Test-ToolkitUpdate runs silently on startup at a configurable interval
(toolkit.updateCheckDays in config.json, default 1 day, 0 to disable).
Added to Show-Help, helpme.ps1, COMMANDS.md, and config.example.json.
Fix recent-commands test for missing PSReadLine history on CI runners.
Fix Use-NppForGit test error capture and module reload on CI.
Child process tests now use pwsh instead of powershell (5.1 unavailable
on CI runners). Create config.json from example before tests that spawn
subprocesses to prevent Get-ScriptConfig Read-Host prompt from corrupting
output. Skip startup update check in non-interactive sessions.
@joshuaevan joshuaevan merged commit f7653fd into main Apr 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant