diff options
Diffstat (limited to 'contrib/pacsearch')
| -rwxr-xr-x | contrib/pacsearch | 130 | 
1 files changed, 0 insertions, 130 deletions
diff --git a/contrib/pacsearch b/contrib/pacsearch deleted file mode 100755 index a20df265..00000000 --- a/contrib/pacsearch +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/perl -# pacsearch - Adds color and install information to a 'pacman -Ss' search -# -# Copyright (C) 2008, 2010 Dan McGee <dpmcgee@gmail.com> -# -# Based off original shell script version: -# Copyright (C) 2006-2007 Dan McGee <dpmcgee@gmail.com> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. - -#TODO: colors flag on commandline - -use strict; -use warnings; - -my $progname = "pacsearch"; -my $version = "2.0"; - -if ($#ARGV lt 0 || $ARGV[0] eq "--help" || $ARGV[0] eq "-h") { -	print "$progname - Add color and install information to a pacman -Ss search\n"; -	print "Usage:   $progname <pattern>\n"; -	print "Example: $progname ^gnome\n"; -	if ($#ARGV lt 0) { -		exit 1; -	} -	exit 0; -} - -if ($ARGV[0] eq "--version" || $ARGV[0] eq "-v") { -	print "$progname version $version\n"; -	print "Copyright (C) 2006-2010 Dan McGee\n"; -	exit 0; -} - -# define our colors to use when printing -my $CLR1 = "\e[0;34m"; -my $CLR2 = "\e[0;32m"; -my $CLR3 = "\e[0;35m"; -my $CLR4 = "\e[0;36m"; -my $CLR5 = "\e[0;31m"; -my $CLR6 = "\e[0;33m"; -my $CLR7 = "\e[1;36m"; -my $INST = "\e[1;31m"; -my $BASE = "\e[0m"; - -# color a "repo/pkgname pkgver" line based on the repository name -sub to_color { -	my $line = shift; -	# get the installed text colored first -	$line =~ s/(\[.*\]$)/$INST$1$BASE/; -	# and now the repo and dealings -	$line =~ s/(^core\/.*)/$CLR1$1$BASE/; -	$line =~ s/(^extra\/.*)/$CLR2$1$BASE/; -	$line =~ s/(^community\/.*)/$CLR3$1$BASE/; -	$line =~ s/(^testing\/.*)/$CLR4$1$BASE/; -	$line =~ s/(^community-testing\/.*)/$CLR5$1$BASE/; -	$line =~ s/(^local\/.*)/$CLR7$1$BASE/; -	# any other unknown repository -	$line =~ s/(^[\w-]*\/.*)/$CLR6$1$BASE/; -	return $line; -} - -my %allpkgs = (); - -my $syncout = `pacman -Ss '@ARGV'`; -# split each sync search entry into its own array entry -my @syncpkgs = split(/\n^(?=\w)/m, $syncout); -# remove the extra \n from the last desc entry -if ($#syncpkgs >= 0) { -	chomp($syncpkgs[$#syncpkgs]); -} - -# counter var for packages, used here and in the query loop too -my $cnt = 0; -foreach $_ (@syncpkgs) { -	# we grab 4 fields here: repo, name/ver, installed, and desc -	my @pkgfields = /^(.*?)\/(.*?) ?(\[.*\])?\n(.*)$/s; -	# since installed is optional, we should fill it in if necessary -	$pkgfields[2] = "" if not defined $pkgfields[2]; -	# add a fifth field that indicates original order -	push (@pkgfields, $cnt++); -	# add each sync pkg by name/ver to a hash table for quick lookup -	$allpkgs{$pkgfields[1]} = [ @pkgfields ]; -} - -my $queryout = `pacman -Qs '@ARGV'`; -# split each querysearch entry into its own array entry -my @querypkgs = split(/\n^(?=\w)/m, $queryout); -# remove the extra \n from the last desc entry -if ($#querypkgs >= 0) { -	chomp ($querypkgs[$#querypkgs]); -} - -foreach $_ (@querypkgs) { -	# we grab 4 fields here: repo, name/ver, installed, and desc -	my @pkgfields = /^(.*?)\/(.*?) ?(\[.*\])?\n(.*)$/s; -	# since installed is optional, we should fill it in if necessary -	$pkgfields[2] = "" if not defined $pkgfields[2]; -	# check if the package was listed in the sync out -	if (not exists $allpkgs{$pkgfields[1]}) { -		$pkgfields[2] = "[installed]"; -		# add a fifth field that indicates original order (after sync) -		push (@pkgfields, $cnt++); -		# add our local-only package to the hash -		$allpkgs{$pkgfields[1]} = [ @pkgfields ]; -	} -} - -# sort by original order (the fifth field) and print -foreach $_ ( sort{ @{$allpkgs{$a}}[4] <=> @{$allpkgs{$b}}[4] } keys %allpkgs) { -	my @v = @{$allpkgs{$_}}; -	my $line = "$v[0]/$v[1] $v[2]"; -	$line = to_color($line); -	# print colorized "repo/pkgname pkgver" string with possible installed text -	print "$line\n"; -	print "$v[3]\n"; -} - -#vim: set noet:  | 
