🖇️

kscriptをひとつまみ

に公開

はじめに

kscriptを使ってみよ!
と意気込んでとりかかってみたものの、参考となる情報がめちゃくちゃ少ない、、、

頼れるものは公式のGithubくらいなもので、だいぶ時間がかかったような気がします。
そこで、実際に使ってみた感じの備忘録的な意味を込めてzennを書いていきます。

そも、kscriptって?

Enhanced scripting support for Kotlin on *nix-based and Windows systems.
Kotlin has some built-in support for scripting already, but it is not yet feature-rich enough to be a viable alternative in the shell.
-翻訳
*nix ベースのシステムおよび Windows システム上で Kotlin のスクリプトサポートを強化します。
Kotlin にはすでにスクリプト機能がいくつか組み込まれていますが、シェルでの実行可能な代替手段となるには、まだ機能が豊富ではありません。

LinuxWindowsのコマンドライン上でKotlinScriptを実行するためのコマンドラインツールです!

インストール

https://github.com/kscripting/kscript?tab=readme-ov-file#installation

以下のコマンドで導入しました。
AndroidStudioのコンソールで実行しています。

curl -s "https://get.sdkman.io" | bash     # install sdkman
source "$HOME/.sdkman/bin/sdkman-init.sh"  # add sdkman to PATH

sdk install kotlin                         # install Kotlin
sdk install kscript                        # install kscript

kscript --help                             # install check

サンプルコード

適当なサンプルコードをひとつまみ
#!/usr/bin/env kscriptKotlinScriptファイル内の先頭に必ずつけてください。
@file:DependsOnで依存関係を追加します。
@file:Importで指定するパスは相対パスになるので、慣れていないと苦戦するかもです、、、!

kscript/sample.kts
#!/usr/bin/env kscript

@file:DependsOn("org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.24")

@file:Import("./print1.kt")
@file:Import("./print2.kt")

print1()
print2()

KotlinScriptではKotlinコードの実行や、kotlinファイルの呼び出しができます。
また、KotlinScriptからKotlinScriptを実行することもまたできます。

kscript/print1.kt
println("I'm print1")
kscript/print2.kt
println("I'm print2")

実行します。
AndroidStudioFirebaseEmulatorをうまく利用して、それっぽいテストで使ったりもできます。

terminal
firebase emulators:start --import firebase_data/data_init --export-on-exit
env FIRESTORE_EMULATOR_HOST=localhost:8080 GCLOUD_PROJECT="sample-project" kscript kscript/sample.kts
実行結果
I'm print1
I'm print2

参考

https://github.com/kscripting/kscript

https://github.com/kscripting/kscript/issues/421

GRAND, inc. Engineers

Discussion