-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmavis-installer-3-main-windows.py
172 lines (156 loc) · 7.84 KB
/
mavis-installer-3-main-windows.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Englisch | Peharge: This source code is released under the MIT License.
#
# Usage Rights:
# The source code may be copied, modified, and adapted to individual requirements.
# Users are permitted to use this code in their own projects, both for private and commercial purposes.
# However, it is recommended to modify the code only if you have sufficient programming knowledge,
# as changes could cause unintended errors or security risks.
#
# Dependencies and Additional Frameworks:
# The code relies on the use of various frameworks and executes additional files.
# Some of these files may automatically install further dependencies required for functionality.
# It is strongly recommended to perform installation and configuration in an isolated environment
# (e.g., a virtual environment) to avoid potential conflicts with existing software installations.
#
# Disclaimer:
# Use of the code is entirely at your own risk.
# Peharge assumes no liability for damages, data loss, system errors, or other issues
# that may arise directly or indirectly from the use, modification, or redistribution of the code.
#
# Please read the full terms of the MIT License to familiarize yourself with your rights and obligations.
# Deutsch | Peharge: Dieser Quellcode wird unter der MIT-Lizenz veröffentlicht.
#
# Nutzungsrechte:
# Der Quellcode darf kopiert, bearbeitet und an individuelle Anforderungen angepasst werden.
# Nutzer sind berechtigt, diesen Code in eigenen Projekten zu verwenden, sowohl für private als auch kommerzielle Zwecke.
# Es wird jedoch empfohlen, den Code nur dann anzupassen, wenn Sie über ausreichende Programmierkenntnisse verfügen,
# da Änderungen unbeabsichtigte Fehler oder Sicherheitsrisiken verursachen könnten.
#
# Abhängigkeiten und zusätzliche Frameworks:
# Der Code basiert auf der Nutzung verschiedener Frameworks und führt zusätzliche Dateien aus.
# Einige dieser Dateien könnten automatisch weitere Abhängigkeiten installieren, die für die Funktionalität erforderlich sind.
# Es wird dringend empfohlen, die Installation und Konfiguration in einer isolierten Umgebung (z. B. einer virtuellen Umgebung) durchzuführen,
# um mögliche Konflikte mit bestehenden Softwareinstallationen zu vermeiden.
#
# Haftungsausschluss:
# Die Nutzung des Codes erfolgt vollständig auf eigene Verantwortung.
# Peharge übernimmt keinerlei Haftung für Schäden, Datenverluste, Systemfehler oder andere Probleme,
# die direkt oder indirekt durch die Nutzung, Modifikation oder Weitergabe des Codes entstehen könnten.
#
# Bitte lesen Sie die vollständigen Lizenzbedingungen der MIT-Lizenz, um sich mit Ihren Rechten und Pflichten vertraut zu machen.
# Français | Peharge: Ce code source est publié sous la licence MIT.
#
# Droits d'utilisation:
# Le code source peut être copié, édité et adapté aux besoins individuels.
# Les utilisateurs sont autorisés à utiliser ce code dans leurs propres projets, à des fins privées et commerciales.
# Il est cependant recommandé d'adapter le code uniquement si vous avez des connaissances suffisantes en programmation,
# car les modifications pourraient provoquer des erreurs involontaires ou des risques de sécurité.
#
# Dépendances et frameworks supplémentaires:
# Le code est basé sur l'utilisation de différents frameworks et exécute des fichiers supplémentaires.
# Certains de ces fichiers peuvent installer automatiquement des dépendances supplémentaires requises pour la fonctionnalité.
# Il est fortement recommandé d'effectuer l'installation et la configuration dans un environnement isolé (par exemple un environnement virtuel),
# pour éviter d'éventuels conflits avec les installations de logiciels existantes.
#
# Clause de non-responsabilité:
# L'utilisation du code est entièrement à vos propres risques.
# Peharge n'assume aucune responsabilité pour tout dommage, perte de données, erreurs système ou autres problèmes,
# pouvant découler directement ou indirectement de l'utilisation, de la modification ou de la diffusion du code.
#
# Veuillez lire l'intégralité des termes et conditions de la licence MIT pour vous familiariser avec vos droits et responsabilités.
import os
import sys
# Farbcodes definieren (kleingeschrieben)
red = "\033[91m"
green = "\033[92m"
yellow = "\033[93m"
blue = "\033[94m"
magenta = "\033[95m"
cyan = "\033[96m"
white = "\033[97m"
black = "\033[30m"
orange = "\033[38;5;214m"
reset = "\033[0m"
bold = "\033[1m"
# Logging-Funktion für Fehler
def log_error(message):
"""Protokolliert Fehler in eine Datei."""
try:
with open("error_log.txt", "a") as log_file:
log_file.write(message + "\n")
except Exception as e:
print(f"{red}Error while writing to log file: {e}{reset}")
def run_batch_file(batch_name):
"""Führt die Batch-Datei aus, überprüft, ob sie existiert, und gibt eine passende Fehlermeldung aus."""
file_name = os.path.join(
os.path.expanduser("~"),
"PycharmProjects",
"MAVIS",
f"run-{batch_name}.bat"
)
# Prüft, ob die Datei existiert
if not os.path.exists(file_name):
error_message = f"{red}Error: The file '{file_name}' does not exist.{reset}"
print(error_message)
log_error(f"File not found: {file_name}")
return
# Versucht, die Batch-Datei auszuführen
try:
print(f"Executing file: {file_name}")
os.system(file_name)
print(f"{green}The batch file '{file_name}' was executed successfully.{reset}")
except Exception as e:
error_message = f"{red}Error executing file '{file_name}': {e}{reset}"
print(error_message)
log_error(f"Execution failed for {file_name}: {e}")
def display_versions():
"""Zeigt alle Versionen und zugehörigen Batch-Dateien ohne 'run-' und '.bat'."""
print(f"All MAVIS versions are available here:\n")
versions = {
"mavis-3-main": "MAVIS 3 EAP",
"mavis-3-code": "MAVIS 3 EAP",
"mavis-3-code-pro (not jet)": "MAVIS 3 EAP",
"mavis-3-math": "MAVIS 3 EAP",
"mavis-3-math-pro (not jet)": "MAVIS 3 EAP",
"mavis-3-mini (not jet)": "MAVIS 3 EAP",
"mavis-3-mini-mini (not jet)": "MAVIS 3 EAP",
"mavis-terminal-3": "MAVIS Terminal 3 EAP",
"mavis-3-main-fast": "MAVIS 3 EAP fast start",
"mavis-3-code-fast": "MAVIS 3 EAP fast start",
"mavis-3-code-pro-fast (not jet)": "MAVIS 3 EAP fast start",
"mavis-3-math-fast": "MAVIS 3 EAP fast start",
"mavis-3-math-pro-fast (not jet)": "MAVIS 3 EAP fast start",
"mavis-3-mini-fast (not jet)": "MAVIS 3 EAP fast start",
"mavis-3-mini-mini-fast (not jet)": "MAVIS 3 EAP fast start"
}
# Gruppieren der Versionen für eine saubere Anzeige
grouped_versions = {}
for batch_name, version in versions.items():
if version not in grouped_versions:
grouped_versions[version] = []
grouped_versions[version].append(batch_name)
# Ausgabe der gruppierten Versionen
for i, (version, batch_files) in enumerate(grouped_versions.items(), 1):
print(f"{i}. {version}:")
for j, batch_file in enumerate(batch_files, 1):
print(f" {j}. {batch_file}")
print()
return versions
def get_user_input(versions):
"""Fragt den Benutzer nach der gewünschten MAVIS-Batch-Datei und validiert die Eingabe."""
while True:
user_input = input(f"Enter a MAVIS batch file (e.g. 'mavis-3-code'):").strip()
# Validiert, ob die Eingabe korrekt ist
if user_input in versions:
run_batch_file(user_input)
break
else:
print(f"{red}Error: '{user_input}' is not a valid option. Please try again.{reset}")
if __name__ == "__main__":
try:
versions = display_versions()
get_user_input(versions)
except Exception as e:
print(f"{red}An unexpected error occurred: {e}{reset}")
log_error(f"Unexpected error: {e}")
sys.exit(1)