[# CLI を書いてみる
kotlin 公式が出している kotlinx.cli がありましたが、今はもうメンテナンスされていません。
clikt を使うことにします。 clikt はサブコマンドにも対応しており、機能的には十分と思います。
設定
build.gradle.kts
に以下のように追記します。
kotlin
plugins {
kotlin("multiplatform") version "2.0.21"
}
kotlin {
macosX64 {
binaries {
executable()
}
}
macosArm64 {
binaries {
executable()
}
}
linuxX64 {
binaries {
executable()
}
}
sourceSets {
commonMain {
dependencies {
implementation("com.github.ajalt.clikt:clikt:4.4.0")
}
}
}
}
実装
kotlin
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.arguments.argument
import com.github.ajalt.clikt.parameters.options.option
class Tool : CliktCommand() {
val opt: String? by option(help = "an option")
val arg: String by argument(help = "an argument")
override fun run() {
println("opt=$opt, arg=$arg")
}
}
fun main(args: Array<String>) {
Tool().main(args)
}
非常に簡単に使えるとともに、一通りのパースができるので機能的には十分と思います。
自動的に --help
オプションも設定されます。
Usage: tool [<options>] <arg>
Options:
--opt=<text> an option
-h, --help Show this message and exit
Arguments:
<arg> an argument