From d4b78b2e25cb7d61cf4b3e32cf782b1e548f7973 Mon Sep 17 00:00:00 2001 From: jowj Date: Sun, 29 Apr 2018 16:23:00 -0500 Subject: [PATCH] add line ending changes i don't understand. --- .powershellCore.ps1 | 590 ++++++++++++++++++++++---------------------- 1 file changed, 295 insertions(+), 295 deletions(-) diff --git a/.powershellCore.ps1 b/.powershellCore.ps1 index 2110fdb..f241729 100644 --- a/.powershellCore.ps1 +++ b/.powershellCore.ps1 @@ -1,295 +1,295 @@ -Set-PSReadLineOption -EditMode Emacs -Function Get-DiskSpace { - - <# - .SYNOPSIS - Returns disk usage for each drive letter disk in GB - #> - [CmdletBinding()] - param ( - [Parameter(Mandatory=$True, - ValueFromPipeline=$True)] - [string[]]$computername - ) - - process { - $DiskReport = ForEach($c in ($computername)) { - Invoke-Command -ComputerName $c -scriptblock { - $selectObjProps = @( - @{Label = "Server Name";Expression = {$_.SystemName}}, - @{Label = "Drive Letter";Expression = {$_.DeviceID}}, - @{Label = "Total Capacity (GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}}, - @{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }}, - @{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} - ) - - $wmiObjs = Get-WmiObject win32_logicaldisk -Filter "Drivetype=3" -ErrorAction SilentlyContinue - Select-Object -property $selectObjProps -inputObject $wmiObjs - } - } - } - - end { - return $DiskReport - } -} - -# Add git, register ssh utils -## Update path for SSH (Loaded in PowerShell Profile) -$env:path += ";" + (Get-Item "Env:ProgramFiles").Value + "\Git\bin" -$env:path += ";" + (Get-Item "Env:ProgramFiles").Value + "\Git\usr\bin" - -## Load SSH agent utils -. (Resolve-Path ~/Documents/WindowsPowershell/ssh-agent-utils.ps1) - -## Spoof terminal environment for git color. -$env:TERM = 'cygwin' - -## Load posh-git example profile, which will setup a prompt -. 'C:\tools\poshgit\dahlbyk-posh-git-a4faccd\profile.example.ps1' - -Pop-Location - -Add-SshKey - -. (Resolve-Path ~/Documents/WindowsPowershell/ssh-agent-utils.ps1) - -# mrled's code -function Clear-Error { - $error.clear() - $global:LASTEXITCODE = 0 -} - -function ConvertTo-MaskLength { - <# - .Synopsis - Returns the length of a subnet mask. - .Description - ConvertTo-MaskLength accepts any IPv4 address as input, however the output value - only makes sense when using a subnet mask. - .Parameter SubnetMask - A subnet mask to convert into length - #> - - [CmdLetBinding()] - param( - [Parameter(Mandatory = $True, Position = 0, ValueFromPipeline = $True)] - [Alias("Mask")] - [Net.IPAddress]$SubnetMask - ) - - process { - $Bits = "$( $SubnetMask.GetAddressBytes() | ForEach-Object { [Convert]::ToString($_, 2) } )" -replace '[\s0]' - - return $Bits.Length - } -} - -function set-capsToCtrl { - $hexified = "00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00".Split(',') | % { "0x$_"} - $kbLayout = 'HKLM:\System\CurrentControlSet\Control\Keyboard Layout' - New-ItemProperty -Path $kbLayout -Name "Scancode Map" -PropertyType Binary -Value ([byte[]]$hexified) -} - -$SpecialCharacters = New-Object PSObject -Property @{ - Beep = [char]7 # beeps @ u - DoublePrompt = [char]187 # ?? (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK) - Lambda = [char]955 # ?? (GREEK LETTER LAMBDA) - HammerSickle = [char]9773 # ??? (HAMMER AND SICKLE) - VisualStudio = [char]42479 # ??? (VAI SYLLABLE GBE) -} - -function Get-DisplayPath { - param( - $path - ) - switch ($path.gettype()) { - 'PathInfo' { - $path = $path.providerpath - } - 'DirectoryInfo' { - $path = $path.fullname - } - } - $path = $path -replace [regex]::Escape($home),"~" - $splitpath = $path -split '\\' - if ($splitpath.count -gt 2) { - $displaypath = $splitpath[0] # drive letter or ~ - $displaypath+= '\...\' - $displaypath+= $splitpath[$splitpath.count-1] #the last folder in the path - } - else { - $displaypath = $path - } - return $displaypath -} - -function Get-JobStateColor { - param( - [string[]] $status - ) - $jobStateTable = @{ - NeedsAttention = @('Blocked','Disconnected','Failed','Stopped','Stopping','Suspended','Suspending') - InProgress = @('NotStarted','Running') - Completed = @('Completed') - } - $jobStateTable['All'] = $jobStateTable.Values | % {$_} - - if ($status.length -eq 0) { - return 'DarkGray' - } - elseif ($status |? { $jobStateTable.All -notcontains $_ }) { - write-error 'Unknown job status' - return 'Yellow' - } - elseif ($status |? { $jobStateTable.NeedsAttention -contains $_ }) { - return 'Red' - } - elseif ($status |? { $jobStateTable.InProgress -contains $_ }) { - return 'Cyan' - } - elseif ($status |? { $jobStateTable.Completed -contains $_ }) { - return 'White' - } - else { - write-error 'Unknown job status' - return 'Yellow' - } -} - -function Set-UserPrompt { - [CmdletBinding(DefaultParameterSetName='BuiltIn')] param( - [Parameter(Position=0, ParameterSetName='BuiltIn')] [ValidateSet('Color','Simple','Tiny')] [String] $builtInPrompt = 'Color', - [Parameter(Position=0, Mandatory=$True, ParameterSetName='Custom')] [Scriptblock] $newPrompt - ) - - $builtIns = @{ - # A color prompt that looks like my bash prompt. Colors require write-host, which sometimes - # doesn't play nice with other things. - Color = { - # Useful with ConEmu's status bar's "Console Title" field - always puts your CWD in the status bar - $Host.UI.RawUI.WindowTitle = $pwd - Write-Host $(get-date -format HH:mm:ss) -nonewline -foregroundcolor White - $eColor = if ($error -or $LASTEXITCODE) { "Red" } else { "DarkGray" } - $lastExitDisplay = if ("$LASTEXITCODE") { $LASTEXITCODE } else { "0" } - write-host " E:$($error.count):$lastExitDisplay" -nonewline -foreground $ecolor - Write-Host " $env:COMPUTERNAME" -nonewline -foregroundcolor Blue - $jobs = get-job - if ($jobs) { - write-host " J$($jobs.count)" -nonewline -foreground (Get-JobStateColor $jobs.State) - } - else { - write-host " J0" -nonewline -foreground White - } - Write-Host " $(Get-DisplayPath $pwd) " -nonewline -foregroundcolor Green - $SoyAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) - if ($SoyAdmin) { - Write-Host " $($SpecialCharacters.HammerSickle) " -NoNewLine -ForegroundColor Red -BackgroundColor Yellow - } - else { - Write-Host $SpecialCharacters.DoublePrompt -NoNewLine -ForegroundColor White - } - # Always return a string or PS will echo the standard "PS>" prompt and it will append to yours - return " " - } - - # A one-line-only prompt with no colors that uses 'return' rather that 'write-host' - Simple = { - $SoyAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) - $lcop = if ($SoyAdmin) {"#"} else {'>'} - return "$((get-date).Tostring('HH:mm:ss')) $env:COMPUTERNAME $(Get-DisplayPath $pwd) PS$lcop " - } - - # A very tiny prompt that at least differentiates based on color - Tiny = { - if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { $lcop = "#" } - else { $lcop = ">" } - write-host "$([Security.Principal.WindowsIdentity]::GetCurrent().Name) PS$lcop" -foreground Green -nonewline - return " " - } - } - - if ($PsCmdlet.ParameterSetName -eq 'BuiltIn') { - Set-UserPrompt -newPrompt $builtIns[$builtInPrompt] - return - } - New-Item -Force -Path Function:\prompt -Value $newPrompt | Out-Null -} - -function reimport-module { - param([parameter(mandatory=$true)] [string] $moduleName) - $module = get-module $moduleName - if ($module) { - write-host "Module is imported. Removing and re-adding." - remove-module $moduleName - import-module $module.path - } - else { - write-host "Module was not imported. Trying to add module $modulename..." - import-module $modulename - } -} - -<# -.description -Useful in case one of those fucking color commands perma fucks with your background/foreground color. These are my preferences. Get the default values by launching Powershell -NoProfile and examining $Host.UI.RawUI and $Host.PrivateData -#> -function Set-ConsoleColors { - [CmdletBinding()] Param( - $BackgroundColor = 'Black', - $ForegroundColor = 'White', - $ErrorForegroundColor = 'Red', - $ErrorBackgroundColor = 'Black', - $WarningForegroundColor = 'Magenta', - $WarningBackgroundColor = 'Black', - $DebugForegroundColor = 'Yellow', - $DebugBackgroundColor = 'Black', - $VerboseForegroundColor = 'Green', - $VerboseBackgroundColor = 'Black', - $ProgressForegroundColor = 'DarkBlue', - $ProgressBackgroundColor = 'White' - ) - $Host.UI.RawUI.BackgroundColor = $BackgroundColor - $Host.UI.RawUI.ForegroundColor = $ForegroundColor - $Host.PrivateData.ErrorForegroundColor = $ErrorForegroundColor - $Host.PrivateData.ErrorBackgroundColor = $ErrorBackgroundColor - $Host.PrivateData.WarningForegroundColor = $WarningForegroundColor - $Host.PrivateData.WarningBackgroundColor = $WarningBackgroundColor - $Host.PrivateData.DebugForegroundColor = $DebugForegroundColor - $Host.PrivateData.DebugBackgroundColor = $DebugBackgroundColor - $Host.PrivateData.VerboseForegroundColor = $VerboseForegroundColor - $Host.PrivateData.VerboseBackgroundColor = $VerboseBackgroundColor - $Host.PrivateData.ProgressForegroundColor = $ProgressForegroundColor - $Host.PrivateData.ProgressBackgroundColor = $ProgressBackgroundColor -} - -function Test-ProgressBar { - for ($i = 0; $i -lt 100; $i+=20 ) { - Write-Progress -Activity "Test in progress" -Status "$i% Complete:" -PercentComplete $i - Start-Sleep 1 - } -} - -# make 'ls -la' actually work in powershell since i type it by -# default all the fucking time: -function ls { - param( - [switch] $la - ) - get-childitem -} - -# Run commands -Set-UserPrompt -set-alias clerr Clear-Error -#C:\Users\me\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 -remove-alias "ls" - -# Chocolatey profile -$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" -if (Test-Path($ChocolateyProfile)) { - Import-Module "$ChocolateyProfile" -} - -Import-Module 'C:\tools\poshgit\dahlbyk-posh-git-a4faccd\src\posh-git.psd1' - +Set-PSReadLineOption -EditMode Emacs +Function Get-DiskSpace { + + <# + .SYNOPSIS + Returns disk usage for each drive letter disk in GB + #> + [CmdletBinding()] + param ( + [Parameter(Mandatory=$True, + ValueFromPipeline=$True)] + [string[]]$computername + ) + + process { + $DiskReport = ForEach($c in ($computername)) { + Invoke-Command -ComputerName $c -scriptblock { + $selectObjProps = @( + @{Label = "Server Name";Expression = {$_.SystemName}}, + @{Label = "Drive Letter";Expression = {$_.DeviceID}}, + @{Label = "Total Capacity (GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}}, + @{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }}, + @{Label = 'Free Space (%)'; Expression = {"{0:P0}" -f ($_.freespace/$_.size)}} + ) + + $wmiObjs = Get-WmiObject win32_logicaldisk -Filter "Drivetype=3" -ErrorAction SilentlyContinue + Select-Object -property $selectObjProps -inputObject $wmiObjs + } + } + } + + end { + return $DiskReport + } +} + +# Add git, register ssh utils +## Update path for SSH (Loaded in PowerShell Profile) +$env:path += ";" + (Get-Item "Env:ProgramFiles").Value + "\Git\bin" +$env:path += ";" + (Get-Item "Env:ProgramFiles").Value + "\Git\usr\bin" + +## Load SSH agent utils +. (Resolve-Path ~/Documents/WindowsPowershell/ssh-agent-utils.ps1) + +## Spoof terminal environment for git color. +$env:TERM = 'cygwin' + +## Load posh-git example profile, which will setup a prompt +. 'C:\tools\poshgit\dahlbyk-posh-git-a4faccd\profile.example.ps1' + +Pop-Location + +Add-SshKey + +. (Resolve-Path ~/Documents/WindowsPowershell/ssh-agent-utils.ps1) + +# mrled's code +function Clear-Error { + $error.clear() + $global:LASTEXITCODE = 0 +} + +function ConvertTo-MaskLength { + <# + .Synopsis + Returns the length of a subnet mask. + .Description + ConvertTo-MaskLength accepts any IPv4 address as input, however the output value + only makes sense when using a subnet mask. + .Parameter SubnetMask + A subnet mask to convert into length + #> + + [CmdLetBinding()] + param( + [Parameter(Mandatory = $True, Position = 0, ValueFromPipeline = $True)] + [Alias("Mask")] + [Net.IPAddress]$SubnetMask + ) + + process { + $Bits = "$( $SubnetMask.GetAddressBytes() | ForEach-Object { [Convert]::ToString($_, 2) } )" -replace '[\s0]' + + return $Bits.Length + } +} + +function set-capsToCtrl { + $hexified = "00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00".Split(',') | % { "0x$_"} + $kbLayout = 'HKLM:\System\CurrentControlSet\Control\Keyboard Layout' + New-ItemProperty -Path $kbLayout -Name "Scancode Map" -PropertyType Binary -Value ([byte[]]$hexified) +} + +$SpecialCharacters = New-Object PSObject -Property @{ + Beep = [char]7 # beeps @ u + DoublePrompt = [char]187 # ?? (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK) + Lambda = [char]955 # ?? (GREEK LETTER LAMBDA) + HammerSickle = [char]9773 # ??? (HAMMER AND SICKLE) + VisualStudio = [char]42479 # ??? (VAI SYLLABLE GBE) +} + +function Get-DisplayPath { + param( + $path + ) + switch ($path.gettype()) { + 'PathInfo' { + $path = $path.providerpath + } + 'DirectoryInfo' { + $path = $path.fullname + } + } + $path = $path -replace [regex]::Escape($home),"~" + $splitpath = $path -split '\\' + if ($splitpath.count -gt 2) { + $displaypath = $splitpath[0] # drive letter or ~ + $displaypath+= '\...\' + $displaypath+= $splitpath[$splitpath.count-1] #the last folder in the path + } + else { + $displaypath = $path + } + return $displaypath +} + +function Get-JobStateColor { + param( + [string[]] $status + ) + $jobStateTable = @{ + NeedsAttention = @('Blocked','Disconnected','Failed','Stopped','Stopping','Suspended','Suspending') + InProgress = @('NotStarted','Running') + Completed = @('Completed') + } + $jobStateTable['All'] = $jobStateTable.Values | % {$_} + + if ($status.length -eq 0) { + return 'DarkGray' + } + elseif ($status |? { $jobStateTable.All -notcontains $_ }) { + write-error 'Unknown job status' + return 'Yellow' + } + elseif ($status |? { $jobStateTable.NeedsAttention -contains $_ }) { + return 'Red' + } + elseif ($status |? { $jobStateTable.InProgress -contains $_ }) { + return 'Cyan' + } + elseif ($status |? { $jobStateTable.Completed -contains $_ }) { + return 'White' + } + else { + write-error 'Unknown job status' + return 'Yellow' + } +} + +function Set-UserPrompt { + [CmdletBinding(DefaultParameterSetName='BuiltIn')] param( + [Parameter(Position=0, ParameterSetName='BuiltIn')] [ValidateSet('Color','Simple','Tiny')] [String] $builtInPrompt = 'Color', + [Parameter(Position=0, Mandatory=$True, ParameterSetName='Custom')] [Scriptblock] $newPrompt + ) + + $builtIns = @{ + # A color prompt that looks like my bash prompt. Colors require write-host, which sometimes + # doesn't play nice with other things. + Color = { + # Useful with ConEmu's status bar's "Console Title" field - always puts your CWD in the status bar + $Host.UI.RawUI.WindowTitle = $pwd + Write-Host $(get-date -format HH:mm:ss) -nonewline -foregroundcolor White + $eColor = if ($error -or $LASTEXITCODE) { "Red" } else { "DarkGray" } + $lastExitDisplay = if ("$LASTEXITCODE") { $LASTEXITCODE } else { "0" } + write-host " E:$($error.count):$lastExitDisplay" -nonewline -foreground $ecolor + Write-Host " $env:COMPUTERNAME" -nonewline -foregroundcolor Blue + $jobs = get-job + if ($jobs) { + write-host " J$($jobs.count)" -nonewline -foreground (Get-JobStateColor $jobs.State) + } + else { + write-host " J0" -nonewline -foreground White + } + Write-Host " $(Get-DisplayPath $pwd) " -nonewline -foregroundcolor Green + $SoyAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) + if ($SoyAdmin) { + Write-Host " $($SpecialCharacters.HammerSickle) " -NoNewLine -ForegroundColor Red -BackgroundColor Yellow + } + else { + Write-Host $SpecialCharacters.DoublePrompt -NoNewLine -ForegroundColor White + } + # Always return a string or PS will echo the standard "PS>" prompt and it will append to yours + return " " + } + + # A one-line-only prompt with no colors that uses 'return' rather that 'write-host' + Simple = { + $SoyAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) + $lcop = if ($SoyAdmin) {"#"} else {'>'} + return "$((get-date).Tostring('HH:mm:ss')) $env:COMPUTERNAME $(Get-DisplayPath $pwd) PS$lcop " + } + + # A very tiny prompt that at least differentiates based on color + Tiny = { + if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { $lcop = "#" } + else { $lcop = ">" } + write-host "$([Security.Principal.WindowsIdentity]::GetCurrent().Name) PS$lcop" -foreground Green -nonewline + return " " + } + } + + if ($PsCmdlet.ParameterSetName -eq 'BuiltIn') { + Set-UserPrompt -newPrompt $builtIns[$builtInPrompt] + return + } + New-Item -Force -Path Function:\prompt -Value $newPrompt | Out-Null +} + +function reimport-module { + param([parameter(mandatory=$true)] [string] $moduleName) + $module = get-module $moduleName + if ($module) { + write-host "Module is imported. Removing and re-adding." + remove-module $moduleName + import-module $module.path + } + else { + write-host "Module was not imported. Trying to add module $modulename..." + import-module $modulename + } +} + +<# +.description +Useful in case one of those fucking color commands perma fucks with your background/foreground color. These are my preferences. Get the default values by launching Powershell -NoProfile and examining $Host.UI.RawUI and $Host.PrivateData +#> +function Set-ConsoleColors { + [CmdletBinding()] Param( + $BackgroundColor = 'Black', + $ForegroundColor = 'White', + $ErrorForegroundColor = 'Red', + $ErrorBackgroundColor = 'Black', + $WarningForegroundColor = 'Magenta', + $WarningBackgroundColor = 'Black', + $DebugForegroundColor = 'Yellow', + $DebugBackgroundColor = 'Black', + $VerboseForegroundColor = 'Green', + $VerboseBackgroundColor = 'Black', + $ProgressForegroundColor = 'DarkBlue', + $ProgressBackgroundColor = 'White' + ) + $Host.UI.RawUI.BackgroundColor = $BackgroundColor + $Host.UI.RawUI.ForegroundColor = $ForegroundColor + $Host.PrivateData.ErrorForegroundColor = $ErrorForegroundColor + $Host.PrivateData.ErrorBackgroundColor = $ErrorBackgroundColor + $Host.PrivateData.WarningForegroundColor = $WarningForegroundColor + $Host.PrivateData.WarningBackgroundColor = $WarningBackgroundColor + $Host.PrivateData.DebugForegroundColor = $DebugForegroundColor + $Host.PrivateData.DebugBackgroundColor = $DebugBackgroundColor + $Host.PrivateData.VerboseForegroundColor = $VerboseForegroundColor + $Host.PrivateData.VerboseBackgroundColor = $VerboseBackgroundColor + $Host.PrivateData.ProgressForegroundColor = $ProgressForegroundColor + $Host.PrivateData.ProgressBackgroundColor = $ProgressBackgroundColor +} + +function Test-ProgressBar { + for ($i = 0; $i -lt 100; $i+=20 ) { + Write-Progress -Activity "Test in progress" -Status "$i% Complete:" -PercentComplete $i + Start-Sleep 1 + } +} + +# make 'ls -la' actually work in powershell since i type it by +# default all the fucking time: +function ls { + param( + [switch] $la + ) + get-childitem +} + +# Run commands +Set-UserPrompt +set-alias clerr Clear-Error +#C:\Users\me\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 +remove-alias "ls" + +# Chocolatey profile +$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" +if (Test-Path($ChocolateyProfile)) { + Import-Module "$ChocolateyProfile" +} + +Import-Module 'C:\tools\poshgit\dahlbyk-posh-git-a4faccd\src\posh-git.psd1' +