diff --git a/src/main/kotlin/de/fabianonline/telegram_backup/CommandLineController.kt b/src/main/kotlin/de/fabianonline/telegram_backup/CommandLineController.kt index ef68648..c17e9cb 100644 --- a/src/main/kotlin/de/fabianonline/telegram_backup/CommandLineController.kt +++ b/src/main/kotlin/de/fabianonline/telegram_backup/CommandLineController.kt @@ -121,6 +121,9 @@ class CommandLineController(val options: CommandLineOptions) { if (options.booleans.contains("stats")) { cmd_stats(file_base, database) System.exit(0) + } else if (options.booleans.contains("settings")) { + settings.print() + System.exit(0) } val export = options.values["export"] diff --git a/src/main/kotlin/de/fabianonline/telegram_backup/Settings.kt b/src/main/kotlin/de/fabianonline/telegram_backup/Settings.kt index 2822f0e..cfae075 100644 --- a/src/main/kotlin/de/fabianonline/telegram_backup/Settings.kt +++ b/src/main/kotlin/de/fabianonline/telegram_backup/Settings.kt @@ -19,7 +19,7 @@ class Settings(val file_base: String, val database: Database, val cli_settings: // Merging CLI and INI settings val sf = SettingsFactory(ini_settings, cli_settings) - val gmaps_key = sf.getString("gmaps_key", default=Config.SECRET_GMAPS) + val gmaps_key = sf.getString("gmaps_key", default=Config.SECRET_GMAPS, secret=true) val pagination = sf.getBoolean("pagination", default=true) val pagination_size = sf.getInt("pagination_size", default=Config.DEFAULT_PAGINATION) val download_media = sf.getBoolean("download_media", default=true) @@ -69,18 +69,24 @@ class Settings(val file_base: String, val database: Database, val cli_settings: File(filename).outputStream().use { stream.copyTo(it) } stream.close() } + + fun print() { + println() + Setting.all_settings.forEach { it.print() } + println() + } } class SettingsFactory(val ini: Map>, val cli: CommandLineOptions) { - fun getInt(name: String, default: Int) = getSetting(name, listOf(default.toString())).get().toInt() - fun getBoolean(name: String, default: Boolean) = getSetting(name, listOf(default.toString())).get().toBoolean() - fun getString(name: String, default: String) = getSetting(name, listOf(default)).get() - fun getStringList(name: String, default: List) = getSetting(name, default).getList() + fun getInt(name: String, default: Int, secret: Boolean = false) = getSetting(name, listOf(default.toString()), secret).get().toInt() + fun getBoolean(name: String, default: Boolean, secret: Boolean = false) = getSetting(name, listOf(default.toString()), secret).get().toBoolean() + fun getString(name: String, default: String, secret: Boolean = false) = getSetting(name, listOf(default), secret).get() + fun getStringList(name: String, default: List, secret: Boolean = false) = getSetting(name, default, secret).getList() - fun getSetting(name: String, default: List) = Setting(ini, cli, name, default) + fun getSetting(name: String, default: List, secret: Boolean) = Setting(ini, cli, name, default, secret) } -class Setting(val ini: Map>, val cli: CommandLineOptions, val name: String, val default: List) { +class Setting(val ini: Map>, val cli: CommandLineOptions, val name: String, val default: List, val secret: Boolean) { val values: List val source: SettingSource val logger = LoggerFactory.getLogger(Setting::class.java) @@ -112,6 +118,10 @@ class Setting(val ini: Map>, val cli: CommandLineOptions, v return cli.values[name] } + fun print() { + println("%-25s %-10s %s".format(name, source, (if (secret && source==SettingSource.DEFAULT) "[REDACTED]" else values))) + } + companion object { val all_settings = LinkedList() }