functions/Split-Xpo.ps1
#Requires -Version 5 using namespace Microsoft.PowerShell.Commands Set-StrictMode -Version Latest function Split-Xpo { [CmdletBinding()] [OutputType([string])] Param ( [Parameter(Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [xpoItem[]]$Items, [Parameter(ValueFromPipelineByPropertyName = $true)] [string[]]$DestinationPathParts, [Parameter(ValueFromPipelineByPropertyName = $true)] [switch]$xpp, [Parameter(ValueFromPipelineByPropertyName = $true)] [switch]$NoClobber, [Parameter(ValueFromPipelineByPropertyName = $true)] [switch]$Force, [Parameter(ValueFromPipelineByPropertyName = $true)] [string[]]$Include, [Parameter(ValueFromPipelineByPropertyName = $true)] [string[]]$Exclude, [Parameter(ValueFromPipelineByPropertyName = $true)] [switch]$OverwriteNewer, [Parameter(ValueFromPipelineByPropertyName = $true)] [scriptblock]$FilterScript = {$_}, [Parameter(ValueFromPipelineByPropertyName = $true)] [FileSystemCmdletProviderEncoding]$Encoding = [FileSystemCmdletProviderEncoding]::Default, [Parameter(ValueFromPipelineByPropertyName = $true)] [ValidateSet('Default', 'mazzy', 'AOT', 'Flat', 'FlatAOT', 'FlatProject', 'Project', 'All')] [string]$PathStyle = 'Default', [Parameter(ValueFromPipelineByPropertyName = $true)] [scriptblock]$PathStyleScript, [Parameter(ValueFromPipelineByPropertyName = $true)] [switch]$PassThru ) process { $funcName = $MyInvocation.InvocationName Write-Verbose $funcName $Items | Test-NotEmpty | Where-Object -FilterScript $FilterScript | ForEach-Object { $Item = $_ if ( $xpp -and $Item.Type.Tag -eq 'CLS' ) { $Ext = '.xpp' $s = $Item.Text | Select-Source | Select-xppClass } elseif( $xpp -and $Item.Type.Tag -eq 'JOB' ) { $Ext = '.xpp' $s = $Item.Text | Select-Source | Select-Object -First 1 -ExpandProperty Text | Select-TextLine } else { $Ext = '.xpo' $s = @() + $Item.FileHeader + $Item.Text + "END`r`n" } $Item | Select-FileName -PathParts $DestinationPathParts -Ext $Ext -PathStyle $PathStyle -PathStyleScript $PathStyleScript | Select-Included -Include $Include -Exclude $Exclude | Test-DestinationPath -Item $Item -NoClobber:$NoClobber -Force:$Force -OverwriteNewer:$OverwriteNewer | Out-XpoText -Text $s -NoClobber:$NoClobber -Force:$Force -Encoding $Encoding -PassThru:$PassThru } } } |