Add mkvmerge and mkvpropedit version

This commit is contained in:
RatzzFatzz
2025-12-09 04:54:49 +01:00
parent e7a13c9f1d
commit d5e452557c

View File

@@ -1,9 +1,13 @@
package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; package at.pcgamingfreaks.mkvaudiosubtitlechanger.util;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix;
import org.apache.logging.log4j.util.Strings;
import picocli.CommandLine; import picocli.CommandLine;
import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties; import java.util.Properties;
public class ProjectUtil implements CommandLine.IVersionProvider { public class ProjectUtil implements CommandLine.IVersionProvider {
@@ -18,15 +22,32 @@ public class ProjectUtil implements CommandLine.IVersionProvider {
} }
// TODO: add mkvmerge and mkvpropedit version // TODO: add mkvmerge and mkvpropedit version
public String[] getVersion() { public String[] getVersion() throws IOException {
String mkvpropeeditVersion = getVersion(MkvToolNix.MKV_PROP_EDIT);
String mkvmergeVersion = getVersion(MkvToolNix.MKV_MERGE);
return new String[] { return new String[] {
getProjectName() + " " + PROJECT_PROPERTIES.getProperty("version"), getProjectName() + " " + PROJECT_PROPERTIES.getProperty("version"),
"Java ${java.version} (${java.vendor} ${java.vm.name} ${java.vm.version})", "Java ${java.version} (${java.vendor} ${java.vm.name} ${java.vm.version})",
"${os.name} ${os.version} ${os.arch}" "${os.name} ${os.version} ${os.arch}",
(!Strings.isBlank(mkvpropeeditVersion) ? mkvpropeeditVersion : "MkvPropEdit not found") + ", " + (!Strings.isBlank(mkvmergeVersion) ? mkvmergeVersion : "MkvMerge not found")
}; };
} }
public static String getProjectName() { public static String getProjectName() {
return PROJECT_PROPERTIES.getProperty("project_name"); return PROJECT_PROPERTIES.getProperty("project_name");
} }
public static String getVersion(MkvToolNix app) throws IOException {
ProcessBuilder processBuilder = new ProcessBuilder(app.toString(), "--version");
Process process = processBuilder.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String version = reader.readLine();
int exitCode = process.waitFor();
if (exitCode == 0) return version;
} catch (IOException | InterruptedException ignored) {}
return null;
}
} }