2 # Borgend borg launcher / processor |
2 # Borgend borg launcher / processor |
3 # |
3 # |
4 |
4 |
5 import json |
5 import json |
6 import logging |
6 import logging |
|
7 import os |
7 from subprocess import Popen, PIPE |
8 from subprocess import Popen, PIPE |
8 from config import settings, arglistify |
9 from config import settings, arglistify |
9 |
10 |
10 necessary_opts=['--log-json', '--progress'] |
11 necessary_opts=['--log-json', '--progress'] |
11 |
12 |
33 if self.operation in necessary_opts_for: |
34 if self.operation in necessary_opts_for: |
34 cmd=cmd+necessary_opts_for[self.operation] |
35 cmd=cmd+necessary_opts_for[self.operation] |
35 |
36 |
36 return cmd+arglistify(self.args)+[self.archive_or_repository]+self.argsl |
37 return cmd+arglistify(self.args)+[self.archive_or_repository]+self.argsl |
37 |
38 |
38 def launch(self): |
39 def launch(self, password=None): |
39 cmd=self.construct_cmdline() |
40 cmd=self.construct_cmdline() |
40 |
41 |
41 logging.info('Launching ' + str(cmd)) |
42 logging.info('Launching ' + str(cmd)) |
42 |
43 |
43 self.proc=Popen(cmd, stdout=PIPE, stderr=PIPE, stdin=PIPE) |
44 env=None |
|
45 if password: |
|
46 env=os.environ.copy() |
|
47 env['BORG_PASSPHRASE']=password |
|
48 |
|
49 self.proc=Popen(cmd, env=env, stdout=PIPE, stderr=PIPE, stdin=PIPE) |
44 |
50 |
45 # We don't do password input etc. |
51 # We don't do password input etc. |
46 self.proc.stdin.close() |
52 self.proc.stdin.close() |
47 |
53 |
48 def read_result(self): |
54 def read_result(self): |