Settings generator: Validate that protoNumber is unique (#1735)

This makes specifying an already-used number a compile time error
This commit is contained in:
Constantin Piber
2025-10-25 00:37:58 +02:00
committed by GitHub
parent d8050dc483
commit b4db9ebdb0
2 changed files with 6 additions and 0 deletions

View File

@@ -45,6 +45,8 @@ object SettingsGenerator {
// Ignore errors during registration
}
}
} catch (e: IllegalStateException) {
throw e
} catch (e: Exception) {
// Registration failed, but we tried
}

View File

@@ -2,6 +2,7 @@ package suwayomi.tachidesk.server.settings
import com.typesafe.config.ConfigValue
import com.typesafe.config.parser.ConfigDocument
import kotlin.collections.find
import kotlin.reflect.KClass
/**
@@ -78,6 +79,9 @@ object SettingsRegistry {
private val settings = mutableMapOf<String, SettingMetadata>()
fun register(metadata: SettingMetadata) {
settings.values.find { it.protoNumber == metadata.protoNumber }?.let {
throw IllegalStateException("Setting ${metadata.name} uses protoNumber ${it.protoNumber} already used by ${it.name}")
}
settings[metadata.name] = metadata
}