110 lines · 1.7 KB · Text
RawDownload
#!/bin/rc rfork nepath=/bin fn fatal {	echo $*	exit $"*} fn usage {	echo 'usage: contrib/create [-d depend] [-f] [-r root] [-u user] [-x file] name proto' >[1=2]	exit  usage	} root=/usr=$userforce=falseexclude=()depend=()while (~ $1 -*) {	switch ($1) {	case -d		depend=($depend $2)		shift	case -f		force=true	case -r		root=$2		shift	case -u		usr=$2		shift	case -x		exclude=($exclude `{cleanname -d `{pwd} $2})		shift	case -*		usage	}	shift} if (! ~ $#* 2)	usage repl=$home/lib/replica# setup dirsif(! test -d $repl) mkdir -p $replfor(i in cfg db log) {	if(! test -d $repl/$i)		mkdir -p $repl/$i}  name=$1proto=`{cleanname -d `{pwd} $2}if (! test -f $proto)	fatal cannot find proto: $proto cfg=$repl/cfg/$nameif (test -x $cfg && ~ $force false)	fatal name conflict: replica $name already exists. contrib=/n/sources/contrib/$usrx='$'cat > $cfg <<!#!/bin/rcs=$contrib/replicaserverroot=/n/sources/contrib/$usr/rootserverlog=$x^s/$name/logserverdb=$x^s/$name/dbserverdep=$x^s/$name/depserverchg=$x^s/$name/chgserverinf=$x^s/$name/inffn servermount { 9fs sources; 9fs -m sources }c=$replclientroot=$rootclientdb=$x^c/db/$nameclientlog=$x^c/log/$nameclientexclude=($exclude)clientdepend=($depend)clientproto=$proto!chmod +x $cfg> $repl/db/$name> $repl/log/$name . $cfg servermount || fatal cant mount servermkdir -p $contrib/rootmkdir -p $contrib/replicamkdir -p $contrib/replica/$name> $serverdb> $serverlog> $serverdep> $serverchgfor (i in $clientdepend)	echo $i >> $serverdep if (test -w /dev/consctl) {	>/dev/consctl {		echo holdon		cat >$serverinf	}}if not	cat >$serverinf exec contrib/push $name