import subprocess import os import sys import shlex import setup from modules import cmd_args from modules.paths_internal import script_path try: from rich import print except ImportError: pass commandline_args = os.environ.get('COMMANDLINE_ARGS', "") sys.argv += shlex.split(commandline_args) setup.parse_args() args, _ = cmd_args.parser.parse_known_args() git = os.environ.get('GIT', "git") index_url = os.environ.get('INDEX_URL', "") stored_commit_hash = None dir_repos = "repositories" def commit_hash(): global stored_commit_hash if stored_commit_hash is not None: return stored_commit_hash try: stored_commit_hash = run(f"{git} rev-parse HEAD").strip() except Exception: stored_commit_hash = "" return stored_commit_hash def run(command, desc=None, errdesc=None, custom_env=None, live=False): if desc is not None: print(desc) if live: result = subprocess.run(command, shell=True, env=os.environ if custom_env is None else custom_env) if result.returncode != 0: raise RuntimeError(f"""{errdesc or 'Error running command'} Command: {command} Error code: {result.returncode}""") return '' result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, env=os.environ if custom_env is None else custom_env) if result.returncode != 0: raise RuntimeError(f"""{errdesc or 'Error running command'}: {command} code: {result.returncode} {result.stdout.decode(encoding="utf8", errors="ignore") if len(result.stdout)>0 else ''} {result.stderr.decode(encoding="utf8", errors="ignore") if len(result.stderr)>0 else ''} """) return result.stdout.decode(encoding="utf8", errors="ignore") def check_run(command): result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) return result.returncode == 0 def is_installed(package): return setup.installed(package) def repo_dir(name): return os.path.join(script_path, dir_repos, name) def run_python(code, desc=None, errdesc=None): return run(f'"{sys.executable}" -c "{code}"', desc, errdesc) def run_pip(args, desc=None): index_url_line = f' --index-url {index_url}' if index_url != '' else '' return run(f'"{sys.executable}" -m pip {args} --prefer-binary{index_url_line}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}") def check_run_python(code): return check_run(f'"{sys.executable}" -c "{code}"') def git_clone(url, dir, name, commithash=None): setup.clone(url, dir, commithash) def run_extension_installer(dir): setup.run_extension_installer(dir) if __name__ == "__main__": setup.run_setup(False) setup.set_environment() setup.check_torch() setup.log.info(f"Server arguments: {sys.argv[1:]}") import webui webui.webui()