summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-03-14 13:35:40 +0100
committerLinnea Gräf <nea@nea.moe>2024-03-14 13:37:30 +0100
commit5a74c504da44a9dbea11da2129c2a72be8767d97 (patch)
tree29b1f07d24155dfc8ad040bc5319e0ef44ad6a55
parentf5862b8edb1fe025eaf1c529764f1d9aab838cbe (diff)
downloadSkyHanniChangelogBuilder-autoverify.tar.gz
SkyHanniChangelogBuilder-autoverify.tar.bz2
SkyHanniChangelogBuilder-autoverify.zip
Add check specific PR WIPautoverify
-rw-r--r--src/main/kotlin/at/hannibal2/skyhanni/changelog/Arguments.kt69
-rw-r--r--src/main/kotlin/at/hannibal2/skyhanni/changelog/CheckSpecificPR.kt13
2 files changed, 82 insertions, 0 deletions
diff --git a/src/main/kotlin/at/hannibal2/skyhanni/changelog/Arguments.kt b/src/main/kotlin/at/hannibal2/skyhanni/changelog/Arguments.kt
new file mode 100644
index 0000000..503de42
--- /dev/null
+++ b/src/main/kotlin/at/hannibal2/skyhanni/changelog/Arguments.kt
@@ -0,0 +1,69 @@
+package at.hannibal2.skyhanni.changelog
+
+class Arguments {
+ private val flags = mutableMapOf<String, Flag>()
+
+ sealed interface Flag
+ data class BooleanFlag(var set: Boolean) : Flag
+ data class StringFlag(var value: String?) : Flag
+
+
+ fun <T : Flag> registerFlag(name: String, flag: T): T {
+ require(name.matches(Regex("^[a-z][a-z\\-]*$")) && !name.startsWith("no-"))
+ flags[name] = flag
+ return flag
+ }
+
+ fun string(name: String): StringFlag {
+ return registerFlag(name, StringFlag(null))
+ }
+
+ fun bool(name: String, default: Boolean): BooleanFlag {
+ return registerFlag(name, BooleanFlag(default))
+ }
+
+ fun parseFlags(args: Array<out String>) {
+ var i = 0
+ while (i in args.indices) {
+ val flag = args[i]
+ if (!flag.startsWith("--")) {
+ printHelp("Named argument provided: $flag")
+ }
+ val flagName = flag.substring(2)
+ if (flagName.startsWith("no-")) {
+ val boolFlag = flags[flagName.substring(3)] as? BooleanFlag
+ boolFlag ?: printHelp("Unknown flag $flag")
+ boolFlag.set = false
+ } else {
+ val flagObject = flags[flagName]
+ when (flagObject) {
+ is BooleanFlag -> flagObject.set = true
+ is StringFlag -> {
+ i++
+ if(i !in args.indices) { printHelp("No argument provided for flag $flag") }
+ flagObject.value = args[i]
+ }
+
+ null -> printHelp("Unknown flag $flag")
+ }
+ }
+
+ i++
+ }
+ }
+
+ fun printHelp(errorMessage: String?): Nothing {
+ var help = "\n\n"
+ if (errorMessage != null) {
+ help += "ERROR: $errorMessage\n\n"
+ }
+ help += "Available flags:\n"
+ flags.forEach { (name, flag) ->
+ help += when (flag) {
+ is BooleanFlag -> " --$name, --no-$name\n"
+ is StringFlag -> " --$name <value>\n"
+ }
+ }
+ error(help)
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/at/hannibal2/skyhanni/changelog/CheckSpecificPR.kt b/src/main/kotlin/at/hannibal2/skyhanni/changelog/CheckSpecificPR.kt
new file mode 100644
index 0000000..5a7ca3c
--- /dev/null
+++ b/src/main/kotlin/at/hannibal2/skyhanni/changelog/CheckSpecificPR.kt
@@ -0,0 +1,13 @@
+package at.hannibal2.skyhanni.changelog
+
+object CheckSpecificPR {
+ @JvmStatic
+ fun main(args: Array<String>) {
+ val arguments = Arguments()
+ val prNumArg = arguments.string("pr-num")
+ arguments.parseFlags(args)
+ val prNum = prNumArg.value?.toIntOrNull() ?: arguments.printHelp("--pr-num is required")
+ println("Investigating PR: $prNum")
+ // TODO: actually test specific PR
+ }
+} \ No newline at end of file