Skip to content

Commit 450f123

Browse files
committed
Use appdirs in first place, it's also a dependency for pyopencl
1 parent a109d4a commit 450f123

File tree

2 files changed

+40
-53
lines changed

2 files changed

+40
-53
lines changed

src/namecoin.py

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import base64
77
import httplib
88
import json
9-
import os
109
import socket
1110
import sys
1211

1312
import defaults
13+
import paths
1414
import tr # translate
1515
from addresses import decodeAddress
1616
from bmconfigparser import BMConfigParser
@@ -267,34 +267,6 @@ def queryServer(self, data):
267267
raise Exception("Socket error in RPC connection: %s" % exc)
268268

269269

270-
def lookupNamecoinFolder():
271-
"""
272-
Look up the namecoin data folder.
273-
274-
.. todo:: Check whether this works on other platforms as well!
275-
"""
276-
277-
app = "namecoin"
278-
from os import path, environ
279-
if sys.platform == "darwin":
280-
if "HOME" in environ:
281-
dataFolder = path.join(os.environ["HOME"],
282-
"Library/Application Support/", app) + '/'
283-
else:
284-
print(
285-
"Could not find home folder, please report this message"
286-
" and your OS X version to the BitMessage Github."
287-
)
288-
sys.exit()
289-
290-
elif "win32" in sys.platform or "win64" in sys.platform:
291-
dataFolder = path.join(environ["APPDATA"], app) + "\\"
292-
else:
293-
dataFolder = path.join(environ["HOME"], ".%s" % app) + "/"
294-
295-
return dataFolder
296-
297-
298270
def ensureNamecoinOptions():
299271
"""
300272
Ensure all namecoin options are set, by setting those to default values
@@ -313,7 +285,7 @@ def ensureNamecoinOptions():
313285
# Try to read user/password from .namecoin configuration file.
314286
defaultUser = ""
315287
defaultPass = ""
316-
nmcFolder = lookupNamecoinFolder()
288+
nmcFolder = paths.lookupUserconfigDir('namecoin')
317289
nmcConfig = nmcFolder + "namecoin.conf"
318290
try:
319291
nmc = open(nmcConfig, "r")

src/paths.py

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,48 +32,63 @@ def lookupExeFolder():
3232
return exeFolder
3333

3434

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':
4344
try:
4445
dataFolder = os.path.join(
4546
os.environ['HOME'],
46-
'Library/Application Support/', APPNAME
47-
) + '/'
48-
47+
"Library/Application Support/", appname) + '/'
4948
except KeyError:
5049
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.")
5352
elif sys.platform.startswith('win'):
5453
dataFolder = os.path.join(
55-
os.environ['APPDATA'], APPNAME
54+
os.environ['APPDATA'], appname
5655
).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)
6256
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':
6377
try:
64-
dataFolder = os.path.join(os.environ['XDG_CONFIG_HOME'], APPNAME)
78+
datadir = os.path.join(os.environ['XDG_CONFIG_HOME'], APPNAME)
6579
except KeyError:
66-
dataFolder = os.path.join(os.environ['HOME'], '.config', APPNAME)
80+
datadir = os.path.join(os.environ['HOME'], '.config', APPNAME)
6781

6882
# Migrate existing data to the proper location
6983
# if this is an existing install
7084
try:
71-
move(os.path.join(os.environ['HOME'], '.%s' % APPNAME), dataFolder)
85+
move(dataFolder, datadir)
86+
dataFolder = datadir + os.path.sep
7287
logger.info('Moving data folder to %s', dataFolder)
7388
except IOError:
7489
# Old directory may not exist.
7590
pass
76-
dataFolder = dataFolder + os.path.sep
91+
7792
return dataFolder
7893

7994

0 commit comments

Comments
 (0)