From 6a9f0cadac9e09bcf834ef708fab180038ebd4bd Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Thu, 6 Jun 2024 03:36:00 +0200 Subject: [PATCH] feat: Move config file to CLI argument --- .env.example | 2 -- .../app/revanced/api/command/StartAPICommand.kt | 10 +++++++++- .../app/revanced/api/configuration/Dependencies.kt | 11 +++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 0b0ef68..a3cb37d 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,3 @@ -# File path to store configurations for the API -CONFIG_FILE_PATH=configuration.toml # Optional token for API calls to the backend BACKEND_API_TOKEN= # A URL to the old API to proxy for migration purposes diff --git a/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt b/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt index 7c6c018..f337ce5 100644 --- a/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt +++ b/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt @@ -8,6 +8,7 @@ import app.revanced.api.configuration.routing.configureRouting import io.ktor.server.engine.* import io.ktor.server.jetty.* import picocli.CommandLine +import java.io.File @CommandLine.Command( name = "start", @@ -28,9 +29,16 @@ internal object StartAPICommand : Runnable { ) private var port: Int = 8888 + @CommandLine.Option( + names = ["-c", "--config"], + description = ["The path to the configuration file."], + showDefaultValue = CommandLine.Help.Visibility.ALWAYS, + ) + private var configFile = File("configuration.toml") + override fun run() { embeddedServer(Jetty, port, host) { - configureDependencies() + configureDependencies(configFile) configureHTTP(allowedHost = host) configureSerialization() configureSecurity() diff --git a/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt b/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt index 7cc14f4..7328ea8 100644 --- a/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt +++ b/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt @@ -33,7 +33,9 @@ import org.koin.ktor.plugin.Koin import java.io.File @OptIn(ExperimentalSerializationApi::class) -fun Application.configureDependencies() { +fun Application.configureDependencies( + configFile: File, +) { val globalModule = module { single { Dotenv.configure().load() @@ -99,11 +101,8 @@ fun Application.configureDependencies() { ) } - single { - val configFilePath = get()["CONFIG_FILE_PATH"] - val configFile = File(configFilePath).inputStream() - - Toml.decodeFromStream(configFile) + single { + Toml.decodeFromStream(configFile.inputStream()) } singleOf(::AnnouncementRepository)