From 9059824f5a6ecdd6718aefdaa0576d214584cec6 Mon Sep 17 00:00:00 2001 From: Faraphel Date: Sat, 3 Sep 2022 23:49:21 +0200 Subject: [PATCH] added argument for the cli, gui and cli source are now inside the interface directory --- main.pyw | 21 ++++++++++------ source/interface/__init__.py | 0 source/interface/cli/__init__.py | 0 source/{ => interface}/cli/install.py | 25 +++++++++++++------ source/{ => interface}/gui/__init__.py | 0 source/{ => interface}/gui/install.py | 5 ++-- source/{ => interface}/gui/mod_settings.py | 0 source/{ => interface}/gui/mystuff.py | 0 .../{ => interface}/gui/preview/__init__.py | 2 +- .../gui/preview/track_formatting.py | 2 +- .../gui/preview/track_selecting.py | 4 +-- .../gui/preview/track_sorting.py | 4 +-- source/mkw/ModSettings/SettingsType/String.py | 2 +- 13 files changed, 41 insertions(+), 24 deletions(-) create mode 100644 source/interface/__init__.py create mode 100644 source/interface/cli/__init__.py rename source/{ => interface}/cli/install.py (60%) rename source/{ => interface}/gui/__init__.py (100%) rename source/{ => interface}/gui/install.py (99%) rename source/{ => interface}/gui/mod_settings.py (100%) rename source/{ => interface}/gui/mystuff.py (100%) rename source/{ => interface}/gui/preview/__init__.py (92%) rename source/{ => interface}/gui/preview/track_formatting.py (98%) rename source/{ => interface}/gui/preview/track_selecting.py (96%) rename source/{ => interface}/gui/preview/track_sorting.py (95%) diff --git a/main.pyw b/main.pyw index 17a3ee7..24d9b26 100644 --- a/main.pyw +++ b/main.pyw @@ -12,20 +12,25 @@ translater = load_language(options.language.get()) def main_gui(): - from source.gui import install + from source.interface.gui import install self.window = install.Window(options) self.window.run() -def main_cli(): - from source.cli import install - install.cli(options) +def main_cli(argparser: argparse.ArgumentParser): + from source.interface.cli import install + install.cli(options, argparser) -parser = argparse.ArgumentParser() -parser.add_argument("-i", "--interface", choices=["gui", "cli"], default="gui") -args = parser.parse_args() +argparser = argparse.ArgumentParser() +argparser.add_argument( + "-i", "--interface", + choices=["gui", "cli"], + default="gui", + help="should the installer be started with a graphical interface or with the command line interface" +) +args, _ = argparser.parse_known_args() match args.interface: case "gui": main_gui() - case "cli": main_cli() + case "cli": main_cli(argparser) diff --git a/source/interface/__init__.py b/source/interface/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/interface/cli/__init__.py b/source/interface/cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/cli/install.py b/source/interface/cli/install.py similarity index 60% rename from source/cli/install.py rename to source/interface/cli/install.py index aedb94d..6b9e6d4 100644 --- a/source/cli/install.py +++ b/source/interface/cli/install.py @@ -1,3 +1,4 @@ +import argparse from pathlib import Path from source.mkw.Game import Game @@ -6,26 +7,36 @@ from source.translation import translate as _ from source.mkw.collection.Extension import Extension -def cli(options): - print(_("TITLE_INSTALL")) +def cli(options, argparser: argparse.ArgumentParser): + argparser.add_argument("-m", "--mod", help="name of the mod to install") + argparser.add_argument("-s", "--source", help="path to the original game") + argparser.add_argument("-d", "--dest", help="destination directory of the patched game") + argparser.add_argument("-ot", "--output_type", help="format of the patched game") + args = argparser.parse_args() packs = [] for pack in Path("./Pack/").iterdir(): packs.append(pack) - mod_name = input(_("TEXT_INPUT_MOD_NAME") % [pack.name for pack in packs]) + mod_name = args.mod + choices = [pack.name for pack in packs] + while mod_name is None or mod_name not in choices: mod_name = input(_("TEXT_INPUT_MOD_NAME") % choices) mod_config = ModConfig.from_file(Path(f"./Pack/{mod_name}/mod_config.json")) - source_path = input(_("TEXT_INPUT_SOURCE_PATH")) + source_path = args.source + if source_path is None: source_path = input(_("TEXT_INPUT_SOURCE_PATH")) game = Game(source_path) - destination_directory = input(_("TEXT_INPUT_DESTINATION_DIRECTORY")) + destination_directory = args.dest + if destination_directory is None: destination_directory = input(_("TEXT_INPUT_DESTINATION_DIRECTORY")) destination_path = Path(destination_directory) - output_name = input(_("TEXT_INPUT_OUPUT_TYPE") % [extension.name for extension in Extension]) + output_name = args.output_type + choices = [extension.name for extension in Extension] + if output_name is None or mod_name not in choices: output_name = input(_("TEXT_INPUT_OUPUT_TYPE") % choices) output_type = Extension[output_name] - progressbar_max: int = 30 + progressbar_max: int = 40 title: str = "" description: str = "" diff --git a/source/gui/__init__.py b/source/interface/gui/__init__.py similarity index 100% rename from source/gui/__init__.py rename to source/interface/gui/__init__.py diff --git a/source/gui/install.py b/source/interface/gui/install.py similarity index 99% rename from source/gui/install.py rename to source/interface/gui/install.py index 65b5fb8..c78899d 100644 --- a/source/gui/install.py +++ b/source/interface/gui/install.py @@ -9,7 +9,8 @@ from tkinter import messagebox import webbrowser from typing import Generator -from source.gui import better_gui_error, mystuff, mod_settings +from source.interface.gui import better_gui_error +from source.interface.gui import mod_settings, mystuff from source.mkw.Game import Game from source.mkw.ModConfig import ModConfig from source.option import Options @@ -373,7 +374,7 @@ class ButtonInstall(ttk.Button): if available_space_local < minimum_space_available: if not messagebox.askokcancel( _("WARNING"), - _("WARNING_LOW_SPACE_CONTINUE") % (Path(".").resolve().drive, available_space_local/Go) + _("WARNING_LOW_SPACE_CONTINUE") % (Path(".").resolve().drive, available_space_local / Go) ): return diff --git a/source/gui/mod_settings.py b/source/interface/gui/mod_settings.py similarity index 100% rename from source/gui/mod_settings.py rename to source/interface/gui/mod_settings.py diff --git a/source/gui/mystuff.py b/source/interface/gui/mystuff.py similarity index 100% rename from source/gui/mystuff.py rename to source/interface/gui/mystuff.py diff --git a/source/gui/preview/__init__.py b/source/interface/gui/preview/__init__.py similarity index 92% rename from source/gui/preview/__init__.py rename to source/interface/gui/preview/__init__.py index 68e8cb6..9c537f0 100644 --- a/source/gui/preview/__init__.py +++ b/source/interface/gui/preview/__init__.py @@ -36,4 +36,4 @@ class AbstractPreviewWindow(tkinter.Toplevel, ABC): raise InvalidPreviewWindowName(name) -from source.gui.preview import track_formatting, track_selecting, track_sorting +from source.interface.gui.preview import track_formatting, track_selecting, track_sorting diff --git a/source/gui/preview/track_formatting.py b/source/interface/gui/preview/track_formatting.py similarity index 98% rename from source/gui/preview/track_formatting.py rename to source/interface/gui/preview/track_formatting.py index a9096c7..b5950c8 100644 --- a/source/gui/preview/track_formatting.py +++ b/source/interface/gui/preview/track_formatting.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING import re from source.mkw.collection import MKWColor -from source.gui.preview import AbstractPreviewWindow +from source.interface.gui.preview import AbstractPreviewWindow if TYPE_CHECKING: from source.mkw.ModConfig import ModConfig diff --git a/source/gui/preview/track_selecting.py b/source/interface/gui/preview/track_selecting.py similarity index 96% rename from source/gui/preview/track_selecting.py rename to source/interface/gui/preview/track_selecting.py index db5564e..c0b700c 100644 --- a/source/gui/preview/track_selecting.py +++ b/source/interface/gui/preview/track_selecting.py @@ -3,8 +3,8 @@ from tkinter import ttk from typing import TYPE_CHECKING from source.mkw.collection import MKWColor -from source.gui.preview import AbstractPreviewWindow -from source.gui import better_gui_error +from source.interface.gui.preview import AbstractPreviewWindow +from source.interface.gui import better_gui_error if TYPE_CHECKING: from source.mkw.ModConfig import ModConfig diff --git a/source/gui/preview/track_sorting.py b/source/interface/gui/preview/track_sorting.py similarity index 95% rename from source/gui/preview/track_sorting.py rename to source/interface/gui/preview/track_sorting.py index 3f3b434..57e6d2a 100644 --- a/source/gui/preview/track_sorting.py +++ b/source/interface/gui/preview/track_sorting.py @@ -3,8 +3,8 @@ from tkinter import ttk from typing import TYPE_CHECKING from source.mkw.collection import MKWColor -from source.gui.preview import AbstractPreviewWindow -from source.gui import better_gui_error +from source.interface.gui.preview import AbstractPreviewWindow +from source.interface.gui import better_gui_error if TYPE_CHECKING: from source.mkw.ModConfig import ModConfig diff --git a/source/mkw/ModSettings/SettingsType/String.py b/source/mkw/ModSettings/SettingsType/String.py index d7aad72..c082818 100644 --- a/source/mkw/ModSettings/SettingsType/String.py +++ b/source/mkw/ModSettings/SettingsType/String.py @@ -1,5 +1,5 @@ from source.mkw.ModSettings.AbstractModSettings import AbstractModSettings -from source.gui.preview import AbstractPreviewWindow +from source.interface.gui.preview import AbstractPreviewWindow class String(AbstractModSettings):