annotate silvermirror/unison.py @ 23:4f1e45a8656c

correct
author Jeff Hammel <k0scist@gmail.com>
date Tue, 21 Jan 2014 09:24:15 -0800
parents 743c920bc041
children e8752ce07aa0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
1 """
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
2 unison backend for silvermirror
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
3 """
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
4
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
5 import pexpect
15
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
6 import subprocess
1
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
7 from interface import Reflector
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
8
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
9 class unison(Reflector):
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
10
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
11 def sync(self, host, resource, ignore=(), password=None, test=False):
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
12 command = ['unison', '-auto', '-batch', resource, 'ssh://%s/%s' % (host, resource)]
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
13 for i in ignore:
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
14 command.extend(('-ignore', "'Name %s'" % i))
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
15
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
16 command = ' '.join(command)
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
17 print command # XXX debug -- should go to logging
9b139702a8f9 use a real backend architecture with an inteface and vastly simplify unify.py
k0s <k0scist@gmail.com>
parents:
diff changeset
18 if not test:
15
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
19 if password:
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
20 child = pexpect.spawn(command, timeout=36000, maxread=1)
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
21 child.expect('password: ')
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
22 child.sendline(password)
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
23 print child.read() # XXX -> logging
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
24 else:
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
25 # XXX should not use shell=True
743c920bc041 fix password prompt
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
26 subprocess.call(command, shell=True)