diff --git a/server/src/main/scala/net/psforever/server/Server.scala b/server/src/main/scala/net/psforever/server/Server.scala index 9612fc2d..15526564 100644 --- a/server/src/main/scala/net/psforever/server/Server.scala +++ b/server/src/main/scala/net/psforever/server/Server.scala @@ -183,16 +183,6 @@ object Server { loggerContext.reset() configurator.doConfigure(loggerConfigPath) - Config.result match { - case Left(failures) => - logger.error("Loading config failed") - failures.toList.foreach { failure => - logger.error(failure.toString) - } - sys.exit(1) - case Right(_) => - } - val builder = OParser.builder[CliConfig] val parser = { diff --git a/src/main/scala/net/psforever/util/Config.scala b/src/main/scala/net/psforever/util/Config.scala index 38d88191..0d8f8a6e 100644 --- a/src/main/scala/net/psforever/util/Config.scala +++ b/src/main/scala/net/psforever/util/Config.scala @@ -8,13 +8,14 @@ import net.psforever.objects.avatar.{BattleRank, Certification, CommandRank} import net.psforever.packet.game.ServerType import net.psforever.types.ChatMessageType import pureconfig.ConfigConvert.viaNonEmptyStringOpt -import pureconfig.ConfigReader.Result import pureconfig.{ConfigConvert, ConfigSource} import scala.concurrent.duration._ import scala.reflect.ClassTag import pureconfig.generic.auto._ // intellij: this is not unused object Config { + private val logger = org.log4s.getLogger + // prog.home is defined when we are running from SBT pack val directory: String = System.getProperty("prog.home") match { case null => @@ -53,18 +54,34 @@ object Config { private val source = { val configFile = Paths.get(directory, "psforever.conf").toFile if (configFile.exists) - ConfigSource.file(configFile).withFallback(ConfigSource.defaultApplication) + ConfigSource.file(configFile).withFallback(ConfigSource.default) else - ConfigSource.defaultApplication + ConfigSource.default } - val result: Result[AppConfig] = source.load[AppConfig] - // Raw config object - prefer app when possible - lazy val config: TypesafeConfig = source.config().toOption.get + lazy val config: TypesafeConfig = source.config() match { + case Right(config) => config + case Left(failures) => { + logger.error("Loading config failed") + failures.toList.foreach { failure => + logger.error(failure.toString) + } + sys.exit(1) + } + } // Typed config object - lazy val app: AppConfig = result.toOption.get + lazy val app: AppConfig = source.load[AppConfig] match { + case Right(config) => config + case Left(failures) => { + logger.error("Loading config failed") + failures.toList.foreach { failure => + logger.error(failure.toString) + } + sys.exit(1) + } + } } case class AppConfig(