On Thu, May 8, 2008 at 9:36 AM, Allan McRae <[EMAIL PROTECTED]> wrote: > Hi, > > I attach a script tentatively called "repopkg" that lists all packages > installed from a given repo. I find this useful for monitoring what I have > installed from [testing]. It is not entirely fool proof as it assumes you > have installed packages using "pacman -S pkg" and not "pacman -S repo/pkg". Handy little script.
> A couple of queries. Can someone come up with a better name which is not too > long? And any comments before I submit the for inclusion in the contrib > directory (it is best to come as a git patch right?). Yeah, that would be great, so you can add a bit of a description in the commit message. > Cheers, > Allan > > #!/bin/bash > # repopkg - List all packages installed from a given repo > # > # Copyright (C) 2008 Allan McRae <[EMAIL PROTECTED]> > # > # 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: Could match version numbers to catch packages > # install with pacman -S repo/pkg Did you take a look at my pacsearch script? That does some sort of intelligent matching of package versions. > > > readonly progname="repopkg" > readonly version="1.0" > > if [ -z "$1" -o "$1" = "--help" -o "$1" = "-h" ]; then > echo "Usage: $progname <repo>" > echo "Ex: $progname testing" Just spell out "Example"? We can afford a few more bytes. :) > exit 0 > fi > > if [ "$1" = "--version" -o "$1" = "-v" ]; then > echo "$progname version $version" > echo "Copyright (C) 2008 Allan McRae" > exit 0 > fi > > pkglist=$(mktemp) > pacman -Sl > $pkglist > > for pkg in $(pacman -Qq); do > match=$(grep -m1 " $pkg " $pkglist | grep "^$1") Not exactly cheap as you have to do two grep calls for every package you list. Perhaps cmp or diff could be used? And now for the real off-the-wall suggestion- doing this in perl would give you the power of regular expressions and probably make this all real easy. That is if you can figure out perl. > if [ -n "${match}" ]; then > echo $pkg > fi > done > > rm $pkglist _______________________________________________ pacman-dev mailing list pacman-dev@archlinux.org http://archlinux.org/mailman/listinfo/pacman-dev