#!/bin/sh ##################################################################### # cavemap - Generate papa's cave directory gophermap # Created 2010-08-31 by David Meyer +JMJ ##################################################################### # Identification #################################################### PROGRAM='cavemap' VERSION=0.0 COPYRIGHT='Copyright (C) 2010 David Meyer' DESCRIPTION="Generate papa's cave directory gophermap" USAGE="Usage: $PROGRAM [-fhV] [DIR]" CONTACT='David Meyer ' # Initialize environment ############################################ IFS=" " PATH=/bin:/usr/bin # Arguments ######################################################### while getopts fVho: option; do case $option in o ) OUTFILE=$OPTARG ;; f ) ADD_FORTUNE=1 ;; V ) echo "$PROGRAM $VERSION" echo $COPYRIGHT exit 0 ;; h ) cat << ENDHELP $USAGE $DESCRIPTION Options are as follows: -f Append random fortune at end of gophermap -V Display version number -h Display this help message Report bugs to $CONTACT. ENDHELP exit 0 ;; * ) echo $USAGE >&2 exit 1 ;; esac done shift $(( $OPTIND-1 )) DIR=${1:-.} : ${OUTFILE:=$DIR/gophermap} # Functions ######################################################### ftitle() { bn=$(basename $1) case $bn in *.txt | *.org ) title=$(head -n 1 $1) ;; *.html | *.htm ) title=$(grep -i "\" $1 | sed -e "s;;;g") ;; * ) title=$bn ;; esac echo $title } # Main driver ####################################################### owd=$PWD cd $DIR if [ -f $OUTFILE ]; then mv OUTFILE OUTFILE~ fi if [ -f $DIR/.title ]; then cat $DIR/.title >>$OUTFILE fi if [ -f $DIR/.description ]; then echo "" >>$OUTFILE cat $DIR/.description >>$OUTFILE fi echo "" >>$OUTFILE #generate gm entries for fles # 20100830 jdm BusyBox find (on Zaurus) doesn't support ! (NOT) expression, so use grep -v to filter out gophermap files for portability. #ls -lt $(find . -type f -name "[^\.]*" -name "*[^~]" \! -name gophermap) | head -n $NUM |\ show_files=$(find . -type f -name "[^\.]*" -name "*[^~]" | grep -v "^gophermap$") ls -lt $show_files | head -n $NUM |\ while read p lc o g s dt1 dt2 dt3 fn; do ft=$(ftitle $fn) loc=$(basename $(dirname $fn)) echo "0$dt1 $dt2 $dt3 $ft [$loc] $SEL${fn#*/}" done if [ -f $FOOTF ]; then cat $FOOTF fi if [ -n "$ADD_FORTUNE" -a -x $FORTUNE_PGM ]; then echo "" echo "FORTUNE" $FORTUNE_PGM fi echo "Phlog map written to $OUTFILE" cd $owd exit 0