|
|
|
@ -23,7 +23,8 @@ def lookupExeFolder():
|
|
|
|
|
# targetdir/Bitmessage.app/Contents/MacOS/Bitmessage
|
|
|
|
|
os.path.dirname(sys.executable).split(os.path.sep)[0] + os.path.sep
|
|
|
|
|
if frozen == "macosx_app" else
|
|
|
|
|
os.path.dirname(sys.executable) + os.path.sep)
|
|
|
|
|
os.path.dirname(sys.executable).decode(
|
|
|
|
|
sys.getfilesystemencoding(), 'ignore') + os.path.sep)
|
|
|
|
|
elif __file__:
|
|
|
|
|
exeFolder = os.path.dirname(__file__) + os.path.sep
|
|
|
|
|
else:
|
|
|
|
@ -31,44 +32,63 @@ def lookupExeFolder():
|
|
|
|
|
return exeFolder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def lookupUserconfigDir(appname):
|
|
|
|
|
"""Lookup user data directory for the *appname* application"""
|
|
|
|
|
try:
|
|
|
|
|
from appdirs import user_config_dir
|
|
|
|
|
return user_config_dir(appname, False, roaming=True) + os.path.sep
|
|
|
|
|
except ImportError:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
if sys.platform == 'darwin':
|
|
|
|
|
try:
|
|
|
|
|
dataFolder = os.path.join(
|
|
|
|
|
os.environ['HOME'],
|
|
|
|
|
"Library/Application Support/", appname) + '/'
|
|
|
|
|
except KeyError:
|
|
|
|
|
sys.exit(
|
|
|
|
|
"Could not find home folder, please report this message"
|
|
|
|
|
" and your OS X version to the BitMessage Github.")
|
|
|
|
|
elif sys.platform.startswith('win'):
|
|
|
|
|
dataFolder = os.path.join(
|
|
|
|
|
os.environ['APPDATA'], appname
|
|
|
|
|
).decode(sys.getfilesystemencoding(), 'ignore') + os.path.sep
|
|
|
|
|
else:
|
|
|
|
|
dataFolder = os.path.join(
|
|
|
|
|
os.environ['HOME'], '.%s' % appname) + os.path.sep
|
|
|
|
|
|
|
|
|
|
return dataFolder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def lookupAppdataFolder():
|
|
|
|
|
"""Returns path of the folder where application data is stored"""
|
|
|
|
|
APPNAME = "PyBitmessage"
|
|
|
|
|
|
|
|
|
|
dataFolder = os.environ.get('BITMESSAGE_HOME')
|
|
|
|
|
if dataFolder:
|
|
|
|
|
if dataFolder[-1] not in (os.path.sep, os.path.altsep):
|
|
|
|
|
dataFolder += os.path.sep
|
|
|
|
|
elif sys.platform == 'darwin':
|
|
|
|
|
try:
|
|
|
|
|
dataFolder = os.path.join(
|
|
|
|
|
os.environ['HOME'],
|
|
|
|
|
'Library/Application Support/', APPNAME
|
|
|
|
|
) + '/'
|
|
|
|
|
return dataFolder
|
|
|
|
|
|
|
|
|
|
except KeyError:
|
|
|
|
|
sys.exit(
|
|
|
|
|
'Could not find home folder, please report this message'
|
|
|
|
|
' and your OS X version to the BitMessage Github.')
|
|
|
|
|
elif 'win32' in sys.platform or 'win64' in sys.platform:
|
|
|
|
|
dataFolder = os.path.join(
|
|
|
|
|
os.environ['APPDATA'].decode(
|
|
|
|
|
sys.getfilesystemencoding(), 'ignore'), APPNAME
|
|
|
|
|
) + os.path.sep
|
|
|
|
|
else:
|
|
|
|
|
dataFolder = lookupUserconfigDir(APPNAME)
|
|
|
|
|
# Try to follow XDG spec on Linux, Unix or BSD
|
|
|
|
|
# TODO: use pyxdg
|
|
|
|
|
if os.name == 'posix' and sys.platform != 'darwin':
|
|
|
|
|
try:
|
|
|
|
|
dataFolder = os.path.join(os.environ['XDG_CONFIG_HOME'], APPNAME)
|
|
|
|
|
datadir = os.path.join(os.environ['XDG_CONFIG_HOME'], APPNAME)
|
|
|
|
|
except KeyError:
|
|
|
|
|
dataFolder = os.path.join(os.environ['HOME'], '.config', APPNAME)
|
|
|
|
|
datadir = os.path.join(os.environ['HOME'], '.config', APPNAME)
|
|
|
|
|
|
|
|
|
|
# Migrate existing data to the proper location
|
|
|
|
|
# if this is an existing install
|
|
|
|
|
try:
|
|
|
|
|
move(os.path.join(os.environ['HOME'], '.%s' % APPNAME), dataFolder)
|
|
|
|
|
move(dataFolder, datadir)
|
|
|
|
|
dataFolder = datadir + os.path.sep
|
|
|
|
|
logger.info('Moving data folder to %s', dataFolder)
|
|
|
|
|
except IOError:
|
|
|
|
|
# Old directory may not exist.
|
|
|
|
|
pass
|
|
|
|
|
dataFolder = dataFolder + os.path.sep
|
|
|
|
|
|
|
|
|
|
return dataFolder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|