#!/bin/sh # build_menu 0.02 # look at installed packages (NetBSD) # and build a datafile to generate menus # (c) 2001 Jeremy C. Reed # started 08/Jan/2000 PKG_DB_DIR=/var/db/pkg PKGSRC_DIR=/usr/pkgsrc PKG_MAN_DIR=/usr/pkg/man TMPDIR=/tmp/build_menu.$$ if ! mkdir $TMPDIR; then echo can not create $TMPDIR. exit 1 fi trap '/bin/rm -rf $TMPDIR ; exit 0' 0 2 3 PACKAGES=$TMPDIR/packages.$$ FILELIST=$TMPDIR/filelist.$$ find $PKG_DB_DIR -type d -print | sed -e 's/^\.\///g' > $FILELIST for package in `cat $FILELIST`; do if [ -f "$package/+BUILD_VERSION" ]; then head -1 $package/+BUILD_VERSION | sed -e 's/\/Makefile.*//' >> $PACKAGES fi done for package in `grep -v 'pkgsrc' $PACKAGES | sort`; do unset EXECUTABLES if [ -f "$PKGSRC_DIR/$package/pkg/PLIST" ]; then EXECUTABLES=`grep '^bin' "$PKGSRC_DIR/$package/pkg/PLIST" | \ sed -e 's/bin\///'` fi if [ -n "$EXECUTABLES" ]; then unset PACKAGE_DESC if [ -f "$PKGSRC_DIR/$package/pkg/COMMENT" ]; then PACKAGE_DESC=`cat $PKGSRC_DIR/$package/pkg/COMMENT` fi echo $package echo $PACKAGE_DESC 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 done echo fi done