#!/bin/bash
# upkg-search
#
# search packages and package contents
#
# Copyright (C) 2004 Raffaele Sandrini, Jürg Billeter
#
# This file is part of Upkg (http://www.upkg.org).
#
# Upkg is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# Upkg 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 Upkg; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# Authors:
#   Raffaele Sandrini <rasa at paldo dot org>
#   Jürg Billeter <juerg at paldo dot org>

[ $# -eq 1 ] || { echo "Usage: $0 SEARCHTERM" ; exit 1 ; }

function upkggrep ()
{
	PATTERN="$1"
	shift

	for f in "$@"; do
		if [ -e "$f.zst" ]; then
			zstdgrep "$PATTERN" "$f.zst"
		elif [ -e "$f.xz" ]; then
			xzgrep "$PATTERN" "$f.xz"
		elif [ -e "$f.bz2" ]; then
			bzgrep "$PATTERN" "$f.bz2"
		elif [ -e "$f.gz" ]; then
			zgrep "$PATTERN" "$f.gz"
		elif [ -e "$f" ]; then
			grep "$PATTERN" "$f"
		fi
	done
}

for package in /var/lib/upkg/packages/*.info ; do
	name=$(basename ${package/.info/})
	upkggrep $1 /var/lib/upkg/files/$name.{digest,links,config} 2>/dev/null | sed -e 's/  / /' | cut -d ' ' -f 2 | sort | (
		FIRST=1
		while read file ; do
			[ "$FIRST" = "0" ] || echo -e "$name\n----"
			FIRST=0
			echo $file
		done
		[ "$FIRST" = "1" ] || echo
	)
done
