diff --git a/README.md b/README.md index 5bd0b20..11157f0 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ PSColor ======= Provides color highlighting for some basic PowerShell output. It currently rewrites "Out-Default" to colorize: + * FileInfo & DirectoryInfo objects (Get-ChildItem, dir, ls etc.) * ServiceController objects (Get-Service) * MatchInfo objects (Select-String etc.) @@ -21,18 +22,19 @@ You can configure PSColor by overriding the values of colors, patterns etc. Conf ```powershell $global:PSColor = @{ File = @{ - Default = @{ Color = 'White' } - Directory = @{ Color = 'Cyan'} - Hidden = @{ Color = 'DarkGray'; Pattern = '^\.' } - Code = @{ Color = 'Magenta'; Pattern = '\.(java|c|cpp|cs|js|css|html)$' } - Executable = @{ Color = 'Red'; Pattern = '\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$' } - Text = @{ Color = 'Yellow'; Pattern = '\.(txt|cfg|conf|ini|csv|log|config|xml|yml|md|markdown)$' } - Compressed = @{ Color = 'Green'; Pattern = '\.(zip|tar|gz|rar|jar|war)$' } + Default = @{ Color = 'White' } + Directory = @{ Color = 'Cyan'} + DirectoryHidden = @{ Color = 'DarkCyan'} + Hidden = @{ Color = 'DarkGray'; Pattern = '^\.' } + Code = @{ Color = 'Magenta'; Pattern = '\.(java|c|cpp|cs|js|css|html)$' } + Executable = @{ Color = 'Red'; Pattern = '\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$' } + Text = @{ Color = 'Yellow'; Pattern = '\.(txt|cfg|conf|ini|csv|log|config|xml|yml|md|markdown)$' } + Compressed = @{ Color = 'Green'; Pattern = '\.(zip|tar|gz|rar|jar|war|7z)$' } } Service = @{ Default = @{ Color = 'White' } Running = @{ Color = 'DarkGreen' } - Stopped = @{ Color = 'DarkRed' } + Stopped = @{ Color = 'DarkRed' } } Match = @{ Default = @{ Color = 'White' } @@ -40,7 +42,7 @@ $global:PSColor = @{ LineNumber = @{ Color = 'Yellow' } Line = @{ Color = 'White' } } - NoMatch = @{ + NoMatch = @{ Default = @{ Color = 'White' } Path = @{ Color = 'Cyan'} LineNumber = @{ Color = 'Yellow' } diff --git a/src/FileInfo.ps1 b/src/FileInfo.ps1 index 73053c0..8bc8cb1 100644 --- a/src/FileInfo.ps1 +++ b/src/FileInfo.ps1 @@ -4,7 +4,7 @@ function Write-FileLength { param ($length) - if ($length -eq $null) + if ($null -eq $length) { return "" } @@ -30,7 +30,7 @@ function Write-Color-LS param ([string]$color = "white", $file) $length = if ($file -is [System.IO.DirectoryInfo]) { $null } else { $file.length } - Write-host ("{0,-7} {1,25} {2,10} {3}" -f $file.mode, ([String]::Format("{0,10} {1,8}", $file.LastWriteTime.ToString("d"), $file.LastWriteTime.ToString("t"))), (Write-FileLength $length), $file.name) -foregroundcolor $color + Write-Host ("{0,-7} {1,25} {2,10} {3}" -f $file.mode, ([String]::Format("{0,10} {1,8}", $file.LastWriteTime.ToString("d"), $file.LastWriteTime.ToString("t"))), (Write-FileLength $length), $file.name) -foregroundcolor $color } function FileInfo { @@ -40,7 +40,7 @@ function FileInfo { ) $regex_opts = ([System.Text.RegularExpressions.RegexOptions]::IgnoreCase) - + $hidden = New-Object System.Text.RegularExpressions.Regex( $global:PSColor.File.Hidden.Pattern, $regex_opts) $code = New-Object System.Text.RegularExpressions.Regex( @@ -55,7 +55,8 @@ function FileInfo { if ($file -is [System.IO.DirectoryInfo]) { $currentdir = $file.Parent.FullName - } else + } + else { $currentdir = $file.DirectoryName } @@ -63,19 +64,26 @@ function FileInfo { { $script:directory = $currentdir Write-Host - Write-Host " Directory: " -noNewLine + Write-Host " Directory: " -noNewLine Write-Host " $currentdir`n" -foregroundcolor "Green" Write-Host "Mode LastWriteTime Length Name" Write-Host "---- ------------- ------ ----" } - if ($hidden.IsMatch($file.Name)) + if ($file -is [System.IO.DirectoryInfo]) { - Write-Color-LS $global:PSColor.File.Hidden.Color $file + if ($hidden.IsMatch($file.Name)) + { + Write-Color-LS $global:PSColor.File.DirectoryHidden.Color $file + } + else + { + Write-Color-LS $global:PSColor.File.Directory.Color $file + } } - elseif ($file -is [System.IO.DirectoryInfo]) + elseif ($hidden.IsMatch($file.Name)) { - Write-Color-LS $global:PSColor.File.Directory.Color $file + Write-Color-LS $global:PSColor.File.Hidden.Color $file } elseif ($code.IsMatch($file.Name)) { diff --git a/src/PSColor.psm1 b/src/PSColor.psm1 index aa7595c..2c46a12 100644 --- a/src/PSColor.psm1 +++ b/src/PSColor.psm1 @@ -1,4 +1,3 @@ - Add-Type -assemblyname System.ServiceProcess . "$PSScriptRoot\PSColorHelper.ps1" @@ -7,22 +6,21 @@ Add-Type -assemblyname System.ServiceProcess . "$PSScriptRoot\MatchInfo.ps1" . "$PSScriptRoot\ProcessInfo.ps1" - - $global:PSColor = @{ File = @{ - Default = @{ Color = 'White' } - Directory = @{ Color = 'Cyan'} - Hidden = @{ Color = 'DarkGray'; Pattern = '^\.' } - Code = @{ Color = 'Magenta'; Pattern = '\.(java|c|cpp|cs|js|css|html)$' } - Executable = @{ Color = 'Red'; Pattern = '\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$' } - Text = @{ Color = 'Yellow'; Pattern = '\.(txt|cfg|conf|ini|csv|log|config|xml|yml|md|markdown)$' } - Compressed = @{ Color = 'Green'; Pattern = '\.(zip|tar|gz|rar|jar|war|7z)$' } + Default = @{ Color = 'White' } + Directory = @{ Color = 'Cyan'} + DirectoryHidden = @{ Color = 'DarkCyan'} + Hidden = @{ Color = 'DarkGray'; Pattern = '^\.' } + Code = @{ Color = 'Magenta'; Pattern = '\.(java|c|cpp|cs|js|css|html)$' } + Executable = @{ Color = 'Red'; Pattern = '\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$' } + Text = @{ Color = 'Yellow'; Pattern = '\.(txt|cfg|conf|ini|csv|log|config|xml|yml|md|markdown)$' } + Compressed = @{ Color = 'Green'; Pattern = '\.(zip|tar|gz|rar|jar|war|7z)$' } } Service = @{ Default = @{ Color = 'White' } Running = @{ Color = 'DarkGreen' } - Stopped = @{ Color = 'DarkRed' } + Stopped = @{ Color = 'DarkRed' } } Match = @{ Default = @{ Color = 'White' } @@ -30,7 +28,7 @@ $global:PSColor = @{ LineNumber = @{ Color = 'Yellow' } Line = @{ Color = 'White' } } - NoMatch = @{ + NoMatch = @{ Default = @{ Color = 'White' } Path = @{ Color = 'Cyan'} LineNumber = @{ Color = 'Yellow' } @@ -64,4 +62,4 @@ New-CommandWrapper Out-Default -Process { $script:showHeader=$true } -Export-ModuleMember \ No newline at end of file +Export-ModuleMember