diff options
Diffstat (limited to 'src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java')
-rw-r--r-- | src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java new file mode 100644 index 0000000..2efd5b8 --- /dev/null +++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java @@ -0,0 +1,90 @@ +// SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk> +// SPDX-License-Identifier: GPL-3.0-or-later + +package dk.biks.bachelorizer; + +import java.lang.UnsupportedOperationException; +import java.util.Arrays; + +/* TODO +import dk.biks.bachelorizer.view.Oneshot; +import dk.biks.bachelorizer.view.Prompt; +import dk.biks.bachelorizer.view.Pipe; +import dk.biks.bachelorizer.view.Screen; +*/ +import dk.biks.bachelorizer.view.Window; + +/// Bachelorizer - bachelor programme registrar +/// +/// Tool for registering students +/// for activities in their bachelor programme. +/// +/// Runner class spawning an interactive or non-interactive application +/// based on passed arguments +/// +/// Multi-framework MVC structure inspired by project Криптоанализатор +/// written by Александр Хмелев <akhmelev@gmail.com>. +/// +/// * v0.0.1-draft +/// * initial release, as part of delivery "Portfolio 1" +/// +/// @version 0.0.1-draft +/// @see <https://moodle.ruc.dk/mod/assign/view.php?id=523186> +/// @see <https://github.com/demologin/CryptoAnalyzerLed> +public class Main { + + /// Default constructor + /// + /// @param args command-line arguments or default demo data + public Main(final String[] args) { + + switch (uiFromArgs(args)) { + case "gui" -> { Window.main(args); } +// TODO case "tui" -> { Screen.main(args); } +// TODO case "cli" -> { Line.main(args); } + default -> { + throw new UnsupportedOperationException( + "Not yet implemented."); + } + } + } + + /// JVM entry point + /// + /// @param args command-line arguments + public static void main(String[] args) { + + // inject initial sample data unless passed as arguments + if ((args.length == 0) + || (!Arrays.stream(args).anyMatch( + s -> s != null && !s.startsWith("-"))) + ) { + args = new String[] { + "Jonas Smedegaard", + "CS-SMC2", + "CS-SMC3", + }; + } + + new Main(args); + } + + /// minimal argument parser to detect explicit UI choice + /// + /// @param args command-line arguments + /// @return choice of UI as String + public static String uiFromArgs(String[] args) { + // TODO: make "cli" the default when implemented + String defaultUI = "gui"; + + for (String arg : args) { + if (arg.matches("--(gui|tui|cli)")) { + return (arg.length() == 2) + ? defaultUI + : arg.substring(2); + } + } + + return defaultUI; + } +} |