aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/init/BuildInfoReflection.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/init/BuildInfoReflection.scala')
-rw-r--r--src/main/scala/xyz/driver/core/init/BuildInfoReflection.scala37
1 files changed, 0 insertions, 37 deletions
diff --git a/src/main/scala/xyz/driver/core/init/BuildInfoReflection.scala b/src/main/scala/xyz/driver/core/init/BuildInfoReflection.scala
deleted file mode 100644
index 0e53085..0000000
--- a/src/main/scala/xyz/driver/core/init/BuildInfoReflection.scala
+++ /dev/null
@@ -1,37 +0,0 @@
-package xyz.driver.core
-package init
-
-import scala.reflect.runtime
-import scala.util.Try
-import scala.util.control.NonFatal
-
-/** Utility object to retrieve fields from static build configuration objects. */
-private[init] object BuildInfoReflection {
-
- final val BuildInfoName = "xyz.driver.BuildInfo"
-
- lazy val name: String = get[String]("name")
- lazy val version: Option[String] = find[String]("version")
-
- /** Lookup a given field in the build configuration. This field is required to exist. */
- private def get[A](fieldName: String): A =
- try {
- val mirror = runtime.currentMirror
- val module = mirror.staticModule(BuildInfoName)
- val instance = mirror.reflectModule(module).instance
- val accessor = module.info.decl(mirror.universe.TermName(fieldName)).asMethod
- mirror.reflect(instance).reflectMethod(accessor).apply().asInstanceOf[A]
- } catch {
- case NonFatal(err) =>
- throw new RuntimeException(
- s"Cannot find field name '$fieldName' in $BuildInfoName. Please define (or generate) a singleton " +
- s"object with that field. Alternatively, in order to avoid runtime reflection, you may override the " +
- s"caller with a static value.",
- err
- )
- }
-
- /** Try finding a given field in the build configuration. If the field does not exist, None is returned. */
- private def find[A](fieldName: String): Option[A] = Try { get[A](fieldName) }.toOption
-
-}