from sys import exit from dotenv import load_dotenv, dotenv_values from logging import ( FileHandler, StreamHandler, INFO, basicConfig, error as log_error, info as log_info, getLogger, ERROR, ) from os import path, environ, remove from pymongo.mongo_client import MongoClient from pymongo.server_api import ServerApi from subprocess import run as srun 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") basicConfig( format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", handlers=[FileHandler("log.txt"), StreamHandler()], level=INFO, ) load_dotenv("config.env", override=True) try: if bool(environ.get("_____REMOVE_THIS_LINE_____")): log_error("The README.md file there to be read! Exiting now!") exit(1) except: pass BOT_TOKEN = environ.get("BOT_TOKEN", "") if len(BOT_TOKEN) == 0: log_error("BOT_TOKEN variable is missing! Exiting now") exit(1) BOT_ID = BOT_TOKEN.split(":", 1)[0] DATABASE_URL = environ.get("DATABASE_URL", "") if len(DATABASE_URL) == 0: DATABASE_URL = None if DATABASE_URL is not None: 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: log_error(f"Database ERROR: {e}") UPSTREAM_REPO = environ.get("UPSTREAM_REPO", "") if len(UPSTREAM_REPO) == 0: UPSTREAM_REPO = None UPSTREAM_BRANCH = environ.get("UPSTREAM_BRANCH", "") if len(UPSTREAM_BRANCH) == 0: UPSTREAM_BRANCH = "master" if UPSTREAM_REPO is not None: if path.exists(".git"): srun(["rm", "-rf", ".git"]) update = srun( [ f"git init -q \ && git config --global user.email e.anastayyar@gmail.com \ && git config --global user.name mltb \ && 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 update.returncode == 0: log_info("Successfully updated with latest commit from UPSTREAM_REPO") else: log_error( "Something went wrong while updating, check UPSTREAM_REPO if valid or not!" )