This commit is contained in:
Евгений Храмов 2023-02-20 10:54:37 +03:00
parent 3de8242305
commit ad78554061

24
hlna.py

@ -1,32 +1,42 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import os import os
import yaml import yaml
import threading import threading
from pathlib import Path from pathlib import Path
import click import click
import colorama import colorama
home_dir = Path.home() home_dir = Path.home()
dir_server = f"{home_dir}/ARK_Servers/" dir_server = f"{home_dir}/ARK_Servers/"
config_hlna = f"{home_dir}/.config/hlna/" config_hlna = f"{home_dir}/.config/hlna/"
mods_id = "" mods_id = ""
listen_server = True listen_server = True
@click.group() @click.group()
def hlna(): def hlna():
pass pass
list_config = next(os.walk(config_hlna), (None, None, []))[2] # [] if no file list_config = next(os.walk(config_hlna), (None, None, []))[2] # [] if no file
x = list_config.count('.directory') x = list_config.count('.directory')
if x>0: if x>0:
list_config.remove('.directory') list_config.remove('.directory')
def print_line(text): def print_line(text):
"Добавление тире вокруг текста, покраска" "Добавление тире вокруг текста, покраска"
print(colorama.Fore.YELLOW + "-"*30) print(colorama.Fore.YELLOW + "-"*30)
print(colorama.Fore.GREEN + text) print(colorama.Fore.GREEN + text)
print(colorama.Fore.YELLOW + "-"*30 + colorama.Style.RESET_ALL) print(colorama.Fore.YELLOW + "-"*30 + colorama.Style.RESET_ALL)
def create_dir(directory): def create_dir(directory):
"Проверка и создание директории" "Проверка и создание директории"
if not os.path.exists(directory): if not os.path.exists(directory):
os.mkdir(directory) os.mkdir(directory)
def check_int(number=""): def check_int(number=""):
"Проверка на ввод числа" "Проверка на ввод числа"
while True: while True:
@ -42,6 +52,8 @@ def check_int(number=""):
print("Введите число") print("Введите число")
create_dir(dir_server) create_dir(dir_server)
create_dir(config_hlna) create_dir(config_hlna)
@hlna.command(help='Для конфигурирования параметров запускаемого сервера или кластера серверов') @hlna.command(help='Для конфигурирования параметров запускаемого сервера или кластера серверов')
def config(map_server=list_config): def config(map_server=list_config):
query_p = [] query_p = []
@ -153,6 +165,8 @@ def config(map_server=list_config):
if max_players == "": if max_players == "":
max_players = 70 max_players = 70
yaml_create(cluster_server, map_server, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override) yaml_create(cluster_server, map_server, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override)
def yaml_create(cluster_server, map_server, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override): def yaml_create(cluster_server, map_server, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override):
settings_hlna = [ settings_hlna = [
{ {
@ -174,6 +188,8 @@ def yaml_create(cluster_server, map_server, name_server, port_server, query_port
with open(config_hlna + f"{map_server[-1]}", 'w') as yamlfile: with open(config_hlna + f"{map_server[-1]}", 'w') as yamlfile:
data = yaml.dump(settings_hlna, yamlfile) data = yaml.dump(settings_hlna, yamlfile)
print(colorama.Fore.GREEN + "Конфиг создан" + colorama.Style.RESET_ALL) print(colorama.Fore.GREEN + "Конфиг создан" + colorama.Style.RESET_ALL)
@hlna.command() @hlna.command()
def servers(map_server=list_config): def servers(map_server=list_config):
if map_server==[]: if map_server==[]:
@ -192,6 +208,8 @@ def servers(map_server=list_config):
Моды: {mods_id} Моды: {mods_id}
Кластер id: {cluster_id}""") Кластер id: {cluster_id}""")
print("\n") print("\n")
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера') @hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
def start(map_server=list_config): def start(map_server=list_config):
map_choise = [] map_choise = []
@ -227,6 +245,8 @@ def start(map_server=list_config):
os.system(f"./ShooterGameServer {i}?SessionName={name_server}?Port={port_server}?QueryPort={query_port}?MaxPlayers={max_players}?GameModIds={mods_id}?listen={listen_server} -clusterid={cluster_id} -ClusterDirOverride={cluster_dir_ovverride}") os.system(f"./ShooterGameServer {i}?SessionName={name_server}?Port={port_server}?QueryPort={query_port}?MaxPlayers={max_players}?GameModIds={mods_id}?listen={listen_server} -clusterid={cluster_id} -ClusterDirOverride={cluster_dir_ovverride}")
threads = threading.Thread(target=start, args=(i,)) threads = threading.Thread(target=start, args=(i,))
threads.start() threads.start()
def read_yaml(map_server): def read_yaml(map_server):
with open(f"{home_dir}/.config/hlna/{map_server}", "r") as yamlfile: with open(f"{home_dir}/.config/hlna/{map_server}", "r") as yamlfile:
data = yaml.load(yamlfile, Loader=yaml.FullLoader) data = yaml.load(yamlfile, Loader=yaml.FullLoader)
@ -245,5 +265,7 @@ def read_yaml(map_server):
print(cluster_id) print(cluster_id)
print(cluster_dir_ovverride) print(cluster_dir_ovverride)
return cluster_server, name_server, port_server, query_port, password_server, max_players, dir_server, mods_id, listen_server, cluster_id, cluster_dir_ovverride return cluster_server, name_server, port_server, query_port, password_server, max_players, dir_server, mods_id, listen_server, cluster_id, cluster_dir_ovverride
if __name__ == '__main__': if __name__ == '__main__':
hlna() hlna()