BuildScripts/Tasks/add.exported.functions.build.ps1
<# .SYNOPSIS Add the functions to the manifest that should be exported from the module .DESCRIPTION Foreach module add the functions with the Visibility of 'public' to the manifest in the Staging directory, in the 'FunctionsToExport' field To exclude a specific function from beinf added to the manifest, add its name to the 'ExcludeFunctionsFromExport' list .LINK Get-SourceItem Get-SourceTypeMap format.manifest.file.array #> param( [Parameter()][string[]]$ExcludeFunctionsFromExport = ( Get-BuildProperty ExcludeFunctionsFromExport @() ) ) <# .SYNOPSIS Add the functions to the manifest that should be exported from the module #> task add.exported.functions { $BuildInfo | Foreach-Module { $config = $_ $name = $config.Name $manifestFile = (Join-Path $config.Staging $config.ManifestFile) logInfo "Adding public functions to $name in $manifestFile" $publicFunctions = @() :item foreach ($item in $config.SourceInfo) { if (( $item.Type -like 'function') -and ($item.Visibility -like 'public')) { if ( $ExcludeFunctionsFromExport -contains $item.Name) { logInfo "Not adding public function $($item.Name) because it is listed in ExcludeFunctionsFromExport" continue item } else { $publicFunctions += ($item | Select-Object -ExpandProperty 'Name') } } } if ($publicFunctions.Count -gt 0) { logDebug "Found $($publicFunctions.Count) public functions for $name" if (Test-Path $manifestFile) { Update-Metadata -Path $manifestFile -PropertyName 'FunctionsToExport' -Value $publicFunctions } else { throw (logError "Could not add public functions to $manifestFile. File not found" -Passthru) } } else { logInfo "No public functions found in $name" } } } |