From 5ba5cbcd7716db79c89b864e2b72da88308599c6 Mon Sep 17 00:00:00 2001 From: Aivean Date: Sun, 20 Aug 2023 18:31:31 -0700 Subject: [PATCH] bake in version info --- .github/workflows/release.yml | 5 ++++- build.sbt | 9 +++++++++ src/main/scala/com/aivean/royalroad/Main.scala | 2 ++ src/main/scala/com/aivean/royalroad/VersionInfo.scala | 11 +++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/main/scala/com/aivean/royalroad/VersionInfo.scala diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d34b03d..ba70d76 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,9 +18,12 @@ jobs: java-version: '8' cache: 'sbt' + - name: Extract version from tag + run: echo "PROJECT_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + - name: Build JAR run: | - sbt assembly + sbt 'set version := "'"$PROJECT_VERSION"'"' assembly mv target/scala-2.11/*-assembly-*.jar royalroad-downloader.jar - name: Release diff --git a/build.sbt b/build.sbt index e6abed8..457d010 100644 --- a/build.sbt +++ b/build.sbt @@ -10,5 +10,14 @@ libraryDependencies += "org.rogach" %% "scallop" % "1.0.1" libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test" libraryDependencies += "org.scala-lang.modules" % "scala-java8-compat_2.11" % "0.9.1" +// inject version info +resourceGenerators in Compile += Def.task { + val file = (resourceManaged in Compile).value / "version.properties" + val props = new java.util.Properties() + props.put("version", version.value) + IO.write(props, "Version information", file) + Seq(file) +}.taskValue + mainClass in (Compile, run) := Some("com.aivean.royalroad.Main") mainClass in assembly := Some("com.aivean.royalroad.Main") \ No newline at end of file diff --git a/src/main/scala/com/aivean/royalroad/Main.scala b/src/main/scala/com/aivean/royalroad/Main.scala index e2d613c..c3e37c5 100644 --- a/src/main/scala/com/aivean/royalroad/Main.scala +++ b/src/main/scala/com/aivean/royalroad/Main.scala @@ -14,6 +14,8 @@ import scala.concurrent.{Await, Future, duration} object Main extends App { + print ("Royalroad downloader v" + VersionInfo.version + "\n") + def handleFromArg[T](chaps: Seq[T], fromChap: Int): Seq[T] = if (fromChap > 0) chaps.drop(fromChap - 1) else if (fromChap < 0) chaps.takeRight(-fromChap) else chaps diff --git a/src/main/scala/com/aivean/royalroad/VersionInfo.scala b/src/main/scala/com/aivean/royalroad/VersionInfo.scala new file mode 100644 index 0000000..81cf990 --- /dev/null +++ b/src/main/scala/com/aivean/royalroad/VersionInfo.scala @@ -0,0 +1,11 @@ +package com.aivean.royalroad + +object VersionInfo { + lazy val version: String = try { + val props = new java.util.Properties() + props.load(getClass.getResourceAsStream("/version.properties")) + props.getProperty("version") + } catch { + case _: Throwable => "unknown" + } +} \ No newline at end of file