Files
2013-09-26 17:14:40 +02:00

121 lines
3.5 KiB
Bash

#!/bin/sh
logger -t pk-pkgsrc-backend "DEBUG: args=$*"
MACHINE_ARCH=$(uname -m)
#SUMMARY=/tmp/pkg_summary
mapcategory()
{
# default
CATEGORY=unknown
case $1 in
# base pkgsrc categories
archivers) CATEGORY=other ;;
audio) CATEGORY=multimedia ;;
benchmarks) CATEGORY=other ;;
biology) CATEGORY=other ;;
bootstrap) CATEGORY=system ;;
cad) CATEGORY=graphics ;;
chat) CATEGORY=communication ;;
comms) CATEGORY=communication ;;
converters) CATEGORY=other ;;
cross) CATEGORY=programming ;;
databases) CATEGORY=programming ;;
devel) CATEGORY=programming ;;
editors) CATEGORY=accessories ;;
emulators) CATEGORY=virtualization ;;
filesystems) CATEGORY=system ;;
finance) CATEGORY=office ;;
fonts) CATEGORY=fonts ;;
games) CATEGORY=games ;;
geography) CATEGORY=maps ;;
graphics) CATEGORY=graphics ;;
ham) CATEGORY=communication ;;
inputmethod) CATEGORY=localization ;;
lang) CATEGORY=programming ;;
mail) CATEGORY=internet ;;
math) CATEGORY=education ;;
mbone) CATEGORY=internet ;;
meta-pkgs) CATEGORY=other ;;
misc) CATEGORY=other ;;
multimedia) CATEGORY=multimedia ;;
net) CATEGORY=internet ;;
news) CATEGORY=internet ;;
parallel) CATEGORY=other ;;
pkgtools) CATEGORY=system ;;
print) CATEGORY=publishing ;;
regress) CATEGORY=other ;;
security) CATEGORY=system ;;
shells) CATEGORY=system ;;
sysutils) CATEGORY=system ;;
textproc) CATEGORY=other ;;
time) CATEGORY=accessories ;;
wm) CATEGORY=desktop-other ;;
www) CATEGORY=internet ;;
x11) CATEGORY=system ;;
# special categories
gnome) CATEGORY=desktop-gnome ;;
kde) CATEGORY=desktop-kde ;;
esac
}
case "$1" in
get-packages)
echo -e "status\tquery"
/usr/sbin/pkg_info | sed -e "s/-\([^-]* \)/ \1/" | while read pkgname pkgver pkgdescr; do
echo -e "package\tinstalled\t${pkgname};${pkgver};${MACHINE_ARCH};pkgsrc\t${pkgdescr}"
done
#test -f $SUMMARY && egrep '^PKGNAME=|^COMMENT=' $SUMMARY | cut -d = -f 2- | while read PKGNAME; do
# read pkgdescr
# echo "$PKGNAME " | sed -e "s/-\([^-]* \)/ \1/" | while read pkgname pkgver; do
# echo -e "package\tavailable\t${pkgname};${pkgver};${MACHINE_ARCH};pkgsrc\t${pkgdescr}"
# done
#done
echo -e "finished"
;;
resolve)
echo -e "status\tquery"
PKGNAME="$(/usr/sbin/pkg_info -E $3)"
COMMENT="$(/usr/sbin/pkg_info -qc $3)"
echo "${PKGNAME} " | sed -e "s/-\([^-]* \)/ \1/" | while read pkgname pkgver; do
echo -e "package\tinstalled\t${pkgname};${pkgver};${MACHINE_ARCH};pkgsrc\t${COMMENT}"
done
echo -e "finished"
;;
get-details)
echo -e "status\tquery"
echo ${2} | sed 's/;/ /g' | while read pkgname pkgver march data; do
DESCR="$(/usr/sbin/pkg_info -qd $pkgname | tr '\n' ' ')"
HOMEPAGE="$(/usr/sbin/pkg_info -Q HOMEPAGE $pkgname)"
BYTES="$(/usr/sbin/pkg_info -qs $pkgname)"
LICENSE="$(/usr/sbin/pkg_info -Q LICENSE $pkgname)"
test -z "$LICENSE" && LICENSE="N/A"
mapcategory "$(/usr/sbin/pkg_info -Q CATEGORIES ${pkgname} | awk '{ print $1; }')"
echo -e "details\t${2}\t${LICENSE}\t${CATEGORY}\t${DESCR}\t${HOMEPAGE}\t${BYTES}"
done
echo -e "finished"
;;
search-group)
echo -e "status\tquery"
/usr/sbin/pkg_info | sed -e "s/-\([^-]* \)/ \1/" | while read pkgname pkgver pkgdescr; do
CATEGORIES="$(/usr/sbin/pkg_info -Q CATEGORIES ${pkgname})"
for cat in $CATEGORIES; do
mapcategory $cat
if [ "$CATEGORY" = "$3" ]; then
echo -e "package\tinstalled\t${pkgname};${pkgver};${MACHINE_ARCH};pkgsrc\t${pkgdescr}"
fi
done
done
echo -e "finished"
;;
*)
logger -t pk-pkgsrc-backend "invalid command $1"
exit 1
;;
esac
logger -t pk-pkgsrc-backend "returning"
exit 0