diff --git a/dodo.py b/dodo.py index 73f42de..cb4b9ec 100755 --- a/dodo.py +++ b/dodo.py @@ -27,6 +27,7 @@ if x>0: list_config.remove('.directory') + def logging(l): "Записываем логи в файл" with open(dir_server + "logs", "a") as filelog: @@ -77,6 +78,17 @@ create_dir(dir_server) create_dir(config_dodo) +@dodo.command(help='Установка модов, укажите через запятую id модов') +@click.option('--id', default="", help='id модификаций из мастерской steam') +def modinstall(id, map_server=list_config): + print(id) + print(type(id)) + print("Выберите карты, которым добавить моды") + map_server=choose_map(map_server) + print("map_server=",map_server) + print("Перезагрузите сервера для установки модов") + + @dodo.command(help='Для конфигурирования параметров запускаемого сервера или кластера серверов') def config(map_server=list_config): query_p = [] @@ -239,31 +251,10 @@ def servers(map_servers=list_config): @dodo.command(help='Для запуска, сконфигурированного сервера или кластера') def start(map_server=list_config): - map_choise = [] - while True: - "Проверка на выбор имеющихся карт" - check = True - for i in range(len(map_server)): - print(f"{i+1}) {map_server[i]}") - - map_list = input("Выбери карты для запуска в формате 1 2 3 или 1,2,3") - map_list = map_list.replace(',', ' ') - map_list = list(set(map_list.split())) - try: - for s in map_list: - if int(s) > len(map_server): - check = False - if len(map_list) <= len(map_server) and check == True: - break - except: - logging(traceback.format_exc()) - logging(f"Ошибка при выборе карт для запуска, пользователь ввел - {map_list}") - print("Неправильный ввод") - - - for j in str(map_list): - map_choise.append(map_server[int(j) - 1]) - map_server = map_choise + if map_server==[]: + return print("Нет карт для запуска") + print("Выберите карты для запуска") + map_server = choose_map(map_server) for i in map_server: cluster_server, name_server, port_server, query_port, password_server, max_players, dir_server, mods_id, listen_server, cluster_id, cluster_dir_ovverride = read_yaml(i) @@ -280,6 +271,34 @@ def start(map_server=list_config): else: print("Сервер не установлен, проверьте, достаточно ли места на диске для установки карты") + +def choose_map(map_server): + map_choise = [] + while True: + "Проверка на выбор имеющихся карт" + check = True + for i in range(len(map_server)): + print(f"{i + 1}) {map_server[i]}") + + map_list = input("Выбери карты в формате 1 2 3 или 1,2,3") + map_list = map_list.replace(',', ' ') + map_list = list(set(map_list.split())) + try: + for s in map_list: + if int(s) > len(map_server): + check = False + if len(map_list) <= len(map_server) and check == True: + break + except: + logging(traceback.format_exc()) + logging(f"Ошибка при выборе карт для запуска, пользователь ввел - {map_list}") + print("Неправильный ввод") + for j in str(map_list): + map_choise.append(map_server[int(j) - 1]) + map_server = map_choise + return map_server + + def read_yaml(map_server): with open(f"{home_dir}/.config/dodo/{map_server}", "r") as yamlfile: data = yaml.load(yamlfile, Loader=yaml.FullLoader)