3 Commits

Author SHA1 Message Date
Cametendo
0edbc24003 Added file and device verification 2026-04-21 20:54:54 +02:00
Cametendo
ecb1f7be3e Merge branch 'dev' 2026-04-04 19:54:57 +02:00
Cametendo
cd6100548c Update README.md 2026-02-09 07:38:06 +01:00
5 changed files with 62 additions and 20 deletions

View File

@@ -1,3 +1,6 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Scanner; import java.util.Scanner;
public class FilePathAdd { public class FilePathAdd {
@@ -5,9 +8,25 @@ public class FilePathAdd {
public static String ImagePath = ""; public static String ImagePath = "";
protected static String filePath(Scanner UserInput) { protected static String filePath(Scanner UserInput) {
System.out.println("Please enter the FULL Path of your ISO / Image. ()"); fileQuestion();
ImagePath = UserInput.nextLine(); while (true) {
System.out.println("Using File: " + ImagePath); ImagePath = UserInput.nextLine();
return ImagePath; if (ImagePath.isBlank()) {
System.out.println("Oops.. You didn't specify a file, did you missclick?");
continue;
}
Path path = Path.of(ImagePath);
try {
Files.readAttributes(path, "basic:size");
System.out.println("Using File: " + ImagePath);
return ImagePath;
} catch (IOException e) {
System.out.println("Failed to access file, invalid path or no access to file! Please try again.");
}
}
}
protected static void fileQuestion() {
System.out.println("Please enter the FULL Path of your ISO / Image. (No tab-complete)");
} }
} }

View File

@@ -5,7 +5,7 @@ public class Flasher {
String input = ""; String input = "";
System.out.println("The programm wil use the following configuration, do you want to flash with this? (y/n)"); System.out.println("The programm wil use the following configuration, do you want to flash with this? (Y/n)");
System.out.println(" - To be flashed device: " + StorageDeviceLister.fullPath); System.out.println(" - To be flashed device: " + StorageDeviceLister.fullPath);
System.out.println(" - To be used path: " + FilePathAdd.ImagePath); System.out.println(" - To be used path: " + FilePathAdd.ImagePath);
System.out.println(" - To bed used blocksize: " + BlockSize.blockSizeString); System.out.println(" - To bed used blocksize: " + BlockSize.blockSizeString);

View File

@@ -13,7 +13,7 @@ public class Main {
System.out.println("Canceling..."); System.out.println("Canceling...");
System.exit(0); System.exit(0);
} }
StorageDeviceLister.deviceList(UserInput); StorageDeviceLister.deviceCheck(UserInput);
FilePathAdd.filePath(UserInput); FilePathAdd.filePath(UserInput);
BlockSize.blockSize(UserInput); BlockSize.blockSize(UserInput);
OflagHandler.handleOflag(UserInput); OflagHandler.handleOflag(UserInput);

View File

@@ -21,7 +21,7 @@ Java program using `dd` to make flashing iso and image files easier on the termi
3. You will be prompted to choose a byte size (default: 4M) 3. You will be prompted to choose a byte size (default: 4M)
4. You will be prompted to enter your oflag (default: direct) 4. You will be prompted to enter your oflag (default: direct)
5. You will be asked if you are absolutely sure that you want to continue (flashing will wipe all data) 5. You will be asked if you are absolutely sure that you want to continue (flashing will wipe all data)
- Alternative: using `cflash [device] [iso-path] [block-size] [oflag]` will skip the first question and instantly ask you, if you're absolutely sure you want to continue. - Alternative: using `cflash [device] [iso-path] [block-size] [oflag]` will skip the questions and instantly ask you, if you're absolutely sure you want to continue.
- Once confirmed, the flash will start and a small progress bar will appear showing the flashing progress. - Once confirmed, the flash will start and a small progress bar will appear showing the flashing progress.
- After completion, the program will detect the OS from the iso and wish you a great time with your new OS. (Example: "Done! Have fun with your new Linux installation!) - After completion, the program will detect the OS from the iso and wish you a great time with your new OS. (Example: "Done! Have fun with your new Linux installation!)
- **IMPORTANT**: Since dd needs sudo rights, ensure you have root priviliges. - **IMPORTANT**: Since dd needs sudo rights, ensure you have root priviliges.

View File

@@ -1,6 +1,7 @@
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.file.Path;
import java.util.Scanner; import java.util.Scanner;
public class StorageDeviceLister { public class StorageDeviceLister {
@@ -8,26 +9,48 @@ public class StorageDeviceLister {
public static String device = ""; public static String device = "";
public static String fullPath = ""; public static String fullPath = "";
protected static String deviceList(Scanner UserInput) { protected static String deviceCheck(Scanner UserInput) {
// 1. lsblk wird genau EINMAL aufgerufen
deviceList();
// 2. Die Abfrage-Schleife
while (true) {
device = UserInput.nextLine();
if (device.isBlank()) {
System.out.println("Oops... Device name is empty. Did you missclick?");
continue;
}
Path path = Path.of("/dev/" + device);
try {
// Versuche, den echten Pfad zu finden
fullPath = path.toRealPath().toString();
// Wenn wir hier ankommen, war der Pfad gültig
System.out.println("Using device: " + fullPath);
return fullPath;
} catch (IOException e) {
// Fehler-Output, danach springt die Schleife wieder nach oben
System.out.println("Failed to access device! Invalid path or no access. Please try again.");
}
}
}
private static void deviceList() {
try { try {
ProcessBuilder pb = new ProcessBuilder("lsblk"); ProcessBuilder pb = new ProcessBuilder("lsblk");
Process process = pb.start(); Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream())
);
String line; String line;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
System.out.println(line); System.out.println(line);
} }
} catch (IOException e) { process.waitFor();
System.out.println("Please enter the name of your device (without /dev/):");
} catch (IOException | InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
String device = UserInput.nextLine();
System.out.println("Using device: " + "/dev/" + device);
fullPath = "/dev/" + device;
return fullPath;
} }
} }