rendered paste body#!/bin/sh
# from http://dev.gentoo.org/~solar/portage_misc/gen-portage-menu.sh.txt
# modified by joe@neoturbine.net to add -a option and sudo
OUTFILE=~/.fluxbox/portage_menu
#modified so it would fit on one screen nmapes1@lsu.edu
source /etc/make.conf
source /sbin/functions.sh
if [ -e ${OUTFILE}.lock ]; then
ewarn "Refusing to load another session for $$"
exit 0
fi
touch ${OUTFILE}.lock
echo $$ > ${OUTFILE}.lock
[ -e "$PORTDIR" ] || PORTDIR=/usr/portage
cd ${PORTDIR}
TOTAL=0
echo \[begin\] \(Portage @TOTAL@\) > $OUTFILE
echo \[submenu\] \(Portage @TOTAL@\) >> $OUTFILE
find ${PORTDIR} -name '*[a-z]-[a-z]*' -type d -maxdepth 1 | while read line; do
# [ -f /usr/bin/beep ] && beep -n 1 -r 1
pushd $line > /dev/null
count=$(find . -type d -maxdepth 1 | cut -c 3- | grep -v ^CVS$ | grep -v ^$ |wc -l | awk '{print $1}')
category=$(basename $line)
# [ -w /dev/speech ] && echo $category > /dev/speech &
#counter
i=0;
if (( $lock )); then
echo unlocked
echo -ne '\t' >> $OUTFILE
echo \[end\] >> $OUTFILE
lock=0
fi
echo -ne '\t' >> $OUTFILE
echo \[submenu\] \(${category}\) \{$count packages\} >> $OUTFILE
while read dname ; do
echo -ne '\t\t' >> $OUTFILE
#/usr/lib/portage/bin/portageq has_version / $category/$dname
ret=$?
#if [ "$ret" == 0 ] ; then
# vname=$(basename $(/usr/lib/portage/bin/portageq best_version / $category/$dname))
#else
vname=$dname
#fi
let ++i;
if (( i!=0 && i % 100 && i % 50 == 0 )); then
echo -ne '\t' >> $OUTFILE
echo \[submenu\] \(more\) {} >> $OUTFILE
echo locking
lock=1
fi
if (( i!=0 && i % 100 == 0 )); then
echo -ne '\t' >> $OUTFILE
echo \[end\] >> $OUTFILE
echo unlocking
lock=0
fi
echo \[exec\] \($vname\) \{ xterm -rv -e \"emerge -va $category/$dname \; bash --login\" \} >> $OUTFILE
let ++TOTAL
done < <(find . -type d -maxdepth 1 | cut -c 3- | grep -v ^CVS$ | grep -v ^$)
echo -ne '\t' >> $OUTFILE
echo \[end\] >> $OUTFILE
popd $line > /dev/null
done
echo \[end\] >> $OUTFILE
echo \[end\] >> $OUTFILE
sed -e "s:@TOTAL@:${TOTAL}:g" < $OUTFILE > $OUTFILE~ && cp $OUTFILE~ $OUTFILE
[ -f /usr/bin/beep ] && beep -n 1 -r 5
rm ${OUTFILE}.lock