From e773419986dcd3feee3f705077c1f12ab48b9d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wieland=20Sch=C3=B6bl?= Date: Wed, 2 Jun 2021 21:31:41 +0200 Subject: [PATCH] Add cli rework --- build.gradle | 2 ++ src/main/kotlin/org/hmcore/AdminCli.kt | 2 ++ src/main/kotlin/org/hmcore/Main.kt | 3 ++ src/main/kotlin/org/hmcore/cli/Commands.kt | 4 +++ .../org/hmcore/cli/admin/FakeUpdateCommand.kt | 29 +++++++++++++++++++ .../org/hmcore/cli/admin/InfoCommand.kt | 13 +++++++++ .../org/hmcore/cli/admin/StopCommand.kt | 13 +++++++++ 7 files changed, 66 insertions(+) create mode 100644 src/main/kotlin/org/hmcore/cli/Commands.kt create mode 100644 src/main/kotlin/org/hmcore/cli/admin/FakeUpdateCommand.kt create mode 100644 src/main/kotlin/org/hmcore/cli/admin/InfoCommand.kt create mode 100644 src/main/kotlin/org/hmcore/cli/admin/StopCommand.kt diff --git a/build.gradle b/build.gradle index 08e0a0c..33420cf 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,8 @@ dependencies { implementation 'org.jsoup:jsoup:1.13.1' implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1' + implementation 'org.jetbrains.kotlinx:kotlinx-cli:0.3.2' + implementation 'com.github.redouane59.twitter:twittered:1.20' implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' diff --git a/src/main/kotlin/org/hmcore/AdminCli.kt b/src/main/kotlin/org/hmcore/AdminCli.kt index 5a3a0df..4256869 100644 --- a/src/main/kotlin/org/hmcore/AdminCli.kt +++ b/src/main/kotlin/org/hmcore/AdminCli.kt @@ -1,5 +1,6 @@ package org.hmcore +import kotlinx.cli.ArgParser import org.hmcore.web.fakeUpdateBlogPost import org.hmcore.web.fakeUpdateJobListings import net.dv8tion.jda.api.hooks.ListenerAdapter @@ -12,6 +13,7 @@ class AdminCli : ListenerAdapter() { val prefix = "!" override fun onPrivateMessageReceived(event: PrivateMessageReceivedEvent) { + val msg = event.message.contentRaw if (event.author.idLong != Admin.userId || !msg.startsWith(prefix) diff --git a/src/main/kotlin/org/hmcore/Main.kt b/src/main/kotlin/org/hmcore/Main.kt index e7fc53b..d02c2e9 100644 --- a/src/main/kotlin/org/hmcore/Main.kt +++ b/src/main/kotlin/org/hmcore/Main.kt @@ -92,6 +92,9 @@ object Main { getNewJobListings()?.forEach { Channels.sentToAll(MessageBuilder().setEmbed(it.toMessageEmbed()).build(), MessageType.JOB_LISTING) } + getNewJobListings()?.forEach { + + } } val scheduler = StdSchedulerFactory.getDefaultScheduler() diff --git a/src/main/kotlin/org/hmcore/cli/Commands.kt b/src/main/kotlin/org/hmcore/cli/Commands.kt new file mode 100644 index 0000000..6c521e5 --- /dev/null +++ b/src/main/kotlin/org/hmcore/cli/Commands.kt @@ -0,0 +1,4 @@ +package org.hmcore.cli + +class Commands { +} \ No newline at end of file diff --git a/src/main/kotlin/org/hmcore/cli/admin/FakeUpdateCommand.kt b/src/main/kotlin/org/hmcore/cli/admin/FakeUpdateCommand.kt new file mode 100644 index 0000000..8a61cbc --- /dev/null +++ b/src/main/kotlin/org/hmcore/cli/admin/FakeUpdateCommand.kt @@ -0,0 +1,29 @@ +@file:OptIn(ExperimentalCli::class) + +package org.hmcore.cli.admin + +import kotlinx.cli.ArgType +import kotlinx.cli.ExperimentalCli +import kotlinx.cli.Subcommand +import kotlinx.cli.optional +import org.hmcore.TwitterJob +import org.hmcore.web.fakeUpdateBlogPost +import org.hmcore.web.fakeUpdateJobListings + +class FakeUpdateCommand : Subcommand("fakeUpdate", "Cause a fake update. Use with great caution.") { + private val twitter by option(ArgType.Boolean, + "twitter", + "Cause a fake update for Twitter") + private val jobs by argument(ArgType.Int, + "jobs", + "Cause a fake update for Job Listings for the x amount of last jobs").optional() + private val blog by argument(ArgType.Int, + "blogs", + "Cause a fake update for Blogs for the x amount of last blogs").optional() + + override fun execute() { + blog?.let { fakeUpdateBlogPost(it) } + jobs?.let { fakeUpdateJobListings(it) } + if (twitter == true) TwitterJob.lastTweetID = "empty" + } +} \ No newline at end of file diff --git a/src/main/kotlin/org/hmcore/cli/admin/InfoCommand.kt b/src/main/kotlin/org/hmcore/cli/admin/InfoCommand.kt new file mode 100644 index 0000000..664dc92 --- /dev/null +++ b/src/main/kotlin/org/hmcore/cli/admin/InfoCommand.kt @@ -0,0 +1,13 @@ +@file:OptIn(ExperimentalCli::class) + +package org.hmcore.cli.admin + +import kotlinx.cli.ExperimentalCli +import kotlinx.cli.Subcommand +import org.hmcore.Admin + +class InfoCommand : Subcommand("info", "Print an overview of all servers") { + override fun execute() { + Admin.info() + } +} \ No newline at end of file diff --git a/src/main/kotlin/org/hmcore/cli/admin/StopCommand.kt b/src/main/kotlin/org/hmcore/cli/admin/StopCommand.kt new file mode 100644 index 0000000..081f47d --- /dev/null +++ b/src/main/kotlin/org/hmcore/cli/admin/StopCommand.kt @@ -0,0 +1,13 @@ +@file:OptIn(ExperimentalCli::class) + +package org.hmcore.cli.admin + +import kotlinx.cli.ExperimentalCli +import kotlinx.cli.Subcommand +import kotlin.system.exitProcess + +class StopCommand : Subcommand("stop", "Stop the bot") { + override fun execute() { + exitProcess(1) + } +} \ No newline at end of file