PSGitPowerline.ps1
function New-PowerLineBlock { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true, Position=0)] [Alias("Content","text")] $Object, [Parameter(ValueFromPipelineByPropertyName=$true)] [Alias("fg","Foreground")] $ForegroundColor, [Parameter(ValueFromPipelineByPropertyName=$true)] [Alias("bg","Background")] $BackgroundColor ) process { $Parameters = @{} + $PSBoundParameters $Null = $PSBoundParameters.GetEnumerator() | Where Value -eq $null | % { $Parameters.Remove($_.Key) } Write-Debug ($Parameters | Out-String) $Parameters } } Set-Alias Get-StatusPowerLine Write-StatusPowerLine function Write-StatusPowerLine { [CmdletBinding()] param ( $Status, $Config ) end { if(!$Status) { $Status = Get-Status -WarningAction SilentlyContinue } if(!$Config) { $Config = Import-Configuration } if($Status -and $Config) { $config.Branch | New-PowerLineBlock ("$($config.Branch.Object)" + $Status.Branch) if($Status.AheadBy -gt 0) { $config.AheadBy | New-PowerLineBlock ("$($config.AheadBy.Object)" + $Status.AheadBy) } if($Status.BehindBy -gt 0) { $config.BehindBy | New-PowerLineBlock ("$($config.BehindBy.Object)" + $Status.BehindBy) } $StagedChanges = @($Status.Changes | Where { $_.Staged }) $UnStagedChanges = @($Status.Changes | Where { !$_.Staged }) if($StagedChanges.Length -gt 0 -or $UnStagedChanges.Length -gt 0) { $config.BeforeChanges | New-PowerLineBlock } if(0 -ne $StagedChanges.Length) { $config.StagedChanges | New-PowerLineBlock $($( $count = @($StagedChanges | Where { $_.Change -eq "Added" }).Length if(0 -lt $count -or !$config.HideZero) { "+$count" } $count = @($StagedChanges | Where { $_.Change -eq "Modified" }).Length if(0 -lt $count -or !$config.HideZero) { "~$count" } $count = @($StagedChanges | Where { $_.Change -eq "Removed" }).Length if(0 -lt $count -or !$config.HideZero) { "-$count" } $count = @($StagedChanges | Where { $_.Change -eq "Renamed" }).Length if(0 -lt $count -or !$config.HideZero) { "%$count" } ) -join " ") } if($StagedChanges.Length -gt 0 -and $UnStagedChanges.Length -gt 0) { $config.Separator | New-PowerLineBlock } if(0 -ne $UnStagedChanges.Length) { $config.UnStagedChanges | New-PowerLineBlock $($( $count = @($UnStagedChanges | Where { $_.Change -eq "Added" }).Length if(0 -lt $count -or !$config.HideZero) { "+$count" } $count = @($UnStagedChanges | Where { $_.Change -eq "Modified" }).Length if(0 -lt $count -or !$config.HideZero) { "~$count" } $count = @($UnStagedChanges | Where { $_.Change -eq "Removed" }).Length if(0 -lt $count -or !$config.HideZero) { "-$count" } $count = @($UnStagedChanges | Where { $_.Change -eq "Renamed" }).Length if(0 -lt $count -or !$config.HideZero) { "%$count" } ) -join " ") } } } } |