@@ -32,48 +32,63 @@ def lookupExeFolder():
32
32
return exeFolder
33
33
34
34
35
- def lookupAppdataFolder ():
36
- """Returns path of the folder where application data is stored"""
37
- APPNAME = "PyBitmessage"
38
- dataFolder = os .environ .get ('BITMESSAGE_HOME' )
39
- if dataFolder :
40
- if dataFolder [- 1 ] not in (os .path .sep , os .path .altsep ):
41
- dataFolder += os .path .sep
42
- elif sys .platform == 'darwin' :
35
+ def lookupUserconfigDir (appname ):
36
+ """Lookup user data directory for the *appname* application"""
37
+ try :
38
+ from appdirs import user_config_dir
39
+ return user_config_dir (appname , False , roaming = True ) + os .path .sep
40
+ except ImportError :
41
+ pass
42
+
43
+ if sys .platform == 'darwin' :
43
44
try :
44
45
dataFolder = os .path .join (
45
46
os .environ ['HOME' ],
46
- 'Library/Application Support/' , APPNAME
47
- ) + '/'
48
-
47
+ "Library/Application Support/" , appname ) + '/'
49
48
except KeyError :
50
49
sys .exit (
51
- ' Could not find home folder, please report this message'
52
- ' and your OS X version to the BitMessage Github.' )
50
+ " Could not find home folder, please report this message"
51
+ " and your OS X version to the BitMessage Github." )
53
52
elif sys .platform .startswith ('win' ):
54
53
dataFolder = os .path .join (
55
- os .environ ['APPDATA' ], APPNAME
54
+ os .environ ['APPDATA' ], appname
56
55
).decode (sys .getfilesystemencoding (), 'ignore' ) + os .path .sep
57
- try :
58
- os .path .isdir (dataFolder )
59
- except WindowsError :
60
- from appdirs import user_data_dir
61
- dataFolder = user_data_dir ('PyBitmessage' , False )
62
56
else :
57
+ dataFolder = os .path .join (
58
+ os .environ ['HOME' ], '.%s' % appname ) + os .path .sep
59
+
60
+ return dataFolder
61
+
62
+
63
+ def lookupAppdataFolder ():
64
+ """Returns path of the folder where application data is stored"""
65
+ APPNAME = "PyBitmessage"
66
+
67
+ dataFolder = os .environ .get ('BITMESSAGE_HOME' )
68
+ if dataFolder :
69
+ if dataFolder [- 1 ] not in (os .path .sep , os .path .altsep ):
70
+ dataFolder += os .path .sep
71
+ return dataFolder
72
+
73
+ dataFolder = lookupUserconfigDir (APPNAME )
74
+ # Try to follow XDG spec on Linux, Unix or BSD
75
+ # TODO: use pyxdg
76
+ if os .name == 'posix' and sys .platform != 'darwin' :
63
77
try :
64
- dataFolder = os .path .join (os .environ ['XDG_CONFIG_HOME' ], APPNAME )
78
+ datadir = os .path .join (os .environ ['XDG_CONFIG_HOME' ], APPNAME )
65
79
except KeyError :
66
- dataFolder = os .path .join (os .environ ['HOME' ], '.config' , APPNAME )
80
+ datadir = os .path .join (os .environ ['HOME' ], '.config' , APPNAME )
67
81
68
82
# Migrate existing data to the proper location
69
83
# if this is an existing install
70
84
try :
71
- move (os .path .join (os .environ ['HOME' ], '.%s' % APPNAME ), dataFolder )
85
+ move (dataFolder , datadir )
86
+ dataFolder = datadir + os .path .sep
72
87
logger .info ('Moving data folder to %s' , dataFolder )
73
88
except IOError :
74
89
# Old directory may not exist.
75
90
pass
76
- dataFolder = dataFolder + os . path . sep
91
+
77
92
return dataFolder
78
93
79
94
0 commit comments