121 lines
3.5 KiB
Bash
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
|