Public/Add-PsmFunction.ps1
function Add-PsmFunction { <# .Synopsis A function that creates a function.ps1 and function.Tests.ps1 file stub .DESCRIPTION A function that creates a function.ps1 and function.Tests.ps1 file stub for an easy start to creating powershell modules/function in a TDD manner .EXAMPLE Add-PsmFunction "Write-HereWeGo" Add-PsmFunction "Write-HereWeGo" -Whatif #> [CmdletBinding(SupportsShouldProcess=$true)] param( [Parameter( Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [ValidatePattern("^[a-zA-Z]{3,}-[a-zA-Z]{3,}$")] [string]$functionName, [Parameter( Mandatory=$false, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [string]$alias ) BEGIN{ Write-Verbose "Starting Add-PsmFunction..." Confirm-IsInitializedModulePath $packageXml = Import-CliXml .\module-psd1.xml }#begin PROCESS{ if ($psCmdlet.ShouldProcess(<# on target --> #>"$($packageXml.RootModule)", <# What if: Performing operation --> #>"Adding new public function $functionName")) { Show-IsApprovedVerb $functionName if (Test-Path -Path .\Public -PathType Container) { Get-PsmFunctionContent $functionName | Set-Content .\Public\$functionName.ps1 $packageXml.FunctionsToExport += "$functionName" if ($alias) { $packageXml.AliasesToExport += "$alias" } $packageXml | Export-CliXml .\module-psd1.xml Write-Verbose ".\Public\$functionName.ps1 file written and $functionName has been added to the psd1's FunctionsToExport list" } else { Write-Error "No .\Public folder found, this is not an initialized module folder... Run: ``Initialize-Psm``" } } }#process END{ Write-Verbose "Finished Add-PsmFunction..." }#end } |