Add argument parsing

This commit is contained in:
Nathan McRae 2025-01-24 23:23:29 -08:00
parent 5a3df459f9
commit 591d431226
2 changed files with 47 additions and 3 deletions

View File

@ -1,6 +1,6 @@
$Env:JAVA_HOME = "C:\Users\nathanm\Downloads\openjdk-23.0.1_windows-x64_bin\jdk-23.0.1" $Env:JAVA_HOME = "C:\Users\nathanm\Downloads\openjdk-23.0.1_windows-x64_bin\jdk-23.0.1"
$Env:PATH = "C:\Users\nathanm\Downloads\openjdk-23.0.1_windows-x64_bin\jdk-23.0.1\bin;$($Env:PATH)" $Env:PATH = "C:\Users\nathanm\Downloads\openjdk-23.0.1_windows-x64_bin\jdk-23.0.1\bin;$($Env:PATH)"
$Env:PATH_TO_FX="C:\Users\nathanm\Downloads\openjfx-23.0.1_windows-x64_bin-sdk\javafx-sdk-23.0.1\lib" $Env:PATH_TO_FX="C:\Users\nathanm\Downloads\openjfx-23.0.1_windows-x64_bin-sdk\javafx-sdk-23.0.1\lib"
javac --module-path "$Env:PATH_TO_FX;P:\personal_root\projects\number-station\lib" --add-modules javafx.controls,javafx.fxml,com.fasterxml.jackson.annotation,com.fasterxml.jackson.core,com.fasterxml.jackson.dataformat.xml,com.fasterxml.jackson.datatype.jsr310 .\name\nathanmcrae\numbersstation\*.java -d out javac --module-path "$Env:PATH_TO_FX;P:\personal_root\projects\number-station\lib" --add-modules javafx.controls,javafx.fxml,com.fasterxml.jackson.annotation,com.fasterxml.jackson.core,com.fasterxml.jackson.dataformat.xml,com.fasterxml.jackson.datatype.jsr310,org.apache.commons.cli .\name\nathanmcrae\numbersstation\*.java -d out
cp name/nathanmcrae/numbersstation/*.fxml out/name/nathanmcrae/numbersstation cp name/nathanmcrae/numbersstation/*.fxml out/name/nathanmcrae/numbersstation
java --module-path "$Env:PATH_TO_FX;P:\personal_root\projects\number-station\lib" --add-modules javafx.controls,javafx.fxml,com.fasterxml.jackson.annotation,com.fasterxml.jackson.core,com.fasterxml.jackson.dataformat.xml,com.fasterxml.jackson.datatype.jsr310 -cp out name.nathanmcrae.numbersstation.Main java --module-path "$Env:PATH_TO_FX;P:\personal_root\projects\number-station\lib" --add-modules javafx.controls,javafx.fxml,com.fasterxml.jackson.annotation,com.fasterxml.jackson.core,com.fasterxml.jackson.dataformat.xml,com.fasterxml.jackson.datatype.jsr310,org.apache.commons.cli -cp out name.nathanmcrae.numbersstation.Main @args

View File

@ -13,10 +13,12 @@ import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import org.apache.commons.cli.*;
public class Main extends Application { public class Main extends Application {
private static final Logger logger = Logger.getLogger(Main.class.getName()); private static final Logger logger = Logger.getLogger(Main.class.getName());
// TODO: get git info
private static final String VERSION = "0.0.1";
private static Path statePath = null; private static Path statePath = null;
public Path getStatePath() { public Path getStatePath() {
@ -59,7 +61,49 @@ public class Main extends Application {
} }
} }
private static void parseArguments(String[] args) {
Options options = new Options();
Option help = new Option("h", "help", false, "Show help");
options.addOption(help);
Option version = new Option("v", "version", false, "Show version");
options.addOption(version);
Option station = new Option("s", "station", true, "Specify station name");
station.setArgName("station-name");
options.addOption(station);
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
String stationName = null;
try {
CommandLine cmd = parser.parse(options, args);
if (cmd.hasOption("help")) {
formatter.printHelp("numbers-station", options);
System.exit(0);
}
if (cmd.hasOption("version")) {
System.out.println("Numbers Station version " + VERSION);
System.exit(0);
}
if (cmd.hasOption("station")) {
stationName = cmd.getOptionValue("station");
}
} catch (ParseException e) {
System.out.println(e.getMessage());
formatter.printHelp("numbers-station", options);
System.exit(1);
}
}
public static void main(String[] args) { public static void main(String[] args) {
parseArguments(args);
Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
logger.log(Level.SEVERE, "Unhandled exception caught", throwable); logger.log(Level.SEVERE, "Unhandled exception caught", throwable);
}); });