Plan 9 from Bell Labs’s /usr/web/sources/contrib/rminnich/package/bin/rc/push

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


#!/bin/rc

rfork ne
path=/bin

fn fatal {
	echo $*
	exit $"*
}

fn must {
	$* || fatal $"*^': '^$status
}

flags=()
while (! ~ $#* 0 && ~ $1 -*) {
	if (~ $1 -c -s) {
		flags=($flags $1)
		shift
	}
	flags=($flags $1)
	shift
}

if (! ~ $#* 1)
	fatal 'usage: contrib/push name' >[1=2]

name=$1
cfg=$home/lib/replica/cfg/$name

if (! test -x $cfg)
	fatal no such replica: $name

. $cfg

if (! ~ $#clientexclude 0)
	clientexclude=-x^$clientexclude

replica/updatedb -r $clientroot -p $clientproto $clientexclude $clientdb >> $clientlog
ndb=`{echo $clientdb | sed 's;(.*)/(.*);\1/n\2;'}
odb=`{echo $clientdb | sed 's;(.*)/(.*);\1/_\2;'}
replica/compactdb $clientdb > $ndb && mv $clientdb $odb && mv $ndb $clientdb

must servermount

# iso proto
isoproto=/tmp/$name$pid.proto
must fcp $clientproto $isoproto
must aux/stub /$name.db
must bind $clientdb /$name.db
must aux/stub /$name.log
must bind $clientlog /$name.log
echo '
'^$name^'.db 664 sys sys
'^$name^'.log 664 sys sys
'>> $isoproto

# create the .iso
isofile=/tmp/$name$pid.iso
must disk/mk9660 -s $clientroot -p $isoproto $isofile
must bzip2 -9 < $isofile > $isofile.bz2
rm -f $isofile $isoproto
must fcp $isofile.bz2 $s/$name/iso.bz2
rm -f $isofile.bz2

# regular push
replica/applychanges -v $flags -p $clientproto $clientexclude $serverdb $clientroot $serverroot
fcp -x $clientlog $serverlog
fcp -x $clientdb $serverdb

if (~ $#serverchg 0)
	serverchg=$s/$name/chg

if (test -w /dev/consctl) {
	>/dev/consctl {
		echo holdon
		{echo `{date}
		cat |sed 's/^/    /'; echo } >>$serverchg
	}
}
if not
	{echo `{date}
	cat |sed 's/^/    /'; echo } >>$serverchg

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.