2015-01-17 19:38:20 +08:00
|
|
|
from operator import itemgetter
|
2014-12-08 16:11:31 +08:00
|
|
|
import importlib.machinery
|
2015-01-07 18:14:52 +08:00
|
|
|
import linecache
|
2015-01-28 21:44:15 +08:00
|
|
|
import logging
|
2015-02-18 23:52:31 +08:00
|
|
|
import sys
|
2015-02-18 07:13:00 +08:00
|
|
|
import os.path
|
2014-12-08 16:11:31 +08:00
|
|
|
|
|
|
|
|
2015-01-17 19:38:20 +08:00
|
|
|
def format_run_arguments(arguments):
|
|
|
|
fmtargs = []
|
|
|
|
for k, v in sorted(arguments.items(), key=itemgetter(0)):
|
|
|
|
fmtargs.append(k + "=" + str(v))
|
|
|
|
if fmtargs:
|
|
|
|
return " ".join(fmtargs)
|
|
|
|
else:
|
|
|
|
return "-"
|
|
|
|
|
|
|
|
|
2014-12-08 16:11:31 +08:00
|
|
|
def file_import(filename):
|
2015-01-07 18:14:52 +08:00
|
|
|
linecache.checkcache(filename)
|
|
|
|
|
2014-12-08 16:11:31 +08:00
|
|
|
modname = filename
|
|
|
|
i = modname.rfind("/")
|
|
|
|
if i > 0:
|
|
|
|
modname = modname[i+1:]
|
|
|
|
i = modname.find(".")
|
|
|
|
if i > 0:
|
|
|
|
modname = modname[:i]
|
|
|
|
modname = "file_import_" + modname
|
|
|
|
|
2015-02-18 07:13:00 +08:00
|
|
|
path = os.path.dirname(os.path.realpath(filename))
|
|
|
|
sys.path.insert(0, path)
|
|
|
|
|
2014-12-08 16:11:31 +08:00
|
|
|
loader = importlib.machinery.SourceFileLoader(modname, filename)
|
2015-02-18 23:51:44 +08:00
|
|
|
module = loader.load_module()
|
2015-02-18 07:13:00 +08:00
|
|
|
|
|
|
|
sys.path.remove(path)
|
|
|
|
|
2015-02-18 04:07:09 +08:00
|
|
|
return module
|
2015-01-28 21:44:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
def verbosity_args(parser):
|
|
|
|
group = parser.add_argument_group("verbosity")
|
2015-02-04 19:09:37 +08:00
|
|
|
group.add_argument("-v", "--verbose", default=0, action="count",
|
|
|
|
help="increase logging level")
|
|
|
|
group.add_argument("-q", "--quiet", default=0, action="count",
|
|
|
|
help="decrease logging level")
|
2015-01-28 21:44:15 +08:00
|
|
|
|
|
|
|
|
2015-02-16 05:55:43 +08:00
|
|
|
def simple_network_args(parser, default_port):
|
|
|
|
group = parser.add_argument_group("network")
|
|
|
|
group.add_argument("--bind", default="::1",
|
|
|
|
help="hostname or IP address to bind to")
|
|
|
|
group.add_argument("-p", "--port", default=default_port, type=int,
|
2015-02-16 05:58:57 +08:00
|
|
|
help="TCP port to listen to (default: {})"
|
|
|
|
.format(default_port))
|
2015-02-16 05:55:43 +08:00
|
|
|
|
|
|
|
|
2015-01-28 21:44:15 +08:00
|
|
|
def init_logger(args):
|
2015-01-30 19:02:27 +08:00
|
|
|
logging.basicConfig(level=logging.WARNING + args.quiet*10 - args.verbose*10)
|