From b80c327e35fa5c0961e197656092d8abfcb4a493 Mon Sep 17 00:00:00 2001 From: Michael H Date: Sun, 14 Jan 2018 23:35:33 -0500 Subject: [PATCH] For Linux service users, (#1236) * For Linux service users, use `appdirs.AppDirs().site_data_dir` instead of `appdirs.AppDirs().user_config_dir * somewhat important for this to be changed consistently * need to import os to use it * travis doesn't like how I was checking in config_dir had been set. --- redbot/core/data_manager.py | 9 ++++++++- redbot/setup.py | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/redbot/core/data_manager.py b/redbot/core/data_manager.py index a3ee5db44..b2ae3f7b0 100644 --- a/redbot/core/data_manager.py +++ b/redbot/core/data_manager.py @@ -1,4 +1,5 @@ import sys +import os from pathlib import Path from typing import List import hashlib @@ -30,7 +31,13 @@ basic_config_default = { "CORE_PATH_APPEND": "core" } -config_dir = Path(appdirs.AppDirs("Red-DiscordBot").user_config_dir) +config_dir = None +appdir = appdirs.AppDirs("Red-DiscordBot") +if sys.platform == 'linux': + if os.getuid() < 1000: + config_dir = Path(appdir.site_data_dir) +if not config_dir: + config_dir = Path(appdir.user_config_dir) config_file = config_dir / 'config.json' diff --git a/redbot/setup.py b/redbot/setup.py index ded53f505..e10e44d95 100644 --- a/redbot/setup.py +++ b/redbot/setup.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import sys +import os from copy import deepcopy from pathlib import Path @@ -10,9 +11,20 @@ from redbot.core.json_io import JsonIO from redbot.core.data_manager import basic_config_default from redbot.core.cli import confirm +config_dir = None appdir = appdirs.AppDirs("Red-DiscordBot") -config_dir = Path(appdir.user_config_dir) -config_dir.mkdir(parents=True, exist_ok=True) +if sys.platform == 'linux': + if os.getuid() < 1000: + config_dir = Path(appdir.site_data_dir) +if not config_dir: + config_dir = Path(appdir.user_config_dir) +try: + config_dir.mkdir(parents=True, exist_ok=True) +except PermissionError: + print( + "You don't have permission to write to " + "'{}'\nExiting...".format(config_dir)) + sys.exit(1) config_file = config_dir / 'config.json'