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
8prefix=/
9
10usage()
11{
12	cat 1>&2 <<USAGE
13Usage: ${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
19USAGE
20	exit 1
21}
22
23# handle args
24while 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
43done
44shift $((${OPTIND} - 1))
45if [ $# -ne 2 ]; then
46	usage
47fi
48setname="$1"
49pkgname=$2
50
51filename=/tmp/makeplist.$$ 
52ffilename=/tmp/makeplist.files.$$ 
53dfilename=/tmp/makeplist.dirs.$$ 
54
55list_set_files $setname | \
56    env PLISTPKG=$pkgname awk '
57	$2 == ENVIRON["PLISTPKG"] {
58		sub("^\\./", "", $1);
59		print $1
60	}' | sort -u > $filename
61
62SELECTDIRS="-maxdepth 0 -type d"
63SELECTNONDIRS="-maxdepth 0 ! -type d"
64
65cd $prefix
66#
67# match the directories
68#
69xargs echo $SELECTDIRS < $filename | \
70while read ignore ignore ignore ignore args; do
71	[ -z "$args" ] && break 
72	find $args $SELECTDIRS
73done | awk '{ print "@dirrm " $1; }' > $dfilename
74
75#
76# match the non-directories
77#
78xargs echo $SELECTNONDIRS < $filename | \
79while read ignore ignore ignore ignore ignore args; do
80	[ -z "$args" ] && break 
81	find $args $SELECTNONDIRS
82done > $ffilename
83
84cd -
85
86echo "@cwd $prefix"
87if [ -s $ffilename ]; then
88	cat $ffilename
89fi
90if [ -s $dfilename ]; then
91        sort -r $dfilename
92fi
93
94rm -f $filename $ffilename $dfilename
95
96exit 0
97