Hello and sorry for the delay, On 12/26/2014 10:33 PM, Antoine Beaupré wrote: > > Thanks for the patch, it's a great idea! > > Can you redo the patch with the "with" construct instead of manual > exception handling?
i'm not very adept in python and/or coding, but i tried. attached are two patches, both using the 'with' construct, monkeysphere-fileoutput2.diff is without exception handling, but there could be an exception if the file is not writeable. monkeysphere-fileoutput3.diff is with exception handling to catch this case. (i wasn't sure what you meant with 'manual' exception handling...) > Also, I'd suggest the message "Could not write to %s: file exists" as an > error message. fixed ;) however, i stumbled over another problem: thunderbird sets the content-type for messages, so the mail then looks a bit confusing if i just copy and paste the output... if i find the time i'll think about a solution (maybe don't set content type and just save two files, content and attachment...) cheers, muri
diff --git a/monkeysign/ui.py b/monkeysign/ui.py index c9b6a30..d88d63d 100644 --- a/monkeysign/ui.py +++ b/monkeysign/ui.py @@ -93,6 +93,7 @@ class MonkeysignUi(object): help=_('do not send email at all (default: use sendmail)')) parser.add_option('-t', '--to', dest='to', help=_('override destination email for testing (default: send individually encrypted email to each uid chosen)')) + parser.add_option('-o', '--output', dest='output', help=_('save the email to a file')) return parser def parse_args(self, args): @@ -381,6 +382,13 @@ expects an EmailFactory email, but will not mail if nomail is set""" not sending email to %s, as requested, here's the email message: %s""") % (msg.mailto, msg.create_mail_from_block())) + if self.options.output is not None: + if not os.path.exists(self.options.output): + with open(self.options.output, 'w') as f: + f.write(str(msg.create_mail_from_block())) + self.warn(_('Mail has been written to %s') % self.options.output) + else: + self.warn(_('Could not write to %s: file exists') % self.options.output) class EmailFactory:
diff --git a/monkeysign/ui.py b/monkeysign/ui.py index c9b6a30..860e241 100644 --- a/monkeysign/ui.py +++ b/monkeysign/ui.py @@ -93,6 +93,7 @@ class MonkeysignUi(object): help=_('do not send email at all (default: use sendmail)')) parser.add_option('-t', '--to', dest='to', help=_('override destination email for testing (default: send individually encrypted email to each uid chosen)')) + parser.add_option('-o', '--output', dest='output', help=_('save the email to a file')) return parser def parse_args(self, args): @@ -381,6 +382,16 @@ expects an EmailFactory email, but will not mail if nomail is set""" not sending email to %s, as requested, here's the email message: %s""") % (msg.mailto, msg.create_mail_from_block())) + if self.options.output is not None: + if not os.path.exists(self.options.output): + try: + with open(self.options.output, 'w') as f: + f.write(str(msg.create_mail_from_block())) + self.warn(_('Mail has been written to %s') % self.options.output) + except IOError: + self.warn(_('Could not write to file %s') % self.options.output) + else: + self.warn(_('Could not write to %s: file exists') % self.options.output) class EmailFactory:
signature.asc
Description: OpenPGP digital signature