KEMBAR78
用 Kotlin 做自動化工具 | PDF
otlin
—
(Shengyou Fan)
KotlinConf Global Kaohsiung
2020/04/18
—
• Developer Advocate
• Backend Developer
• Open Source Community Organizer
Developer …
—
—
Bash zsh Fish PowerShell
…
—
val x: Int
Kotlin
—
Browser
Kotlin/JS
Server
Kotlin/JVM
iOS
Kotlin/Native
Android
Kotlin/JVM
…
—
Kotlin Scripting Language
+
Kotlin
—
.kt
Kotlin Script
—
.kts
Kotlin Compiler
—
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk install kotlin
$ sdk list kotlin
$ sdk current kotlin
$ sdk use kotlin <version>
$ sdk default kotlin <version>
$ sdk upgrade kotlin
https://sdkman.io/
Kotlin Script
—
$ kotlinc -script [file].kts
Kotlin Script
—
$ chmod +x [file].kts
$ ./[file].kts
// [file].kts
#!/usr/bin/env kotlinc -script
// ...
N
—
$ find /path/to/directory/ -mindepth 1 -mtime +5 -delete
$ find /root/Maildir/ -mindepth 1 -type f -mtime +14 | xargs rm
$ find /path/to -type f -mtime +5 -exec rm {} ;
$ find /path/to/files* -mtime +5 -delete
$ find . -mtime +3 -type f -not -name '*pid*' |xargs rm -rf
—
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
$ curl -O https://...
tsv
—
$ awk '{sub(/[ t]*$/, "");print}' [file].tsv
$ awk '{print $10, $1, $12}' [file].tsv
$ awk '{print $1, $2, "F11-"$7}' [file].tsv
$ awk '!($3="")' [file].tsv
Kotlin Script - kscript
—
kscript
—
https://sdkman.io/
$ sdk install kscript
kscript
—
$ kotlinc -script [file].kts
$ kscript [file].kts
kscript
—
// [file].kts
#!/usr/bin/env kotlinc -script
#!/usr/bin/env kscript
// ...$ chmod +x [file].kts
$ ./[file].kts
jar
—
$ time kotlinc -script [file].kts
real 0m2.419s
user 0m5.563s
sys 0m0.345s
$ time kscript [file].kts
real 0m0.346s
user 0m0.346s
sys 0m0.062s
IntelliJ IDEA
—
$ kscript --idea [file].kts
Package
—
@file:DependsOn("com.squareup.okhttp3:okhttp:4.3.1")
@file:DependsOn("com.squareup.moshi:moshi-kotlin:1.9.2")
API
—
@file:DependsOn("com.github.holgerbrandl:kscript-support:1.2.4")
fatjar
—
$ kscript --package [file].kts
—
https://kotlinlang.org/docs/reference/native-overview.html https://www.graalvm.org/
—
https://ajalt.github.io/clikt/
https://dailymotion.github.io/kinta/
Kotlin
—
• Script
• Script
• IDE Script
•
—
https://github.com/shengyou/kotlin-script
GitHub
Kotlin
—
• 2:00
•
•
•
https://bit.ly/kotlinstudygroup
(Shengyou)
shengyou.fan@jetbrains.com
Q&A
—
otlin

用 Kotlin 做自動化工具