summaryrefslogtreecommitdiffstats
path: root/contrib/pacsearch.in
diff options
context:
space:
mode:
authorPierre Neidhardt <ambrevar@gmail.com>2014-01-23 00:07:06 +0100
committerAllan McRae <allan@archlinux.org>2014-02-02 07:12:29 +0100
commit15f4144e12c48283bdcfef50fec64b4040b0000a (patch)
tree33595fc6eefeb77c00dba5c97317b8478a285512 /contrib/pacsearch.in
parent135d862eb6e3051e351888b08c94529c967c5387 (diff)
downloadpacman-15f4144e12c48283bdcfef50fec64b4040b0000a.tar.gz
pacman-15f4144e12c48283bdcfef50fec64b4040b0000a.tar.xz
pacsearch: Explicitly extract group information
Also store pkgname and pkgver separately. Signed-off-by: Pierre Neidhardt <ambrevar@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'contrib/pacsearch.in')
-rw-r--r--contrib/pacsearch.in34
1 files changed, 19 insertions, 15 deletions
diff --git a/contrib/pacsearch.in b/contrib/pacsearch.in
index 69c7c0fe..57901ee7 100644
--- a/contrib/pacsearch.in
+++ b/contrib/pacsearch.in
@@ -99,16 +99,17 @@ if ($#syncpkgs >= 0) {
# 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;
+ # we grab the following fields: repo, name, ver, group, installed, and desc
+ my @pkgfields = /^(.*?)\/(.*?) (.*?) ?(\(.*?\))? ?(\[.*\])?\n(.*)$/s;
if(not @pkgfields) {
# skip any non-matching line and just print it for the user
print $_, "\n";
next;
}
- # 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
+ # since 'group' and 'installed' are optional, we should fill it in if necessary
+ $pkgfields[3] = "" if not defined $pkgfields[3];
+ $pkgfields[4] = "" if not defined $pkgfields[4];
+ # add a last 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 ];
@@ -123,30 +124,33 @@ if ($#querypkgs >= 0) {
}
foreach $_ (@querypkgs) {
- # we grab 4 fields here: repo, name/ver, installed, and desc
- my @pkgfields = /^(.*?)\/(.*?) ?(\[.*\])?\n(.*)$/s;
+ # we grab the following fields: repo, name, ver, group, installed, and desc
+ my @pkgfields = /^(.*?)\/(.*?) (.*?) ?(\(.*?\))? ?(\[.*\])?\n(.*)$/s;
+ # my @pkgfields = /^(.*?)\/(.*?) ?(\[.*\])?\n(.*)$/s;
# skip any non-matching line
next if not defined $pkgfields[1];
- # 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] = "[$LC_INSTALLED]";
- # add a fifth field that indicates original order (after sync)
+ # since 'group' is optional, we should fill it in if necessary
+ $pkgfields[3] = "" if not defined $pkgfields[3];
+ $pkgfields[4] = "[$LC_INSTALLED]";
+ # add a last 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) {
+# 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);
- # print colorized "repo/pkgname pkgver" string with possible installed text
+ # print colorized "repo/pkgname pkgver ..." string with possible installed text
print "$line\n";
- print "$v[3]\n";
+ print "$v[5]\n";
}
#vim: set noet: