diff options
Diffstat (limited to 'src/mailman/commands/cli_aliases.py')
| -rw-r--r-- | src/mailman/commands/cli_aliases.py | 88 |
1 files changed, 4 insertions, 84 deletions
diff --git a/src/mailman/commands/cli_aliases.py b/src/mailman/commands/cli_aliases.py index d692ba356..d26e5a754 100644 --- a/src/mailman/commands/cli_aliases.py +++ b/src/mailman/commands/cli_aliases.py @@ -25,18 +25,11 @@ __all__ = [ ] -import sys - -from operator import attrgetter -from zope.component import getUtility from zope.interface import implementer from mailman.config import config from mailman.core.i18n import _ from mailman.interfaces.command import ICLISubCommand -from mailman.interfaces.listmanager import IListManager -from mailman.interfaces.mta import ( - IMailTransportAgentAliases, IMailTransportAgentLifecycle) from mailman.utilities.modules import call_name @@ -51,84 +44,11 @@ class Aliases: """See `ICLISubCommand`.""" self.parser = parser command_parser.add_argument( - '-o', '--output', - action='store', help=_("""\ - File to send the output to. If not given, a file in $VAR/data is - used. The argument can be '-' to use standard output..""")) - command_parser.add_argument( - '-f', '--format', + '-d', '--directory', action='store', help=_("""\ - Alternative output format to use. This is the Python object path - to an implementation of the `IMailTransportAgentLifecycle` - interface.""")) - command_parser.add_argument( - '-s', '--simple', - action='store_true', default=False, help=_("""\ - Simply output the list of aliases. - """)) + An alternative directory to output the various MTA files to.""")) def process(self, args): """See `ICLISubCommand`.""" - if args.format is not None and args.simple: - self.parser.error(_('Cannot use both -s and -f')) - # Does not return. - output = None - if args.output == '-': - output = sys.stdout - elif args.output is None: - output = None - else: - output = args.output - if args.simple: - Dummy().regenerate(output) - else: - format_arg = (config.mta.incoming - if args.format is None - else args.format) - # Call the MTA-specific regeneration method. - call_name(format_arg).regenerate(output) - - - -@implementer(IMailTransportAgentLifecycle) -class Dummy: - """Dummy aliases implementation for simpler output format.""" - - def create(self, mlist): - """See `IMailTransportAgentLifecycle`.""" - raise NotImplementedError - - def delete(self, mlist): - """See `IMailTransportAgentLifecycle`.""" - raise NotImplementedError - - def regenerate(self, output=None): - """See `IMailTransportAgentLifecycle`.""" - fp = None - close = False - try: - if output is None: - # There's really no place to print the output. - return - elif isinstance(output, basestring): - fp = open(output, 'w') - close = True - else: - fp = output - self._do_write_file(fp) - finally: - if fp is not None and close: - fp.close() - - def _do_write_file(self, fp): - # First, sort mailing lists by domain. - by_domain = {} - for mlist in getUtility(IListManager).mailing_lists: - by_domain.setdefault(mlist.mail_host, []).append(mlist) - sort_key = attrgetter('list_name') - for domain in sorted(by_domain): - for mlist in sorted(by_domain[domain], key=sort_key): - utility = getUtility(IMailTransportAgentAliases) - for alias in utility.aliases(mlist): - print(alias, file=fp) - print(file=fp) + # Call the MTA-specific regeneration method. + call_name(config.mta.incoming).regenerate(args.directory) |
