Get-PipeworksManifest.ps1

function Get-PipeworksManifest
{
    <#
    .Synopsis
        Gets the Pipeworks manifest for a module
    .Description
        Gets the Pipeworks manifest for a PowerShell module.
                 
        The pipeworks manifest is a .psd1 file that describes how the module will be published as a web service.
    .Example
        Get-PipeworksManifest -Module Pipeworks
    .Example
        Get-Module Pipeworks | Get-PipeworksManifest
    .Example
        Get-Module | Get-PipeworksManifest
    .Link
        New-PipeworksManifest
    #>

    [OutputType([Hashtable])]
    param(
    # The name of the module
    [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)]
    [Alias('Name')]
    [string]
    $ModuleName
    )

    process {
        
        $realModule = Get-Module $moduleName
        if (-not $realModule) { 
            Write-Error "$moduleName not found"
            return 
        } 

        if (-not $realModule.Path) { return }

        # Import pipeworks manifest
        
        $moduleRoot = Split-Path $realModule.Path                     
        #region Initialize Pipeworks Manifest
        $pipeworksManifestPath = Join-Path $moduleRoot "$($realmodule.Name).Pipeworks.psd1"
        if (Test-Path $pipeworksManifestPath) {
            try {                     
                $result = & ([ScriptBlock]::Create(
                    "data -SupportedCommand Add-Member, New-WebPage, New-Region, Write-CSS, Write-Ajax, Out-Html, Write-Link { $(
                        [ScriptBlock]::Create([IO.File]::ReadAllText($pipeworksManifestPath))
                    )}"
))
                    
                $result.Name = $moduleName 
                $result.Module = $realModule
                $result |
                    Add-Member NoteProperty Name $ModuleName -Force -PassThru |                  
                    Add-Member NoteProperty Module $RealModule -Force -PassThru
            } catch {
                # Write-Error "Could not read pipeworks manifest for $ModuleName"
                return
            }                                                
        }

    }
}