Private/Add-SpecPSM1.ps1
function Add-SpecPSM1 { [cmdletbinding()] param ( [parameter (mandatory = $true)] [string]$moduleName, [parameter (mandatory = $true)] [string]$modulePath ) begin { $fullModulePath = Join-Path $modulePath $moduleName # .psm1 module loader code $moduleLoaderCode = @' #Get public and private function definition files. $Public = @(Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue) $Private = @(Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue) #Dot source the files Foreach($import in @($Public + $Private)) { Try { . $import.fullname } Catch { Write-Error -Message "Failed to import function $($import.fullname): $_" } } Export-ModuleMember -Function $Public.Basename '@ } process { # Create .psm1 module loader try { Write-Verbose "Creating $moduleName.psm1 module loader" new-item -path $fullModulePath -Name "$moduleName.psm1" -ItemType File | Out-Null -ErrorAction stop -ev x Set-Content -Path (Join-Path $fullModulePath "$moduleName.psm1") -Value $moduleLoaderCode return $true } catch { write-warning "Unable to create $moduleName.psm1 file" write-warning "The error was $x" return $false } } } |