README / update.py
ryuzakinear190's picture
Upload 4 files
b4c6b53 verified
from dotenv import load_dotenv, dotenv_values
from http.client import responses
from logging import (
basicConfig,
getLogger,
ERROR,
INFO,
)
from os import (
environ,
path,
remove,
)
from pymongo.mongo_client import MongoClient
from pymongo.server_api import ServerApi
from requests import get
from subprocess import run
basicConfig(
format="{asctime} - [{levelname[0]}] {name} [{module}:{lineno}] - {message}",
datefmt="%Y-%m-%d %H:%M:%S",
style="{",
level=INFO,
)
LOGGER = getLogger("update")
getLogger("pymongo").setLevel(ERROR)
if path.exists("log.txt"):
with open("log.txt", "r+") as f:
f.truncate(0)
if path.exists("rlog.txt"):
remove("rlog.txt")
if not path.exists("config.env"):
if CONFIG_URL := environ.get("CONFIG_URL"):
LOGGER.info("CONFIG_URL is found! Downloading CONFIG_URL...")
req = get(
url=CONFIG_URL,
timeout=10,
allow_redirects=True,
)
if req.ok:
with open("config.env", "wb+") as file:
file.write(req.content)
else:
LOGGER.error(f"[{req.status_code}] {responses[req.status_code]}")
else:
LOGGER.warning("CONFIG_URL is not found! Using local config.env instead...")
load_dotenv("config.env", override=True)
if bool(environ.get("_____REMOVE_THIS_LINE_____")):
LOGGER.error("The README.md file there to be read!")
exit()
BOT_TOKEN = environ.get("BOT_TOKEN", "")
if len(BOT_TOKEN) == 0:
LOGGER.error("BOT_TOKEN is not found!")
exit(1)
BOT_ID = BOT_TOKEN.split(":", 1)[0]
DATABASE_URL = environ.get("DATABASE_URL", "")
if len(DATABASE_URL) == 0:
DATABASE_URL = None
LOGGER.warning("DATABASE_URL is not found!")
else:
try:
conn = MongoClient(
DATABASE_URL,
server_api=ServerApi("1"),
)
db = conn.mltb
old_config = db.settings.deployConfig.find_one({"_id": BOT_ID})
config_dict = db.settings.config.find_one({"_id": BOT_ID})
if old_config is not None:
del old_config["_id"]
if (
old_config is not None
and old_config == dict(dotenv_values("config.env"))
or old_config is None
) and config_dict is not None:
environ["UPSTREAM_REPO"] = config_dict["UPSTREAM_REPO"]
environ["UPSTREAM_BRANCH"] = config_dict["UPSTREAM_BRANCH"]
conn.close()
except Exception as e:
LOGGER.error(f"DATABASE ERROR! ERROR: {e}")
UPSTREAM_REPO = environ.get("UPSTREAM_REPO", "")
if len(UPSTREAM_REPO) == 0:
UPSTREAM_REPO = None
else:
if UPSTREAM_REPO.startswith("#"):
UPSTREAM_REPO = None
UPSTREAM_BRANCH = environ.get("UPSTREAM_BRANCH", "")
if len(UPSTREAM_BRANCH) == 0:
UPSTREAM_BRANCH = None
else:
if UPSTREAM_BRANCH.startswith("#"):
UPSTREAM_BRANCH = None
if (
UPSTREAM_REPO
and UPSTREAM_BRANCH
):
if path.exists(".git"):
run(["rm -rf .git"], shell=True)
process = run([
f"git init -q \
&& git config --global user.email kqruumi@gmail.com \
&& git config --global user.name KQRM \
&& git add . \
&& git commit -sm update -q \
&& git remote add origin {UPSTREAM_REPO} \
&& git fetch origin -q \
&& git reset --hard origin/{UPSTREAM_BRANCH} -q"
], shell=True)
if process.returncode == 0:
LOGGER.info("Successfully updated with latest commit from UPSTREAM_REPO!")
else:
LOGGER.error("Something wrong while updating! Check UPSTREAM_REPO if valid or not!")
else:
LOGGER.warning("UPSTREAM_REPO is not found!")
LOGGER.warning("UPSTREAM_BRANCH is not found!")