No more per-repo coloring: this was not Arch-agnostic, and there is no reasonable, simple way to color repos in a consistant manner with only 6 colors. 'local' is in red: this way we benefit from the pacman -Ss && pacman -Qs combo. to_color subroutine: it takes an array instead of a string, this is faster and simpler. Signed-off-by: Pierre Neidhardt <ambrevar@gmail.com> --- contrib/pacsearch.in | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/contrib/pacsearch.in b/contrib/pacsearch.in index d03778e..180694b 100644 --- a/contrib/pacsearch.in +++ b/contrib/pacsearch.in @@ -69,21 +69,20 @@ $RESET = color('reset'); # localization my $LC_INSTALLED = `gettext pacman installed`; -# color a "repo/pkgname pkgver" line based on the repository name +# Color a "repo/pkgname pkgver (groups) [installed]" line. +# We try to stick to pacman colors. sub to_color { - my $line = shift; - # get the installed text colored first - $line =~ s/(\[.*\]$)/$CYAN$1$RESET/; - # and now the repo and dealings - $line =~ s/(^core\/.*)/$MAGENTA$1$RESET/; - $line =~ s/(^extra\/.*)/$MAGENTA$1$RESET/; - $line =~ s/(^community\/.*)/$MAGENTA$1$RESET/; - $line =~ s/(^testing\/.*)/$MAGENTA$1$RESET/; - $line =~ s/(^community-testing\/.*)/$MAGENTA$1$RESET/; - $line =~ s/(^multilib\/.*)/$MAGENTA$1$RESET/; - $line =~ s/(^local\/.*)/$RED$1$RESET/; - # any other unknown repository - $line =~ s/(^[\w-]*\/.*)/$RED$1$RESET/; + my @v = @_; + my $line = "$RESET$BOLD"; + if ( "$v[0]" eq "local" ) { + $line .= "$RED"; + } else { + $line .= "$MAGENTA"; + } + $line .= "$v[0]/$RESET$BOLD$v[1] $GREEN$v[2]"; + $line .= " $BLUE$v[3]" if $v[3] ne ""; + $line .= " $CYAN$v[4]" if $v[4] ne ""; + $line .= " $RESET"; return $line; } @@ -145,10 +144,7 @@ foreach $_ (@querypkgs) { # sort by original order (the last field) and print foreach $_ ( sort{ @{$allpkgs{$a}}[6] <=> @{$allpkgs{$b}}[6] } keys %allpkgs) { my @v = @{$allpkgs{$_}}; - my $line = "$v[0]/$v[1] $v[2]"; - $line .= " $v[3]" if $v[3] ne ""; - $line .= " $v[4]" if $v[4] ne ""; - $line = to_color($line); + my $line = to_color(@v); # print colorized "repo/pkgname pkgver ..." string with possible installed text print "$line\n"; print "$v[5]\n"; -- 1.8.5.3