diff options
author | Obsidian <108832807+Obsidianninja11@users.noreply.github.com> | 2024-03-01 01:39:56 -0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-01 11:39:56 +0100 |
commit | 8e9109d3b190f5451793fe79929ac89b3876c4ff (patch) | |
tree | 430b9c2b272ae96b4ca3ee0567d284893f7095b2 | |
parent | e249c70d1b0f8f543ae2fb63d71672b981cedcc0 (diff) | |
download | skyhanni-8e9109d3b190f5451793fe79929ac89b3876c4ff.tar.gz skyhanni-8e9109d3b190f5451793fe79929ac89b3876c4ff.tar.bz2 skyhanni-8e9109d3b190f5451793fe79929ac89b3876c4ff.zip |
Added Command /shconfig toggle (#835)
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/test/SkyHanniConfigSearchResetCommand.kt | 54 |
1 files changed, 48 insertions, 6 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/test/SkyHanniConfigSearchResetCommand.kt b/src/main/java/at/hannibal2/skyhanni/test/SkyHanniConfigSearchResetCommand.kt index 8bfcbfd22..bb80462da 100644 --- a/src/main/java/at/hannibal2/skyhanni/test/SkyHanniConfigSearchResetCommand.kt +++ b/src/main/java/at/hannibal2/skyhanni/test/SkyHanniConfigSearchResetCommand.kt @@ -37,8 +37,9 @@ object SkyHanniConfigSearchResetCommand { "reset" -> resetCommand(args) "search" -> searchCommand(args) "set" -> setCommand(args) + "toggle" -> toggleCommand(args) - else -> "§c/shconfig <search;reset;set>" + else -> "§c/shconfig <search;reset;set;toggle>" } } @@ -58,7 +59,10 @@ object SkyHanniConfigSearchResetCommand { field.set(parent, defaultObject) return "§eSuccessfully reset config element '$term'" } catch (e: Throwable) { - ErrorManager.logError(e, "Could not reset config element '$term'") + ErrorManager.logErrorWithData( + e, "Could not reset config element '$term'", + "args" to args.joinToString(" ") + ) return "§cCould not reset config element '$term'" } } @@ -69,7 +73,10 @@ object SkyHanniConfigSearchResetCommand { return try { startSearch(args) } catch (e: Exception) { - ErrorManager.logError(e, "Error while trying to search config") + ErrorManager.logErrorWithData( + e, "Error while trying to search config", + "args" to args.joinToString(" ") + ) "§cError while trying to search config" } } @@ -107,13 +114,41 @@ object SkyHanniConfigSearchResetCommand { val shimmy = Shimmy.makeShimmy(root, list) ?: return "§cCould not change config element '$term', not found!" return try { shimmy.setJson(element) - "§eChanged config element $term." + "§eChanged config element $term to $rawJson." } catch (e: Exception) { - ErrorManager.logError(e, "Could not change config element '$term' to '$rawJson'") + ErrorManager.logErrorWithData( + e, "Could not change config element '$term' to '$rawJson'", + "args" to args.joinToString(" ") + ) "§cCould not change config element '$term' to '$rawJson'" } } + private suspend fun toggleCommand(args: Array<String>): String { + if (args.size == 1 || args.size == 3) return "§c/shconfig toggle <config name> [value 1] [value 2]" + + val path = args[1] + val rawJson1 = if (args.size > 2) args[2] else "true" + val rawJson2 = if (args.size > 2) args[3] else "false" + + return try { + val (argsFilter) = createFilter(true) { path.lowercase() } + val (classFilter) = createFilter(false) { path.lowercase() } + + val currentValue = findConfigElements(argsFilter, classFilter, onlyValue = true).toString() + val newValue = if (currentValue == "[$rawJson1]") rawJson2 else rawJson1 + + setCommand(arrayOf("set", path, newValue)) + + } catch (e: Exception) { + ErrorManager.logErrorWithData( + e, "Error while trying to toggle config element", + "args" to args.joinToString(" ") + ) + "§cError while trying to toggle config element" + } + } + private fun createFilter(condition: Boolean, searchTerm: () -> String): Pair<(String) -> Boolean, String> { return if (condition && searchTerm() != "all") { val term = searchTerm() @@ -146,6 +181,7 @@ object SkyHanniConfigSearchResetCommand { private fun findConfigElements( configFilter: (String) -> Boolean, classFilter: (String) -> Boolean, + onlyValue: Boolean = false ): MutableList<String> { val list = mutableListOf<String>() @@ -185,13 +221,19 @@ object SkyHanniConfigSearchResetCommand { objectName.startsWith("at.hannibal2.skyhanni.config.Storage")) ) { "<category>" + } else if (onlyValue) { + objectName } else { "$className = $objectName" } } else "null" if (configFilter(name)) { - list.add("$name $description") + if (onlyValue) { + list.add(description) + } else { + list.add("$name $description") + } } } return list |