import os, sys, urllib import codecs from twisted.python import usage from allmydata.util.assertutil import precondition from allmydata.util.encodingutil import unicode_to_url, quote_output, argv_to_abspath from allmydata.util.fileutil import abspath_expanduser_unicode _default_nodedir = None if sys.platform == "win32": from allmydata.windows import registry path = registry.get_base_dir_path() if path: precondition(isinstance(path, unicode), path) _default_nodedir = abspath_expanduser_unicode(path) if _default_nodedir is None: path = abspath_expanduser_unicode(u"~/.tahoe") precondition(isinstance(path, unicode), path) _default_nodedir = path def get_default_nodedir(): return _default_nodedir class BaseOptions(usage.Options): # unit tests can override these to point at StringIO instances stdin = sys.stdin stdout = sys.stdout
def logmsg(msg): logfilehandle.write("%s: %s\r\n" % (time.strftime('%Y%m%d_%H%M%S'), msg)) logfilehandle.flush() logmsg('service loaded') # # Now with some bootstrap util functions in place, let's try and init things: try: from allmydata.util import pkgresutil # override pkg_resources zip provider for py2exe deployment pkgresutil.install() # this is done before nevow is imported logmsg('loading base dir') from allmydata.windows import registry basedir = registry.get_base_dir_path() logmsg("got base dir (%s)" % (basedir, )) if not basedir: regpth = "%s : %s " % (registry._AMD_KEY, registry._BDIR_KEY) raise RuntimeError('"%s" not set in registry' % (regpth, )) os.chdir(basedir) logmsg("chdir(%s)" % (basedir, )) except: logmsg("exception") traceback.print_exc(None, logfilehandle) logfilehandle.flush() logfilehandle.close() raise class Tahoe(win32serviceutil.ServiceFramework):
def get_basedir(): if sys.platform == 'win32': from allmydata.windows import registry return registry.get_base_dir_path() else: return os.path.expanduser('~/.tahoe')