#!/usr/bin/env python import py import sys, os def usage(): arg0 = sys.argv[0] print """%s [[user@]remote-host:/repo/location localrepo [identity keyfile]]"""\ % (arg0,) def create_repo(localrepo): os.makedirs("%s" % localrepo) return py.process.cmdexec('/usr/bin/svnadmin create %s' % localrepo) def start_hotsync(remote, localrepo, keyfile): remote_host, path = remote.split(':', 1) print 'starting: screen -S %s -d -m python /admin/bin/svn-sync-repo.py %s %s %s' %\ (remote_host, remote, localrepo, keyfile) return py.process.cmdexec('screen -S %s -d -m python /admin/bin/svn-sync-repo.py %s %s %s' %\ (remote_host, remote, localrepo, keyfile)) def main(args): if len(args) > 0: # run once interactive remote = args[0] localrepo = py.path.local(args[1]) if not localrepo.check(dir=1): create_repo(localrepo) if len(args) == 3: keyfile = py.path.local(args[2]) else: keyfile = "" start_hotsync(remote, localrepo, keyfile) else: # load from config file # user@host:/path/to/repo /path/to/localrepo [/path/to/keyfile] configfile = open("/etc/svnhotsync/svnhotsync.conf") for line in configfile: if line[0] != '#': sargs = line.split() if len(sargs) < 2 or len(sargs) > 3: raise SystemExit("bad arguments in config file: %s" %(line,)) remote = sargs[0] localrepo = py.path.local(sargs[1]) if not localrepo.check(dir=1): create_repo(localrepo) if len(sargs) == 3: keyfile = py.path.local(sargs[2]) else: keyfile = "" start_hotsync(remote, localrepo, keyfile) configfile.close() if __name__ == '__main__': if len(sys.argv) == 2 or len(sys.argv) > 4: usage() raise SystemExit(1) main(sys.argv[1:])