Skip to content

Commit 5a013ed

Browse files
committed
Config feedback on command only
1 parent 2292929 commit 5a013ed

File tree

3 files changed

+42
-41
lines changed

3 files changed

+42
-41
lines changed

common/src/main/kotlin/com/lambda/brigadier/CommandExecution.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ sealed class CommandResult {
5555
return Failure(Communication.LogLevel.ERROR.text(message))
5656
}
5757

58+
/** Creates a [CommandResult.Failure] with the given throwable [t]. */
59+
fun failure(t: Throwable): Failure {
60+
return failure(t.message ?: "An error occurred")
61+
}
62+
5863
/**
5964
* Creates a [CommandResult.Failure] with the given error [message].
6065
*/

common/src/main/kotlin/com/lambda/command/commands/ConfigCommand.kt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.lambda.command.commands
22

3+
import com.lambda.brigadier.CommandResult.Companion.failure
4+
import com.lambda.brigadier.CommandResult.Companion.success
35
import com.lambda.brigadier.argument.literal
4-
import com.lambda.brigadier.execute
6+
import com.lambda.brigadier.executeWithResult
57
import com.lambda.brigadier.required
68
import com.lambda.command.LambdaCommand
79
import com.lambda.config.Configuration
10+
import com.lambda.util.Communication.info
811
import com.lambda.util.primitives.extension.CommandBuilder
912

1013
object ConfigCommand : LambdaCommand(
@@ -15,17 +18,23 @@ object ConfigCommand : LambdaCommand(
1518
) {
1619
override fun CommandBuilder.create() {
1720
required(literal("save")) {
18-
execute {
19-
Configuration.configurations.forEach {
20-
it.trySave()
21+
executeWithResult {
22+
Configuration.configurations.forEach { config ->
23+
config.trySave()?.let { return@executeWithResult failure(it) }
2124
}
25+
26+
this@ConfigCommand.info("Saved ${Configuration.configurations.size} configuration files.")
27+
return@executeWithResult success()
2228
}
2329
}
2430
required(literal("load")) {
25-
execute {
26-
Configuration.configurations.forEach {
27-
it.tryLoad()
31+
executeWithResult {
32+
Configuration.configurations.forEach { config ->
33+
config.tryLoad()?.let { return@executeWithResult failure(it) }
2834
}
35+
36+
this@ConfigCommand.info("Loaded ${Configuration.configurations.size} configuration files.")
37+
return@executeWithResult success()
2938
}
3039
}
3140
}

common/src/main/kotlin/com/lambda/config/Configuration.kt

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@ import com.google.gson.JsonParser
66
import com.lambda.Lambda.LOG
77
import com.lambda.Lambda.gson
88
import com.lambda.config.configurations.ModuleConfig
9-
import com.lambda.event.EventFlow.lambdaScope
109
import com.lambda.event.events.ClientEvent
1110
import com.lambda.event.listener.UnsafeListener.Companion.unsafeListener
12-
import com.lambda.util.Communication.info
13-
import com.lambda.util.Communication.logError
1411
import com.lambda.util.FolderRegister
1512
import com.lambda.util.StringUtils.capitalize
16-
import kotlinx.coroutines.Dispatchers
17-
import kotlinx.coroutines.launch
1813
import java.io.File
1914
import java.time.Duration
2015
import kotlin.concurrent.fixedRateTimer
@@ -98,45 +93,37 @@ abstract class Configuration(
9893
loadFromJson(JsonParser.parseReader(file.reader()).asJsonObject)
9994
}
10095

101-
fun tryLoad() {
102-
lambdaScope.launch(Dispatchers.IO) {
103-
runCatching { load(primary) }
104-
.onSuccess {
105-
val message = "${configName.capitalize()} config loaded."
106-
LOG.info(message)
107-
this@Configuration.info(message)
108-
}
109-
.onFailure {
110-
var message: String
111-
runCatching { load(backup) }
112-
.onSuccess {
113-
message = "${configName.capitalize()} config loaded from backup"
114-
LOG.info(message)
115-
this@Configuration.info(message)
116-
}
117-
.onFailure { error ->
118-
message =
119-
"Failed to load ${configName.capitalize()} config from backup, unrecoverable error"
120-
LOG.error(message, error)
121-
this@Configuration.logError(message)
122-
}
123-
}
124-
}
125-
}
96+
fun tryLoad() =
97+
runCatching { load(primary) }
98+
.onSuccess {
99+
val message = "${configName.capitalize()} config loaded."
100+
LOG.info(message)
101+
}
102+
.onFailure {
103+
runCatching { load(backup) }
104+
.onSuccess {
105+
LOG.info("${configName.capitalize()} config loaded from backup.")
106+
}
107+
.onFailure { backupError ->
108+
LOG.error(
109+
"Failed to load ${configName.capitalize()} config from backup, unrecoverable error.",
110+
backupError
111+
)
112+
}
113+
}
114+
.exceptionOrNull()
126115

127-
fun trySave() {
116+
fun trySave() =
128117
runCatching { save() }
129118
.onSuccess {
130119
val message = "Saved ${configName.capitalize()} config."
131120
LOG.info(message)
132-
this@Configuration.info(message)
133121
}
134122
.onFailure {
135123
val message = "Failed to save ${configName.capitalize()} config"
136124
LOG.error(message, it)
137-
this@Configuration.logError(message)
138125
}
139-
}
126+
.exceptionOrNull()
140127

141128
companion object {
142129
val configurations = mutableSetOf<Configuration>()

0 commit comments

Comments
 (0)