Home | History | Annotate | Line # | Download | only in sets
makeplist revision 1.13
      1 #!/bin/sh
      2 #
      3 # Print out the files in some or all lists.
      4 # Usage: makeplist [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
      5 #
      6 
      7 . ./sets.subr
      8 prefix=/
      9 
     10 usage()
     11 {
     12 	cat 1>&2 <<USAGE
     13 Usage: ${0##*/} [-a arch] [-m machine] [-s setsdir] [-p prefix] setname pkgname
     14 	-a arch		set arch (e.g, m68k, mips, powerpc)	[$MACHINE_ARCH]
     15 	-m machine	set machine (e.g, amiga, i386, macppc)	[$MACHINE]
     16 	-s setsdir	directory to find sets			[$setsdir]
     17 	-p prefix	prefix for created plist		[$prefix]
     18 	setname pkgname	set and package to build plist for
     19 USAGE
     20 	exit 1
     21 }
     22 
     23 # handle args
     24 while getopts a:m:ps: ch; do
     25 	case ${ch} in
     26 	a)
     27 		MACHINE_ARCH=${OPTARG}
     28 		MACHINE_CPU=$(arch_to_cpu ${OPTARG})
     29 		;;
     30 	m)
     31 		MACHINE=${OPTARG}
     32 		;;
     33 	p)
     34 		prefix=${OPTARG}
     35 		;;
     36 	s)
     37 		setsdir=${OPTARG}
     38 		;;
     39 	*)
     40 		usage
     41 		;;
     42 	esac
     43 done
     44 shift $((${OPTIND} - 1))
     45 if [ $# -ne 2 ]; then
     46 	usage
     47 fi
     48 setname="$1"
     49 pkgname=$2
     50 
     51 filename=/tmp/makeplist.$$ 
     52 ffilename=/tmp/makeplist.files.$$ 
     53 dfilename=/tmp/makeplist.dirs.$$ 
     54 
     55 list_set_files $setname | \
     56     env PLISTPKG=$pkgname awk '
     57 	$2 == ENVIRON["PLISTPKG"] {
     58 		sub("^\\./", "", $1);
     59 		print $1
     60 	}' | sort -u > $filename
     61 
     62 SELECTDIRS="-maxdepth 0 -type d"
     63 SELECTNONDIRS="-maxdepth 0 ! -type d"
     64 
     65 cd $prefix
     66 #
     67 # match the directories
     68 #
     69 xargs echo $SELECTDIRS < $filename | \
     70 while read ignore ignore ignore ignore args; do
     71 	[ -z "$args" ] && break 
     72 	find $args $SELECTDIRS
     73 done | awk '{ print "@dirrm " $1; }' > $dfilename
     74 
     75 #
     76 # match the non-directories
     77 #
     78 xargs echo $SELECTNONDIRS < $filename | \
     79 while read ignore ignore ignore ignore ignore args; do
     80 	[ -z "$args" ] && break 
     81 	find $args $SELECTNONDIRS
     82 done > $ffilename
     83 
     84 cd -
     85 
     86 echo "@cwd $prefix"
     87 if [ -s $ffilename ]; then
     88 	cat $ffilename
     89 fi
     90 if [ -s $dfilename ]; then
     91         sort -r $dfilename
     92 fi
     93 
     94 rm -f $filename $ffilename $dfilename
     95 
     96 exit 0
     97