Author: gstein
Date: Wed Oct 25 07:51:23 2023
New Revision: 1913313
URL: http://svn.apache.org/viewvc?rev=1913313&view=rev
Log:
Move the output from being tied to the action being performed. It is
only important when the notification is being generated.
* tools/hook-scripts/mailer/mailer.py:
(main): use new create_output() to pass an output mechanism into the
action's generate() method.
(create_output): pulled out from Messenger.__init__()
(Commit.generate, PropChange.generate, Lock.generate): take a new
OUTPUT param for where to place the generated output.
Modified:
subversion/trunk/tools/hook-scripts/mailer/mailer.py
Modified: subversion/trunk/tools/hook-scripts/mailer/mailer.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/mailer.py?rev=1913313&r1=1913312&r2=1913313&view=diff
==============================================================================
--- subversion/trunk/tools/hook-scripts/mailer/mailer.py (original)
+++ subversion/trunk/tools/hook-scripts/mailer/mailer.py Wed Oct 25 07:51:23
2023
@@ -144,7 +144,19 @@ def main(pool, cmd, config_fname, repos_
else:
raise UnknownSubcommand(cmd)
- return messenger.generate(pool)
+ output = create_output(cfg, repos)
+ return messenger.generate(output, pool)
+
+
+def create_output(cfg, repos):
+ if cfg.is_set('general.mail_command'):
+ cls = PipeOutput
+ elif cfg.is_set('general.smtp_hostname'):
+ cls = SMTPOutput
+ else:
+ cls = StandardOutput
+
+ return cls(cfg, repos)
def remove_leading_slashes(path):
@@ -434,15 +446,6 @@ class Messenger:
# being performed. See OutputBase.start() docstring.
self.basic_subject = ''
- if cfg.is_set('general.mail_command'):
- cls = PipeOutput
- elif cfg.is_set('general.smtp_hostname'):
- cls = SMTPOutput
- else:
- cls = StandardOutput
-
- self.output = cls(cfg, repos)
-
def make_subject(self, basic_subject, group, params):
prefix = self.cfg.get(self.prefix_param, group, params)
if prefix:
@@ -521,7 +524,7 @@ class Commit(Messenger):
else:
self.basic_subject = 'r%d - %s' % (repos.rev, dirlist)
- def generate(self, scratch_pool):
+ def generate(self, output, scratch_pool):
"Generate email for the various groups and option-params."
### the groups need to be further compressed. if the headers and
@@ -536,13 +539,13 @@ class Commit(Messenger):
for (group, param_tuple), (params, paths) in sorted(self.groups.items()):
subject_line = self.make_subject(self.basic_subject, group, params)
try:
- writer = self.output.start(subject_line, group, params)
+ writer = output.start(subject_line, group, params)
# generate the content for this group and set of params
generate_content(writer, self.cfg, self.repos, self.changelist,
group, params, paths, iterpool)
- self.output.finish()
+ output.finish()
except MessageSendFailure:
ret = 1
svn.core.svn_pool_clear(iterpool)
@@ -567,7 +570,7 @@ class PropChange(Messenger):
self.basic_subject = 'r%d - %s' % (repos.rev, propname)
- def generate(self, scratch_pool):
+ def generate(self, output, scratch_pool):
actions = { 'A': 'added', 'M': 'modified', 'D': 'deleted' }
ret = 0
### maybe create an iterpool?
@@ -575,7 +578,7 @@ class PropChange(Messenger):
for (group, param_tuple), params in self.groups.items():
subject_line = self.make_subject(self.basic_subject, group, params)
try:
- writer = self.output.start(subject_line, group, params)
+ writer = output.start(subject_line, group, params)
writer.write('Author: %s\n'
'Revision: %s\n'
'Property Name: %s\n'
@@ -596,13 +599,13 @@ class PropChange(Messenger):
tempfile2 = tempfile.NamedTemporaryFile()
tempfile2.write(self.repos.get_rev_prop(self.propname, scratch_pool))
tempfile2.flush()
- self.output.run(self.cfg.get_diff_cmd(group, {
+ output.run(self.cfg.get_diff_cmd(group, {
'label_from' : 'old property value',
'label_to' : 'new property value',
'from' : tempfile1.name,
'to' : tempfile2.name,
}))
- self.output.finish()
+ output.finish()
except MessageSendFailure:
ret = 1
return ret
@@ -684,12 +687,12 @@ class Lock(Messenger):
to_bytes(self.dirlist[0]),
pool)
- def generate(self, scratch_pool):
+ def generate(self, output, scratch_pool):
ret = 0
for (group, param_tuple), (params, paths) in sorted(self.groups.items()):
subject_line = self.make_subject(self.basic_subject, group, params)
try:
- writer = self.output.start(subject_line, group, params)
+ writer = output.start(subject_line, group, params)
writer.write('Author: %s\n'
'%s paths:\n' %
@@ -702,7 +705,7 @@ class Lock(Messenger):
if self.do_lock:
writer.write('Comment:\n%s\n' % (self.lock.comment or ''))
- self.output.finish()
+ output.finish()
except MessageSendFailure:
ret = 1
return ret