From 1d6d5962a9f95d06c57d87d9cc3f6b65c4dea50c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Jan 2026 23:12:21 +0000 Subject: [PATCH 1/5] Initial plan From 75bdf935df5abcd5a29512a6beb44b08c628ed0b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Jan 2026 23:15:24 +0000 Subject: [PATCH 2/5] Include all batteries-included modules in IdLE package Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com> --- .github/workflows/release.yml | 6 ++++++ tools/New-IdleModulePackage.ps1 | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4eeeaef9..398b9993 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -146,6 +146,12 @@ jobs: 'src/IdLE/IdLE.psd1', 'src/IdLE.Core/IdLE.Core.psd1', 'src/IdLE.Steps.Common/IdLE.Steps.Common.psd1', + 'src/IdLE.Steps.DirectorySync/IdLE.Steps.DirectorySync.psd1', + 'src/IdLE.Steps.Mailbox/IdLE.Steps.Mailbox.psd1', + 'src/IdLE.Provider.AD/IdLE.Provider.AD.psd1', + 'src/IdLE.Provider.EntraID/IdLE.Provider.EntraID.psd1', + 'src/IdLE.Provider.ExchangeOnline/IdLE.Provider.ExchangeOnline.psd1', + 'src/IdLE.Provider.DirectorySync.EntraConnect/IdLE.Provider.DirectorySync.EntraConnect.psd1', 'src/IdLE.Provider.Mock/IdLE.Provider.Mock.psd1' ) diff --git a/tools/New-IdleModulePackage.ps1 b/tools/New-IdleModulePackage.ps1 index 73f7d661..a192e0fb 100644 --- a/tools/New-IdleModulePackage.ps1 +++ b/tools/New-IdleModulePackage.ps1 @@ -49,7 +49,13 @@ param( [ValidateNotNullOrEmpty()] [string[]] $NestedModuleNames = @( 'IdLE.Core', - 'IdLE.Steps.Common' + 'IdLE.Steps.Common', + 'IdLE.Steps.DirectorySync', + 'IdLE.Steps.Mailbox', + 'IdLE.Provider.AD', + 'IdLE.Provider.EntraID', + 'IdLE.Provider.ExchangeOnline', + 'IdLE.Provider.DirectorySync.EntraConnect' ), [Parameter()] From 673507141bb6f9c37275cc3b3b6350e5f6ae6cad Mon Sep 17 00:00:00 2001 From: Matthias <13959569+blindzero@users.noreply.github.com> Date: Sat, 31 Jan 2026 00:29:57 +0100 Subject: [PATCH 3/5] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- tools/New-IdleModulePackage.ps1 | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tools/New-IdleModulePackage.ps1 b/tools/New-IdleModulePackage.ps1 index a192e0fb..73f7d661 100644 --- a/tools/New-IdleModulePackage.ps1 +++ b/tools/New-IdleModulePackage.ps1 @@ -49,13 +49,7 @@ param( [ValidateNotNullOrEmpty()] [string[]] $NestedModuleNames = @( 'IdLE.Core', - 'IdLE.Steps.Common', - 'IdLE.Steps.DirectorySync', - 'IdLE.Steps.Mailbox', - 'IdLE.Provider.AD', - 'IdLE.Provider.EntraID', - 'IdLE.Provider.ExchangeOnline', - 'IdLE.Provider.DirectorySync.EntraConnect' + 'IdLE.Steps.Common' ), [Parameter()] From 608ff6033867d92a4657de6c36746718ac622f80 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Jan 2026 23:36:19 +0000 Subject: [PATCH 4/5] Separate package inclusion from auto-import behavior Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com> --- tools/New-IdleModulePackage.ps1 | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tools/New-IdleModulePackage.ps1 b/tools/New-IdleModulePackage.ps1 index 73f7d661..de174dac 100644 --- a/tools/New-IdleModulePackage.ps1 +++ b/tools/New-IdleModulePackage.ps1 @@ -18,7 +18,12 @@ Repository root path. Defaults to the parent folder of this script directory. Target folder for the staged package. Defaults to '/artifacts/IdLE'. .PARAMETER NestedModuleNames -Names of nested modules to include under 'Modules/'. Defaults to IdLE.Core and IdLE.Steps.Common. +Names of nested modules to auto-import when IdLE is imported. Defaults to IdLE.Core and IdLE.Steps.Common. +These modules are automatically loaded when a user runs 'Import-Module IdLE'. + +.PARAMETER IncludeModuleNames +Names of all modules to include in the package under 'Modules/'. Defaults to all batteries-included modules. +These modules are available for explicit import but not all are auto-imported (see NestedModuleNames). Note: IdLE.Provider.Mock is published as a separate top-level module to ensure it is discoverable via Import-Module when installed from PowerShell Gallery. @@ -52,6 +57,19 @@ param( 'IdLE.Steps.Common' ), + [Parameter()] + [ValidateNotNullOrEmpty()] + [string[]] $IncludeModuleNames = @( + 'IdLE.Core', + 'IdLE.Steps.Common', + 'IdLE.Steps.DirectorySync', + 'IdLE.Steps.Mailbox', + 'IdLE.Provider.AD', + 'IdLE.Provider.EntraID', + 'IdLE.Provider.ExchangeOnline', + 'IdLE.Provider.DirectorySync.EntraConnect' + ), + [Parameter()] [switch] $Clean ) @@ -195,14 +213,14 @@ Copy-IdleModuleFolder -SourcePath $idleSrc -DestinationPath $idleDst # 2) Stage nested modules into IdLE/Modules// Initialize-IdleDirectory -Path $modulesDst -foreach ($name in $NestedModuleNames) { +foreach ($name in $IncludeModuleNames) { $nestedSrc = Join-Path -Path $srcRoot -ChildPath $name $nestedDst = Join-Path -Path $modulesDst -ChildPath $name Copy-IdleModuleFolder -SourcePath $nestedSrc -DestinationPath $nestedDst } -# 3) Patch staged manifest to reference in-package nested module manifests +# 3) Patch staged manifest to reference in-package nested module manifests (auto-imported) $stagedManifest = Join-Path -Path $idleDst -ChildPath 'IdLE.psd1' $nestedEntries = Get-IdleNestedModuleEntryPaths -Names $NestedModuleNames Set-IdleNestedModulesInManifest -ManifestPath $stagedManifest -NestedModuleEntryPaths $nestedEntries From 6276b299b12d82d5f8a3d0dcb0ecbbcd87ca9501 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Jan 2026 23:38:19 +0000 Subject: [PATCH 5/5] Refactor: Set IncludeModuleNames default after param block to avoid duplication Co-authored-by: blindzero <13959569+blindzero@users.noreply.github.com> --- tools/New-IdleModulePackage.ps1 | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tools/New-IdleModulePackage.ps1 b/tools/New-IdleModulePackage.ps1 index de174dac..700e4e45 100644 --- a/tools/New-IdleModulePackage.ps1 +++ b/tools/New-IdleModulePackage.ps1 @@ -58,8 +58,18 @@ param( ), [Parameter()] - [ValidateNotNullOrEmpty()] - [string[]] $IncludeModuleNames = @( + [string[]] $IncludeModuleNames = $null, + + [Parameter()] + [switch] $Clean +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +# Default IncludeModuleNames to all batteries-included modules if not specified +if ($null -eq $IncludeModuleNames -or $IncludeModuleNames.Count -eq 0) { + $IncludeModuleNames = @( 'IdLE.Core', 'IdLE.Steps.Common', 'IdLE.Steps.DirectorySync', @@ -68,14 +78,8 @@ param( 'IdLE.Provider.EntraID', 'IdLE.Provider.ExchangeOnline', 'IdLE.Provider.DirectorySync.EntraConnect' - ), - - [Parameter()] - [switch] $Clean -) - -Set-StrictMode -Version Latest -$ErrorActionPreference = 'Stop' + ) +} function Resolve-IdleRepoRoot { [CmdletBinding()]