Dirty hacks for non-interactive shells

This commit is contained in:
John Doty 2012-04-12 15:44:30 -07:00
parent 87659b9220
commit 07e254465d
3 changed files with 64 additions and 45 deletions

View file

@ -131,30 +131,6 @@ function Add-ConsoleHelper()
Add-Type -TypeDefinition $code -ReferencedAssemblies @('System.Drawing') Add-Type -TypeDefinition $code -ReferencedAssemblies @('System.Drawing')
} }
# These are the 16 colors for our palette.
Add-Type -AssemblyName System.Drawing
# Here's the solarized table...
#
# SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB
# --------- ------- ---- ------- ----------- ---------- ----------- -----------
$base03 = "#002b36" # 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
$base02 = "#073642" # 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
$base01 = "#586e75" # 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46
$base00 = "#657b83" # 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51
$base0 = "#839496" # 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
$base1 = "#93a1a1" # 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
$base2 = "#eee8d5" # 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93
$base3 = "#fdf6e3" # 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
$yellow = "#b58900" # 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
$orange = "#cb4b16" # 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
$red = "#dc322f" # 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
$magenta = "#d33682" # 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
$violet = "#6c71c4" # 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
$blue = "#268bd2" # 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
$cyan = "#2aa198" # 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
$green = "#859900" # 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
function Set-SolarizedColors([switch]$Light, [switch]$Dark) function Set-SolarizedColors([switch]$Light, [switch]$Dark)
{ {
if ( (-not $Light) -and (-not $Dark) ) if ( (-not $Light) -and (-not $Dark) )
@ -162,8 +138,32 @@ function Set-SolarizedColors([switch]$Light, [switch]$Dark)
$Light = $true $Light = $true
} }
# Here's the solarized table...
#
# SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB
# --------- ------- ---- ------- ----------- ---------- ----------- -----------
$base03 = "#002b36" # 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
$base02 = "#073642" # 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
$base01 = "#586e75" # 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46
$base00 = "#657b83" # 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51
$base0 = "#839496" # 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
$base1 = "#93a1a1" # 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
$base2 = "#eee8d5" # 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93
$base3 = "#fdf6e3" # 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
$yellow = "#b58900" # 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
$orange = "#cb4b16" # 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
$red = "#dc322f" # 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
$magenta = "#d33682" # 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
$violet = "#6c71c4" # 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
$blue = "#268bd2" # 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
$cyan = "#2aa198" # 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
$green = "#859900" # 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
if ($Host.Name -eq "ConsoleHost") if ($Host.Name -eq "ConsoleHost")
{ {
Add-Type -AssemblyName System.Drawing
Add-ConsoleHelper
# Redefine the standard console colors to have the Solarized-Light # Redefine the standard console colors to have the Solarized-Light
# palette. # palette.
# #
@ -222,7 +222,5 @@ function Set-SolarizedColors([switch]$Light, [switch]$Dark)
$Host.UI.RawUI.BackgroundColor $Host.UI.RawUI.BackgroundColor
Clear-Host Clear-Host
} }
} }
Add-ConsoleHelper

View file

@ -1,23 +1,36 @@
# Make MSYS based things work correctly (most importantly, msysgit) # Check to see if we're interactive or not.... this is a dirty, dirty
# # hack.
$env:TERM='msys' $interactive = $true
$cmdLine = [System.Environment]::CommandLine
if ($cmdLine.Contains("powershell.exe") -and ($cmdLine.Contains(".ps1") -and !$cmdLine.Contains("-noexit")))
{
# We're running non-interactively, don't do any of this stuff.
$interactive = $false
}
# Load up the colors and set the dark solarized theme. if ($interactive)
# {
$profileDir = split-path -parent $Profile # Make MSYS based things work correctly (most importantly, msysgit)
Import-Module "$profileDir\Modules\ConsoleColors.psm1" #
Set-SolarizedColors -Dark $env:TERM='msys'
# Load up the colors and set the dark solarized theme.
#
$profileDir = split-path -parent $Profile
Import-Module "$profileDir\Modules\ConsoleColors.psm1"
# Set-SolarizedColors -Dark
# Ensure HOME is set properly # Ensure HOME is set properly
# #
$env:Home = [Environment]::GetFolderPath("Personal") $env:Home = [Environment]::GetFolderPath("Personal")
set-variable -name HOME -value (resolve-path $env:Home) -force set-variable -name HOME -value (resolve-path $env:Home) -force
(get-psprovider FileSystem).Home = $HOME (get-psprovider FileSystem).Home = $HOME
# Add the right things to the path # Add the right things to the path
# #
$env:Path = "$env:windir\Microsoft.NET\Framework64;" + $env:Path $env:Path = "$env:windir\Microsoft.NET\Framework64;" + $env:Path
$env:Path = "c:\debuggers;c:\tools\x86;c:\tools\x86\bin;c:\emacs\bin" + $env:Path $env:Path = "c:\debuggers;c:\tools\x86;c:\tools\x86\bin;c:\emacs\bin" + $env:Path
}
# Based on http://winterdom.com/2008/08/mypowershellprompt # Based on http://winterdom.com/2008/08/mypowershellprompt
function shorten-path([string] $path) function shorten-path([string] $path)
@ -30,10 +43,18 @@ function shorten-path([string] $path)
return ($loc -replace '\\(\.?)([^\\]{3})[^\\]*(?=\\)','\$1$2') return ($loc -replace '\\(\.?)([^\\]{3})[^\\]*(?=\\)','\$1$2')
} }
$global:SolarizedColors = $false
function prompt function prompt
{ {
$ok = $? $ok = $?
if (!$global:SolarizedColors)
{
Set-SolarizedColors -Dark
$global:SolarizedColors = $true
}
# Our "theme", as it were. Note that we assume the use of the # Our "theme", as it were. Note that we assume the use of the
# solarized colors. # solarized colors.
# #