#!/usr/bin/perl -w # --- # Description: aptitude(1) color wrapper # Author: Philipp Winter # Contact: pwr@7c0.org (0x97F93470) # License: GPLv3 # # $Id: aptwrap.pl 4 2008-08-23 12:41:41Z pwr $ use strict; my $buf; my %clr = ( 'blk' => "\033[0;30m", 'gry' => "\033[1;30m", 'red' => "\033[0;31m", 'grn' => "\033[0;32m", 'ylw' => "\033[0;33m", 'blu' => "\033[0;34m", 'pnk' => "\033[0;35m", 'trk' => "\033[0;36m", 'rst' => "\033[0;m" ); select((select(STDOUT), $| = 1)[0]); if ($ARGV[0] eq 'show') { while () { $_ =~ s/^(Package:\s)(.*)$/$clr{'ylw'}\033[45m$1$2$clr{'rst'}/; $_ =~ s/^(.*)(\snot installed)$/$1$clr{'red'}$2$clr{'rst'}/; $_ =~ s/^(.*)(\sinstalled)$/$1$clr{'grn'}$2$clr{'rst'}/; if (m/^Description:/) { $_ =~ s/^([A-Z][\w\s]+:)(.*)$/$clr{'gry'}$1$clr{'grn'}$2$clr{'rst'}/; } elsif (m/^Depends:/) { $_ =~ s/^([A-Z][\w\s]+:)(.*)$/$clr{'gry'}$1$clr{'trk'}$2/; } elsif (m/^Tags:/) { $_ =~ s/^(Tags:\s)(.*)$/$clr{'gry'}$1$clr{'pnk'}$2/; } elsif (m/^[A-Z][\w\s]+:/) { $_ =~ s/^([A-Z][\w\s]+:)(.*)$/$clr{'gry'}$1$clr{'ylw'}$2/; } print $_; } } elsif ($ARGV[0] eq 'search') { while () { $_ =~ s/^(\w.{3})([^\s]+\s+)(.*)$/$1$clr{'pnk'}$2$clr{'ylw'}$3$clr{'rst'}/; $_ =~ s/^i(.*)$/$clr{'grn'}i$1/; # installed $_ =~ s/^p(.*)$/$clr{'gry'}p$1/; # no trace $_ =~ s/^c(.*)$/$clr{'blu'}c$1/; # configs present $_ =~ s/^v(.*)$/$clr{'red'}v$1/; # virtual print $_; } } elsif ($ARGV[0] eq 'update') { while () { if (m/^Reading/ || m/^Fetched/) { $_ =~ s/^(.*)$/$clr{'pnk'}$1$clr{'rst'}/; print $_ and next; } $_ =~ s/^([^\s]+\s)([^\s]+\s)(.*)?$/$clr{'grn'}$1$clr{'trk'}$2$clr{'rst'}$3/; print $_; } } else { while (read(STDIN, $buf, 1)) { syswrite(STDOUT, $buf, 1); } }