From bfb6cab62ce008edd6610dca69b318c7deeed4f4 Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Tue, 19 Apr 2022 21:03:14 +0200 Subject: [PATCH] Add version parameter --- pom.xml | 2 ++ .../mkvaudiosubtitlechanger/config/Config.java | 10 ++++++++++ .../model/ConfigProperty.java | 3 ++- .../util/LanguageValidatorUtil.java | 17 +++++------------ .../util/VersionUtil.java | 18 ++++++++++++++++++ version.properties | 1 + 6 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/VersionUtil.java create mode 100644 version.properties diff --git a/pom.xml b/pom.xml index 65e1b37..4189cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,9 @@ ./ language-codes + version.properties + true diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java index 7209343..9f2ae3e 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java @@ -2,6 +2,7 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.config; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.VersionUtil; import at.pcgamingfreaks.yaml.YAML; import at.pcgamingfreaks.yaml.YamlInvalidContentException; import lombok.AccessLevel; @@ -75,6 +76,7 @@ public class Config { } exitIfHelp(cmd, options); + exitIfVersion(cmd); configPath = loadConfigPath(cmd, errors); libraryPath = loadLibraryPath(cmd, errors); @@ -101,6 +103,7 @@ public class Config { private static Options initOptions() { Options options = new Options(); options.addOption(optionOf(HELP, "h", false)); + options.addOption(optionOf(VERSION, "v", false)); options.addOption(optionOf(LIBRARY, "l", true)); options.addOption(optionOf(MKV_TOOL_NIX, "m", true)); options.addOption(optionOf(CONFIG_PATH, "c", true)); @@ -121,6 +124,13 @@ public class Config { } } + private void exitIfVersion(CommandLine cmd) { + if (cmd.hasOption(VERSION.prop())) { + System.out.printf("MKV Audio Subtitle Changer Version %s%n", VersionUtil.getVersion()); + System.exit(0); + } + } + private File loadConfigPath(CommandLine cmd, ConfigErrors errors) { File configPath = new File(cmd.getOptionValue(CONFIG_PATH.prop(), "config.yaml")); if (configPath.isFile()) return configPath; diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ConfigProperty.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ConfigProperty.java index 358719d..77ee777 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ConfigProperty.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ConfigProperty.java @@ -9,7 +9,8 @@ public enum ConfigProperty { MKV_TOOL_NIX("mkvtoolnix", "Path to mkv tool nix installation"), FORCED_KEYWORDS("forcedKeywords", "Additional keywords to identify forced tracks, combines with config file"), EXCLUDE_DIRECTORY("exclude-directories", "Directories to be excluded, combines with config file"), - HELP("help", "\"for help this is\" - Yoda"); + HELP("help", "\"for help this is\" - Yoda"), + VERSION("version", "Display version"); private final String property; private final String description; diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/LanguageValidatorUtil.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/LanguageValidatorUtil.java index 815e90c..1ba46b4 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/LanguageValidatorUtil.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/LanguageValidatorUtil.java @@ -3,11 +3,8 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ConfigErrors; import java.io.BufferedReader; -import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -17,18 +14,14 @@ public class LanguageValidatorUtil { static { try { - ISO3_LANGUAGES = load("language-codes"); + ISO3_LANGUAGES = loadLanguageCodes(); } catch (IOException ignored) {} } - private static Set load(String path) throws IOException{ - if (new File(path).isFile()) { - return Files.lines(Path.of(path)).collect(Collectors.toSet()); - } else { - try(BufferedReader bf = new BufferedReader(new InputStreamReader( - Objects.requireNonNull(LanguageValidatorUtil.class.getClassLoader().getResourceAsStream(path))))) { - return bf.lines().collect(Collectors.toSet()); - } + private static Set loadLanguageCodes() throws IOException { + try (BufferedReader bf = new BufferedReader(new InputStreamReader( + Objects.requireNonNull(LanguageValidatorUtil.class.getClassLoader().getResourceAsStream("language-codes"))))) { + return bf.lines().collect(Collectors.toSet()); } } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/VersionUtil.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/VersionUtil.java new file mode 100644 index 0000000..e1e5e3a --- /dev/null +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/VersionUtil.java @@ -0,0 +1,18 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class VersionUtil { + public static String getVersion() { + try (InputStream propertiesStream = VersionUtil.class.getClassLoader().getResourceAsStream("version.properties")) { + Properties properties = new Properties(); + properties.load(propertiesStream); + + return properties.getProperty("version"); + } catch (IOException e) { + throw new RuntimeException(e.getMessage()); + } + } +} diff --git a/version.properties b/version.properties new file mode 100644 index 0000000..e5683df --- /dev/null +++ b/version.properties @@ -0,0 +1 @@ +version=${project.version} \ No newline at end of file