dotfiles/.config/powershell/profile.ps1

78 lines
2 KiB
PowerShell

function UsernameAtComputer
{
if (! "$env:ComputerName" -eq "") {
$compname = $env:ComputerName
}
else {
$compname = "unknown"
}
if (! "$env:UserName" -eq "") {
$username = $env:UserName
}
if (! "$env:USER" -eq "") {
$username = $env:USER
}
else {
$username = "unknown"
}
"`e[35;1m" + $username + "`e[0m`e[1m@" + "`e[35;1m" + $compname
}
Write-Host " `e[34;1m ,___---'‾‾‾|`e[0m " (UsernameAtComputer)
Write-Host " `e[34;1m|'‾ | | "
Write-Host " `e[34;1m| | |"
Write-Host " `e[34;1m|------|------|"
Write-Host " `e[34;1m| | |"
Write-Host " `e[34;1m|,_ | |"
Write-Host " `e[34;1m '‾‾‾---,___|"
# ----- set default color
Set-PSReadlineOption -Colors @{ Parameter = "`e[96m"}
Set-PSReadlineOption -Colors @{ Operator = "`e[96m"}
Set-PSReadlineOption -Colors @{ String = "`e[93m"}
# ----- Messy function to make it looks like my zsh theme / git support
function Git-Status
{
"$([char]27)[31m"
if ((git status --porcelain -b 2>$1 | Select-String -Pattern 'M ') -notmatch 'fatal') {
"!"
}
if ((git status --porcelain -b 2>$1 | Select-String -Pattern '\# ') -notmatch 'fatal') {
""
}
if ((git status --porcelain -b 2>$1 | Select-String -Pattern '\? ') -notmatch 'fatal') {
"?"
}
}
function Git-Branch
{
" $([char]27)[35m " + (git branch --show-current)
}
function getdir
{
# ((Get-Location) -replace '[a-zA-Z].\\','~\') # change 'c:/' into '~' (optional)
((Get-Location) -replace '/home/[a-zA-Z]*','~') # change '/home/<username>' into '~'
}
function end_of_prompt
{
"
$([char]27)[32;1m$> $([char]27)[0m"
}
# ----- Foreground (the thing that actually shows up)
function prompt
{
if ((git log -n 1 2>$1) -notmatch 'fatal') {
"
$([char]27)[34;1m" + $env:COMPUTERNAME + "" + (getdir) + (Git-Branch) + " " + ("$(Git-Status)" -replace ' ','') + (end_of_prompt)
}
else
{
"
$([char]27)[34;1m" + $env:COMPUTERNAME + "" + (getdir) + (end_of_prompt)
}
}
# ----- Aliases
New-Alias vim nvim
function q{exit}