jarvis-bot/jarvis/config.py

88 lines
2.6 KiB
Python

"""Load the config for JARVIS"""
from jarvis_core.config import Config
class JarvisConfig(Config):
REQUIRED = ("token", "mongo", "redis")
OPTIONAL = {
"urls": None,
"sync": False,
"log_level": "INFO",
"cogs": None,
"events": True,
"gitlab_token": None,
"max_messages": 1000,
"twitter": None,
"reddit": None,
"rook_token": None,
}
ENV_REQUIRED = [
"TOKEN",
"MONGODB_HOST",
"MONGODB_USER",
"MONGODB_PASS",
"MONGODB_PORT",
"MONGODB_DATABASE",
"REDIS_HOST",
"REDIS_USER",
"REDIS_PASS",
]
ENV_OPTIONAL = {
"MAX_MESSAGES": 10000,
"GITLAB_TOKEN": None,
"LOG_LEVEL": "INFO",
"SYNC": False,
"ROOK": None,
"REDDIT_SECRET": None,
"REDDIT_CLIENT": None,
"TWITTER_CONSUMER_KEY": None,
"TWITTER_CONSUMER_SECRET": None,
"TWITTER_ACCESS_TOKEN": None,
"TWITTER_ACCESS_SECRET": None,
"URLS_DBRAND_SHIPPING": None,
}
@classmethod
def _process_env(cls, **kwargs) -> dict:
"""Process environment variables into usable info."""
data = {}
mongo = {"connect": {}, "database": ""}
redis = {}
twitter = {}
reddit = {}
urls = {}
for item, value in kwargs.items():
if item.startswith("MONGODB"):
key = item.split("_")[1].lower()
if key == "database":
mongo[key] = value
else:
mongo["connect"][key] = value
elif item.startswith("REDIS"):
key = item.split("_")[1].lower()
redis[key] = value
elif item.startswith("TWITTER"):
key = "_".join(item.split("_")[1:]).lower()
twitter[key] = value
elif item.startswith("REDDIT"):
key = item.split("_")[1].lower()
reddit[key] = value
elif item.startswith("URLS_"):
key = "_".join(item.split("_")[1:]).lower()
urls[key] = value
else:
if item == "SYNC":
value = value.lower() == "True"
data[item.lower()] = value
data["mongo"] = mongo
data["redis"] = redis
if all(x is not None for x in reddit.values()):
data["reddit"] = reddit
if all(x is not None for x in twitter.values()):
data["twitter"] = twitter
data["urls"] = {k: v for k, v in urls if v}
return data