annotate silvermirror/unison.py @ 50:4b2c3be35225 default tip

version bump
author Jeff Hammel <k0scist@gmail.com>
date Fri, 13 Aug 2021 15:16:54 -0700
parents 952a1c2e9cc1
children
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
45
952a1c2e9cc1 python3
Jeff Hammel <k0scist@gmail.com>
parents: 44
diff changeset
7 from .interface import Reflector
1
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)
44
e8752ce07aa0 python3
Jeff Hammel <k0scist@gmail.com>
parents: 15
diff changeset
17 print(command)
1
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)
44
e8752ce07aa0 python3
Jeff Hammel <k0scist@gmail.com>
parents: 15
diff changeset
23 print(child.read())
15
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)