From 49fffaf02d31dcf0f3276ead45a568fdeaf1fe7f Mon Sep 17 00:00:00 2001 From: SpaiR Date: Fri, 29 Sep 2023 10:02:21 +0300 Subject: [PATCH] tweak(api): simplify version get from imgui-java.properties file (#204) Instead of generating `properties` file we make it always. To provide version value we replace specific token. Also, small tweaks in code which gets the version --- imgui-binding/build.gradle | 19 ++++++------------- imgui-binding/src/main/java/imgui/ImGui.java | 12 +++++------- .../resources/imgui/imgui-java.properties | 1 + 3 files changed, 12 insertions(+), 20 deletions(-) create mode 100644 imgui-binding/src/main/resources/imgui/imgui-java.properties diff --git a/imgui-binding/build.gradle b/imgui-binding/build.gradle index 32677f8..1e8aa31 100644 --- a/imgui-binding/build.gradle +++ b/imgui-binding/build.gradle @@ -1,3 +1,4 @@ +import org.apache.tools.ant.filters.ReplaceTokens import tool.generator.GenerateLibs plugins { @@ -35,18 +36,10 @@ jar { } } -tasks.register('makePropertyResource') { - def directory = file "${buildDir}/resources/main/imgui/" - directory.mkdirs() - def propertyFile = file "${directory}/imgui-java.properties" - def props = new Properties() - if (propertyFile.exists()) { - propertyFile.withReader { props.load(it) } - } - props.setProperty("version", project.version) - propertyFile.withWriter { props.store(it, "imgui-java") } -} - processResources { - dependsOn makePropertyResource + filesMatching('**/imgui-java.properties') { + filter(ReplaceTokens, tokens: [ + 'version': project.version + ]) + } } diff --git a/imgui-binding/src/main/java/imgui/ImGui.java b/imgui-binding/src/main/java/imgui/ImGui.java index 606c3db..a9986c6 100644 --- a/imgui-binding/src/main/java/imgui/ImGui.java +++ b/imgui-binding/src/main/java/imgui/ImGui.java @@ -23,6 +23,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; +import java.util.Optional; import java.util.Properties; public class ImGui { @@ -122,10 +123,7 @@ public class ImGui { return null; } - String version = getVersionString(); - if (version == null) { - version = "unknown"; - } + final String version = getVersionString().orElse("undefined"); final Path tmpDir = Paths.get(System.getProperty("java.io.tmpdir")).resolve(LIB_TMP_DIR_PREFIX).resolve(version); if (!Files.exists(tmpDir)) { Files.createDirectories(tmpDir); @@ -146,17 +144,17 @@ public class ImGui { } } - private static String getVersionString() { + private static Optional getVersionString() { final Properties properties = new Properties(); try (InputStream is = ImGui.class.getResourceAsStream("/imgui/imgui-java.properties")) { if (is != null) { properties.load(is); - return properties.get("version").toString(); + return Optional.of(properties.get("imgui.java.version").toString()); } } catch (IOException e) { throw new UncheckedIOException(e); } - return null; + return Optional.empty(); } /** diff --git a/imgui-binding/src/main/resources/imgui/imgui-java.properties b/imgui-binding/src/main/resources/imgui/imgui-java.properties new file mode 100644 index 0000000..6e137bf --- /dev/null +++ b/imgui-binding/src/main/resources/imgui/imgui-java.properties @@ -0,0 +1 @@ +imgui.java.version=@version@