#!/bin/sh # look at installed packages (NetBSD) # and build a datafile to generate menus # (c) 2001 Jeremy C. Reed # started 08/Jan/2000 FILELIST=filelist PKG_DB_DIR=/var/db/pkg PKGSRC_DIR=/usr/pkgsrc PKG_MAN_DIR=/usr/pkg/man PACKAGES=packages TMPFILE=tmpfile MENUFILE=menufile cp /dev/null $TMPFILE ## start clean cp /dev/null $MENUFILE ## start clean find $PKG_DB_DIR -type d -print | sed -e 's/^\.\///g' > $FILELIST for package in `cat $FILELIST`; do head -1 $package/+BUILD_VERSION | sed -e 's/\/Makefile.*//' >> $TMPFILE done grep -v 'pkgsrc' <$TMPFILE | sort >$PACKAGES for package in `cat $PACKAGES`; do EXECUTABLES=`grep '^bin' $PKGSRC_DIR/$package/pkg/PLIST | sed -e 's/bin\///'` if [ -n "$EXECUTABLES" ]; then PACKAGE_DESC=`cat $PKGSRC_DIR/$package/pkg/COMMENT` # maybe should check for no description? ( echo $package ; echo $PACKAGE_DESC ) >> $MENUFILE packagename=`echo $package | sed -e 's/^.*\///'` for executable in $EXECUTABLES; do unset DESC # get descriptions from manual pages if [ -f $PKG_MAN_DIR/man1/$executable.1 ]; then DESC=`grep -A 1 '.S[Hh] NAME' $PKG_MAN_DIR/man1/$executable.1 | \ grep "$executable " | sed -e 's/^.* \\\- //'` fi if [ -f $PKG_MAN_DIR/man8/$executable.8 ]; then DESC=`grep -A 1 '.S[Hh] NAME' $PKG_MAN_DIR/man8/$executable.8 | \ grep "$executable " | sed -e 's/^.* \\\- //'` fi if [ -z "$DESC" -a $packagename = $executable ]; then DESC=$PACKAGE_DESC fi echo $executable $DESC >> $MENUFILE # echo >> $MENUFILE done echo >> $MENUFILE fi done