From 06d6226ce1f172f8d7be07e9372a0636ae9f1d5e Mon Sep 17 00:00:00 2001 From: Weronika Pecio Date: Sun, 20 Oct 2024 22:23:57 +0200 Subject: [PATCH] Open txt file from directory passed as runtime arg --- .../karedi/controller/RootController.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/nianna/karedi/controller/RootController.java b/src/main/java/com/github/nianna/karedi/controller/RootController.java index 4d8132a..a687c3a 100644 --- a/src/main/java/com/github/nianna/karedi/controller/RootController.java +++ b/src/main/java/com/github/nianna/karedi/controller/RootController.java @@ -21,6 +21,7 @@ import javafx.scene.layout.BorderPane; import java.io.File; +import java.util.Arrays; import java.util.Optional; public class RootController implements Controller { @@ -211,9 +212,26 @@ public void onStageShown() { private Optional findTxtFileToOpenFromRunParams() { return KarediApp.getInstance().getParameters().getRaw() .stream() - .filter(param -> param.endsWith(".txt")) .findFirst() - .map(File::new); + .map(File::new) + .filter(File::exists) + .flatMap(this::getTxtFileFromFile); + } + + private Optional getTxtFileFromFile(File file) { + if (isATxtFile(file)) { + return Optional.of(file); + } + if (file.isDirectory()) { + File[] txtFiles = file.listFiles(this::isATxtFile); + if (txtFiles != null) { + return Arrays.stream(txtFiles) + .filter(txtFile -> file.getName().equalsIgnoreCase(Utils.trimExtension(txtFile.getName()))) + .findFirst() + .or(() -> Arrays.stream(txtFiles).findFirst()); + } + } + return Optional.empty(); } private class EditLyricsAction extends KarediAction {