2 Commits

Author SHA1 Message Date
Cametendo
48f4093906 Added Library JLINE 2026-04-21 22:00:28 +02:00
Cametendo
0edbc24003 Added file and device verification 2026-04-21 20:54:54 +02:00
13 changed files with 137 additions and 53 deletions

18
.gitignore vendored
View File

@@ -23,8 +23,16 @@
hs_err_pid*
replay_pid*
# IDE Stuff
.vscode/*
.vscode/
*.vscode
.vscode
target/
*.class
.mtj.tmp/
*.jar
*.war
*.ear
hs_err_pid*
# VS Code specific
.classpath
.project
.settings/
.vscode/

View File

@@ -1,13 +0,0 @@
import java.util.Scanner;
public class FilePathAdd {
public static String ImagePath = "";
protected static String filePath(Scanner UserInput) {
System.out.println("Please enter the FULL Path of your ISO / Image. ()");
ImagePath = UserInput.nextLine();
System.out.println("Using File: " + ImagePath);
return ImagePath;
}
}

View File

@@ -1,33 +0,0 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class StorageDeviceLister {
public static String device = "";
public static String fullPath = "";
protected static String deviceList(Scanner UserInput) {
try {
ProcessBuilder pb = new ProcessBuilder("lsblk");
Process process = pb.start();
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream())
);
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
String device = UserInput.nextLine();
System.out.println("Using device: " + "/dev/" + device);
fullPath = "/dev/" + device;
return fullPath;
}
}

25
pom.xml Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.cametendo</groupId>
<artifactId>cflash</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>3.25.1</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,3 +1,4 @@
package org.cametendo;
import java.util.Scanner;
public class BlockSize {

View File

@@ -1,3 +1,4 @@
package org.cametendo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

View File

@@ -0,0 +1,33 @@
package org.cametendo;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Scanner;
public class FilePathAdd {
public static String ImagePath = "";
protected static String filePath(Scanner UserInput) {
fileQuestion();
while (true) {
ImagePath = UserInput.nextLine();
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

@@ -1,3 +1,4 @@
package org.cametendo;
import java.util.Scanner;
public class Flasher {
@@ -5,7 +6,7 @@ public class Flasher {
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 used path: " + FilePathAdd.ImagePath);
System.out.println(" - To bed used blocksize: " + BlockSize.blockSizeString);

View File

@@ -1,3 +1,4 @@
package org.cametendo;
public class Greeting {
public static void greeting() {
System.out.println("Welcome to cflash!");

View File

@@ -1,3 +1,4 @@
package org.cametendo;
import java.util.Scanner;
public class Main {
@@ -13,7 +14,7 @@ public class Main {
System.out.println("Canceling...");
System.exit(0);
}
StorageDeviceLister.deviceList(UserInput);
StorageDeviceLister.deviceCheck(UserInput);
FilePathAdd.filePath(UserInput);
BlockSize.blockSize(UserInput);
OflagHandler.handleOflag(UserInput);

View File

@@ -1,3 +1,4 @@
package org.cametendo;
import java.util.Scanner;
public class OflagHandler {

View File

@@ -0,0 +1,57 @@
package org.cametendo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Path;
import java.util.Scanner;
public class StorageDeviceLister {
public static String device = "";
public static String fullPath = "";
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 {
ProcessBuilder pb = new ProcessBuilder("lsblk");
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
System.out.println("Please enter the name of your device (without /dev/):");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}

View File

@@ -1,3 +1,4 @@
package org.cametendo;
public class YesNo {
public static boolean check(String input) {
switch (input) {