59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
import os, sys
|
|
import logging
|
|
import shutil
|
|
import pathlib
|
|
import urllib.request
|
|
import time
|
|
from pathlib import Path
|
|
import zipfile
|
|
|
|
root_dir = pathlib.Path(__file__).parent.resolve()
|
|
logger = logging.getLogger("start")
|
|
|
|
def start():
|
|
global logger
|
|
logger.debug(f"---------------- START ----------------")
|
|
logger.debug(f"Root path: {root_dir}")
|
|
|
|
pathlib.Path(os.path.join(root_dir, "libs")).mkdir(parents=True, exist_ok=True)
|
|
download_app()
|
|
from libs.app.utils import Utils, get_logger, create_venv, download_file, kargs_to_array
|
|
create_venv()
|
|
args = kargs_to_array()
|
|
# args.append("updateApp=False") # NEVER SET TRUE
|
|
# args.append("updateLibs=True")
|
|
utils = Utils()
|
|
|
|
main_file_path = os.path.join(root_dir, "libs","app", "main.py")
|
|
pid = utils.new_python_process(main_file_path, args)
|
|
logger.info(f"Main process running. PID {pid} - Args: {args}")
|
|
logger.info(f"---------------- END ----------------")
|
|
|
|
def download_app():
|
|
url = f"{default_repository}/app/app.zip"
|
|
path = os.path.join(root_dir, "libs", "app.zip")
|
|
if(not os.path.exists(path)):
|
|
logger.debug(f"Downloading from URL: {url} to {path}")
|
|
urllib.request.urlretrieve(url, path)
|
|
logger.debug(f"Extracting all from {path}")
|
|
with zipfile.ZipFile(path, 'r') as zip_ref:
|
|
zip_ref.extractall(Path(path).parent.absolute())
|
|
|
|
|
|
|
|
default_repository = "http://n0sys.duckdns.org:30303/libs"
|
|
|
|
logger.addHandler(logging.StreamHandler())
|
|
app_logs_path = os.path.join(root_dir, "logs", "app")
|
|
shutil.rmtree(os.path.join(root_dir, "logs"), ignore_errors=True)
|
|
pathlib.Path(app_logs_path).mkdir(parents=True, exist_ok=True)
|
|
logger.addHandler(logging.FileHandler(os.path.join(app_logs_path,'start.log'), mode="a", encoding="utf-8"))
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
start()
|
|
except Exception as e:
|
|
logger.exception("ERROR")
|
|
time.sleep(30)
|
|
|