1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#!/usr/bin/env python
#-*- coding: utf-8 -*-
"""
____
| mx |
|____|_______________________
| |
| An encrypting remailer. |
|_________________________|
@author Isis Agora Lovecruft <isis@leap.se>, 0x2cdb8b35
@version 0.0.1
"""
from os import getcwd
from os import path as ospath
import sys
application_name = "leap_mx"
def __get_dirs__():
"""Get the absolute path of the top-level repository directory."""
here = getcwd()
base = here.rsplit(application_name, 1)[0]
repo = ospath.join(base, application_name)
leap = ospath.join(repo, 'src')
ours = ospath.join(leap, application_name.replace('_', '/'))
return repo, leap, ours
if __name__ == "__main__":
## Set the $PYTHONPATH:
repo, leap, ours = __get_dirs__()
sys.path[:] = map(ospath.abspath, sys.path)
sys.path.insert(0, leap)
## Now we should be able to import ourselves without installation:
try:
from leap.mx import runner
from leap.mx.util import config, log, version
except ImportError, ie:
print "%s\nExiting...\n" % ie.message
sys.exit(1)
config.filename = 'mx.conf'
config.loadConfig()
## xxx fixme version requires twisted...
dependency_check = runner.CheckRequirements(version.getPackageName(),
version.getPipfile())
from twisted.python import usage, runtime
from twisted.internet import reactor
if config.basic.enable_logfile:
logfilename = config.basic.logfile
logfilepath = ospath.join(repo, 'logs')
log.start(logfilename, logfilepath)
else:
log.start()
log.msg("Testing logging functionality")
log.debug("Running %s, with Python %s"
% (application_name, runtime.shortPythonVersion()))
log.debug("Platform: %s" % runtime.platform.getType())
log.debug("Thread support: %s" % str(runtime.platform.supportsThreads()))
mx_options = MXOptions()
mx_options.parseOptions(sys.argv)
if len(sys.argv) <= 0:
print mx_options.getUsage()
sys.exit(0)
else:
options = mx_options
if options['verbose']:
config.basic.debug = True
if options['test']:
from leap.mx import tests ## xxx this needs an __init__.py
tests.run() ## xxx need /leap/mx/tests.py
elif options['conf'] and os.path.isfile(options['conf']):
config.parse()
runner.run()
else:
mx_options.getUsage()
sys.exit(1)
|