All pastes #34598 Raw Edit

Mine

public text v1 · immutable
#34598 ·published 2005-12-22 12:34 UTC
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