diff --git a/Readme.md b/Readme.md index 02c20de..b463f9b 100644 --- a/Readme.md +++ b/Readme.md @@ -1,3 +1,72 @@ # Kommand -A description will be provided. \ No newline at end of file +Kommand is a lightweight, declarative command framework written in Kotlin. You can declare command models vie annotations. +The commands will be executed through reflections. + +## Example + +Here is an example of a command model. +```kotlin +package de.tammo.kommand.test + +import de.tammo.kommand.annotation.Model +import de.tammo.kommand.annotation.Parameter +import de.tammo.kommand.annotation.Parameters +import de.tammo.kommand.annotation.Route + +@Model("test", ["alias"], [SubTestCommand::class]) +class TestCommand { + + @Route(description = "Default route of the test command") + fun default() = true + + @Route("parameter", "Route with parameters") + @Parameters([ + Parameter("test", String::class), + Parameter("optional", String::class, optional = true) + ]) + fun parameter(test: String, optional: String?) = true + +} +``` + +And this is how you register and execute them: +```kotlin +package de.tammo.kommand.test.executor + +import de.tammo.kommand.executor.CommandExecutor +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.BeforeAll +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.TestInstance + +class CommandExecutorTest { + + fun composeCommand() = CommandExecutor.INSTANCE.register(listOf(TestCommand::class.java)) + + fun execute() = CommandExecutor.INSTANCE.execute("test") + +} +``` + +Look in the unit tests to see more examples. + +## Build with Gradle + +You have to add the `jitpack` repository: + +```groovy +repository { + maven { + url 'https://jitpack.io' + } +} +``` + +Add the dependency: + +```groovy +dependencies { + implementation("com.github.Tammo0987:Kommand:Version") +} +``` \ No newline at end of file