Add .env loading, optional dbrand URLs
This commit is contained in:
parent
1016ce317c
commit
5d44d25087
3 changed files with 97 additions and 3 deletions
22
.env.example
Normal file
22
.env.example
Normal file
|
@ -0,0 +1,22 @@
|
|||
BOT_TOKEN=
|
||||
TWITTER_CONSUMER_KEY=
|
||||
TWITTER_CONSUMER_SECRET=
|
||||
TWITTER_ACCESS_TOKEN=
|
||||
TWITTER_ACCESS_SECRET=
|
||||
REDDIT_SECRET=
|
||||
REDDIT_CLIENT=
|
||||
MONGODB_HOST=
|
||||
MONGODB_USER=
|
||||
MONGODB_PASS=
|
||||
MONGODB_PORT=
|
||||
MONGODB_DATABASE=
|
||||
MAX_MESSAGES=
|
||||
GITLAB_TOKEN=
|
||||
LOG_LEVEL=
|
||||
SYNC=
|
||||
ROOK=
|
||||
REDIS_HOST=
|
||||
REDIS_USER=
|
||||
REDIS_PASSWORD=
|
||||
PROMETHEUS_GATEWAY=
|
||||
PROMETHEUS_JOB=
|
|
@ -361,4 +361,5 @@ class DbrandCog(Extension):
|
|||
|
||||
def setup(bot: Client) -> None:
|
||||
"""Add dbrandcog to JARVIS"""
|
||||
DbrandCog(bot)
|
||||
if JarvisConfig.from_yaml().urls.get("dbrand_shipping"):
|
||||
DbrandCog(bot)
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
"""Load the config for JARVIS"""
|
||||
|
||||
|
||||
from jarvis_core.config import Config
|
||||
|
||||
|
||||
class JarvisConfig(Config):
|
||||
REQUIRED = ("token", "mongo", "urls", "redis")
|
||||
REQUIRED = ("token", "mongo", "redis")
|
||||
OPTIONAL = {
|
||||
"urls": None,
|
||||
"sync": False,
|
||||
"log_level": "WARNING",
|
||||
"log_level": "INFO",
|
||||
"cogs": None,
|
||||
"events": True,
|
||||
"gitlab_token": None,
|
||||
|
@ -15,3 +18,71 @@ class JarvisConfig(Config):
|
|||
"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
|
||||
|
|
Loading…
Add table
Reference in a new issue