V10/cmd/dist/cmd/mkdist.sh

#! /bin/sh -

PATH=%LDIR%:/bin:/usr/bin
export PATH

usage='usage: mkdist [-Dold=new...] [-[xX]command] files...'

cwd=`pwd`
contents=/tmp/contents.$$
cmd=/tmp/cmd.$$
cmdfile=/tmp/cmdfile.$$
cmdstr=
cmdfilestr=
files=
subst="-D$contents=contents -D$cmd=cmd -D$cmdfile=cmdfile"

rm -f $contents $cmd $cmdfile

set -- `qargs getopt D:x:X: "$@"` || { echo "$usage" 1>&2; exit 1; }
for arg
do
	case $arg in
	-D) subst="$subst -D$2"; shift 2;;
	-x) cmdstr=$2; shift 2;;
	-X) cmdfilestr=$2; shift 2;;
	--) shift; break;;
	esac
done

cwd=`pwd`

for f
do
	case $f in
	/*) echo $f;;
	*) echo $cwd/$f;;
	esac
done | sedsubst $subst > $contents

for f
do
	case $f in
	/*) uargs test -d $f -o -f $f && files="$files $f";;
	*) uargs test -d $cwd/$f -o -f $cwd/$f && files="$files $cwd/$f";;
	esac
done

case "$cmdstr" in
?*)
	echo $cmdstr > $cmd
	files="$cmd $files"
	;;
esac

case "$cmdfilestr" in
?*)
	echo $cmdfilestr | sedsubst $subst > $cmdfile
	files="$cmdfile $files"
	;;
esac

uargs tarc $contents $files | uargs tarf $subst
rm -f $contents $cmd $cmdfile