Code cleanup and added test.

This commit is contained in:
Erik C. Thauvin 2022-02-14 22:39:24 -08:00
parent 4abdb268ef
commit cbc69be517
2 changed files with 94 additions and 2 deletions

View file

@ -36,13 +36,15 @@ import net.thauvin.erik.mobibot.Utils.capitalise
import net.thauvin.erik.mobibot.Utils.green
import net.thauvin.erik.mobibot.Utils.helpFormat
import net.thauvin.erik.mobibot.Utils.isChannelOp
import net.thauvin.erik.mobibot.Utils.plural
import net.thauvin.erik.mobibot.Utils.sendList
import net.thauvin.erik.mobibot.Utils.sendMessage
import net.thauvin.erik.mobibot.Utils.uptime
import net.thauvin.erik.mobibot.commands.links.LinksMgr
import net.thauvin.erik.mobibot.commands.tell.Tell
import org.pircbotx.hooks.types.GenericMessageEvent
import java.lang.management.ManagementFactory
import kotlin.time.DurationUnit
import kotlin.time.toDuration
class Info(private val tell: Tell) : AbstractCommand() {
private val allVersions = listOf(
@ -55,11 +57,50 @@ class Info(private val tell: Tell) : AbstractCommand() {
override val isPublic = true
override val isVisible = true
companion object {
/**
* Converts milliseconds to year month week day hour and minutes.
*/
@JvmStatic
fun Long.toUptime(): String {
this.toDuration(DurationUnit.MILLISECONDS).toComponents { wholeDays, hours, minutes, _, _ ->
val years = wholeDays / 365
var days = wholeDays % 365
val months = days / 30
days %= 30
val weeks = days / 7
days %= 7
with(StringBuffer()) {
if (years > 0) {
append(years).append(" year".plural(years)).append(' ')
}
if (months > 0) {
append(weeks).append(" month".plural(months)).append(' ')
}
if (weeks > 0) {
append(weeks).append(" week".plural(weeks)).append(' ')
}
if (days > 0) {
append(days).append(" day".plural(days)).append(' ')
}
if (hours > 0) {
append(hours).append(" hour".plural(hours.toLong())).append(' ')
}
append(minutes).append(" minute".plural(minutes.toLong()))
return toString()
}
}
}
}
override fun commandResponse(channel: String, args: String, event: GenericMessageEvent) {
event.sendList(allVersions, 1)
val info = StringBuilder()
info.append("Uptime: ")
.append(uptime(ManagementFactory.getRuntimeMXBean().uptime))
.append(ManagementFactory.getRuntimeMXBean().uptime.toUptime())
.append(" [Entries: ")
.append(LinksMgr.entries.links.size)
if (isChannelOp(channel, event)) {