MindSearch / docker /msdl /__main__.py
vansin's picture
feat: update
dc9e27a
# msdl/__main__.py
import signal
import sys
import argparse
import os
from pathlib import Path
from msdl.config import (
BACKEND_DOCKERFILE_DIR,
FRONTEND_DOCKERFILE_DIR,
PACKAGE_DIR,
PROJECT_ROOT,
REACT_DOCKERFILE,
TEMP_DIR,
TEMPLATE_FILES,
)
from msdl.docker_manager import (
check_docker_install,
run_docker_compose,
stop_and_remove_containers,
update_docker_compose_paths,
)
from msdl.i18n import (
setup_i18n,
t,
)
from msdl.utils import (
copy_templates_to_temp,
copy_backend_dockerfile,
copy_frontend_dockerfile,
modify_docker_compose,
)
from msdl.user_interaction import get_user_choices
def signal_handler(signum, frame):
print(t("TERMINATION_SIGNAL"))
stop_and_remove_containers()
sys.exit(0)
def parse_args():
parser = argparse.ArgumentParser(description=t("CLI_DESCRIPTION"))
parser.add_argument('--language', '-l',
help=t("LANGUAGE_HELP"),
choices=["en", "zh_CN"],
default=None)
parser.add_argument('--config-language', action='store_true',
help=t("CONFIG_LANGUAGE_HELP"))
return parser.parse_args()
def main():
# Setup signal handler
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
# Initialize i18n
setup_i18n()
# Parse command line arguments
args = parse_args()
if args.language:
# set_language(args.language)
# Reinitialize i18n with new language
setup_i18n()
try:
# Check if TEMP_DIR exists, if not, create it
if not TEMP_DIR.exists():
TEMP_DIR.mkdir(parents=True, exist_ok=True)
print(t("TEMP_DIR_CREATED", dir=str(TEMP_DIR)))
check_docker_install()
# Get user choices using the new module
backend_language, model, model_format, search_engine = get_user_choices()
# Copy template files
copy_templates_to_temp(TEMPLATE_FILES)
# Copy Dockerfiles
copy_backend_dockerfile(model)
copy_frontend_dockerfile()
# Update paths in docker-compose.yml
update_docker_compose_paths()
# Modify docker-compose.yml based on user choices
modify_docker_compose(model, backend_language, model_format, search_engine)
stop_and_remove_containers()
run_docker_compose()
print(t("DOCKER_LAUNCHER_COMPLETE"))
except KeyboardInterrupt:
print(t("KEYBOARD_INTERRUPT"))
# stop_and_remove_containers()
sys.exit(0)
except Exception as e:
print(t("UNEXPECTED_ERROR", error=str(e)))
# stop_and_remove_containers()
sys.exit(1)
if __name__ == "__main__":
main()