vmm: Renamed to VirtualMailManager/cli/main.py. Splitted subcommands
out to VirtualMailManager/cli/subcommands.py.
vmm: New created with minimal code.
# -*- coding: UTF-8 -*-# Copyright 2007 - 2010, Pascal Volk# See COPYING for distribution information.""" VirtualMailManager.cli.main ~~~~~~~~~~~~~~~~~~~~~~~~~~~ VirtualMailManager's command line interface."""fromVirtualMailManagerimportENCODING,errorsfromVirtualMailManager.configimportConfigValueErrorfromVirtualMailManager.cliimportw_errfromVirtualMailManager.cli.handlerimportCliHandlerfromVirtualMailManager.constantsimportDATABASE_ERROR,EX_MISSING_ARGS, \EX_SUCCESS,EX_UNKNOWN_COMMAND,EX_USER_INTERRUPTfromVirtualMailManager.cli.subcommandsimportRunContext,cmd_map,usage_=lambdamsg:msgdef_get_handler():"""Try to get a CliHandler. Exit the program when an error occurs."""try:handler=CliHandler()handler.cfg_install()except(errors.NotRootError,errors.PermissionError,errors.VMMError,errors.ConfigError,ConfigValueError),err:w_err(err.code,_(u'Error: %s')%err.msg)else:returnhandlerdefrun(argv):iflen(argv)<2:usage(EX_MISSING_ARGS,_(u"You must specify a subcommand at least"))sub_cmd=argv[1].lower()ifsub_cmdincmd_map:cmd_func=cmd_map[sub_cmd].funcelse:forcmdincmd_map.itervalues():ifcmd.alias==sub_cmd:cmd_func=cmd.funcsub_cmd=cmd.namebreakelse:usage(EX_UNKNOWN_COMMAND,_(u"Unknown subcommand: '%s'")%sub_cmd)handler=_get_handler()run_ctx=RunContext(argv,handler,sub_cmd)try:cmd_func(run_ctx)except(EOFError,KeyboardInterrupt):# TP: We have to cry, because root has killed/interrupted vmm# with Ctrl+C or Ctrl+D.w_err(EX_USER_INTERRUPT,'',_(u'Ouch!'),'')excepterrors.VMMError,err:iferr.code!=DATABASE_ERROR:w_err(err.code,_(u'Error: %s')%err.msg)w_err(err.code,unicode(err.msg,ENCODING,'replace'))ifhandler.has_warnings():w_err(0,_(u'Warnings:'),*handler.get_warnings())returnEX_SUCCESSdel_