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:
|
def setup(bot: Client) -> None:
|
||||||
"""Add dbrandcog to JARVIS"""
|
"""Add dbrandcog to JARVIS"""
|
||||||
|
if JarvisConfig.from_yaml().urls.get("dbrand_shipping"):
|
||||||
DbrandCog(bot)
|
DbrandCog(bot)
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
"""Load the config for JARVIS"""
|
"""Load the config for JARVIS"""
|
||||||
|
|
||||||
|
|
||||||
from jarvis_core.config import Config
|
from jarvis_core.config import Config
|
||||||
|
|
||||||
|
|
||||||
class JarvisConfig(Config):
|
class JarvisConfig(Config):
|
||||||
REQUIRED = ("token", "mongo", "urls", "redis")
|
REQUIRED = ("token", "mongo", "redis")
|
||||||
OPTIONAL = {
|
OPTIONAL = {
|
||||||
|
"urls": None,
|
||||||
"sync": False,
|
"sync": False,
|
||||||
"log_level": "WARNING",
|
"log_level": "INFO",
|
||||||
"cogs": None,
|
"cogs": None,
|
||||||
"events": True,
|
"events": True,
|
||||||
"gitlab_token": None,
|
"gitlab_token": None,
|
||||||
|
@ -15,3 +18,71 @@ class JarvisConfig(Config):
|
||||||
"reddit": None,
|
"reddit": None,
|
||||||
"rook_token": 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