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 {